<?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/"
	>

<channel>
	<title>いちばんやさしいゲームの作り方 &#187; UNIX</title>
	<atom:link href="http://www.game-create.com/archives/tag/unix/feed" rel="self" type="application/rss+xml" />
	<link>http://www.game-create.com</link>
	<description>文系の人でも、数理学がわからない人でもゲームプログラミングをマスターできるブログ</description>
	<lastBuildDate>Tue, 08 Jun 2010 01:28:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>grep 待ちです</title>
		<link>http://www.game-create.com/archives/3330</link>
		<comments>http://www.game-create.com/archives/3330#comments</comments>
		<pubDate>Sat, 15 May 2010 08:04:39 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[日記]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[仕事]]></category>
		<category><![CDATA[月月火水木金金]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=3330</guid>
		<description><![CDATA[grep の結果を待つ土曜日の午後。お仕事です。

grep -nr keyword *
…とかやると内容によっては時間がかかるのは当たり前なんですが、１階層下の *.txt だけを対象にしたい場合は次のように書けるみた [...]]]></description>
			<content:encoded><![CDATA[<p>grep の結果を待つ土曜日の午後。お仕事です。</p>
<p><span id="more-3330"></span></p>
<div class="hl-surround" style="height:16.8px;"><div class="hl-main"><pre>grep -nr keyword *</pre></div></div>
<p>…とかやると内容によっては時間がかかるのは当たり前なんですが、１階層下の *.txt だけを対象にしたい場合は次のように書けるみたいです。</p>
<div class="hl-surround" style="height:16.8px;"><div class="hl-main"><pre>grep -nr keyword */*.txt</pre></div></div>
<p>知りませんでした。いつもだったら find と併用してしまうところです。ただ、ワイルドカードの展開はシェルの機能だったような気がしますので、リストが多くなりすぎると grep でエラーになっちゃうかもしれません。</p>
<p>今週は五月雨式に仕事が降ってきたので密度はそんなでもなかったのですが、おかげで土日が無くなりました。平日は死ぬほど忙しくても土日があるのとどっちが幸せかは人それぞれかもしれませんね（自分は後者が良いです）。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/3330/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>コマンドラインから文字列の sha1, md5 ダイジェストを算出する</title>
		<link>http://www.game-create.com/archives/3100</link>
		<comments>http://www.game-create.com/archives/3100#comments</comments>
		<pubDate>Thu, 01 Apr 2010 14:22:38 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[コンピュータ]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OpenSSL]]></category>
		<category><![CDATA[TIPS]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[コマンド]]></category>
		<category><![CDATA[仕事]]></category>
		<category><![CDATA[文字列]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=3100</guid>
		<description><![CDATA[コマンドラインから文字列の sha1, md5 ダイジェストを算出するためには echo と openssl をあわせて実行します。

たとえば、 byerkut の sha1 と md5 を求めたい場合は次のようにでき [...]]]></description>
			<content:encoded><![CDATA[<p>コマンドラインから文字列の sha1, md5 ダイジェストを算出するためには echo と openssl をあわせて実行します。</p>
<p><span id="more-3100"></span></p>
<p>たとえば、 byerkut の sha1 と md5 を求めたい場合は次のようにできます。</p>
<div class="hl-surround" ><div class="hl-main"><pre># sha1
echo -n byerkut|openssl sha1

# md5
echo -n byerkut|openssl md5</pre></div></div>
<p>echo に -n をつけないと改行を含めてダイジェストを作ってしまうので注意が必要です。</p>
<p>ファイルパスを求めるためにダイジェストが必要な方は覚えていて損はないかと思います。たぶん、このブログの読者の方の中で２人くらいは必要性を感じていただける方がいらっしゃるかと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/3100/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ネットワークゲームを作るためにはサーバ側のプログラミングやミドルウェアも勉強しないと…</title>
		<link>http://www.game-create.com/archives/3012</link>
		<comments>http://www.game-create.com/archives/3012#comments</comments>
		<pubDate>Wed, 10 Mar 2010 13:27:45 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ウェブログ]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MMORPG]]></category>
		<category><![CDATA[Software Design]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[USB メモリー]]></category>
		<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[雑誌]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=3012</guid>
		<description><![CDATA[…というわけで、我々の業界ではおなじみの技術情報雑誌 Software Design が総集編で登場です。


「ゲームプログラムに関係あるだろうか？」と言われると疑問符がつきますが、ここのところ、ネットワークを駆使した [...]]]></description>
			<content:encoded><![CDATA[<p>…というわけで、我々の業界ではおなじみの技術情報雑誌 Software Design が総集編で登場です。</p>
<p><span id="more-3012"></span></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=game-create-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4774141682" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" class="left"></iframe></p>
<p>「ゲームプログラムに関係あるだろうか？」と言われると疑問符がつきますが、ここのところ、ネットワークを駆使したゲームを作りたい方が多くいらっしゃいまして（そういうお問い合わせが多いです）、そういった方々はいずれ通る道です。 MMORPG みたいなのを作りたいなら誰かがこういうのに詳しくないとね、って感じなのです。</p>
<p>それにしても 10 年分のボリュームはすごかです。価格も安いですし、持ってて損はないのではないでしょうか。自分は書店で見つけて即買いでした。付録（今回はこっちがメインですが）の DVD データも USB メモリにも入るサイズですので持ち歩いて移動中に読んでます。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/3012/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>テキストベースの設定ファイルのバージョンを履歴する</title>
		<link>http://www.game-create.com/archives/2102</link>
		<comments>http://www.game-create.com/archives/2102#comments</comments>
		<pubDate>Sat, 22 Aug 2009 18:24:07 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[コンピュータ]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[RCS]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[コマンド]]></category>
		<category><![CDATA[備忘録]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=2102</guid>
		<description><![CDATA[Linux などのサーバ管理ではテキストベースの設定ファイルを編集することがよくありますが、このテキストの変更履歴などを管理する際に便利なのが Subversion 、…ではなく RCS です。

Subversion  [...]]]></description>
			<content:encoded><![CDATA[<p>Linux などのサーバ管理ではテキストベースの設定ファイルを編集することがよくありますが、このテキストの変更履歴などを管理する際に便利なのが Subversion 、…ではなく RCS です。</p>
<p><span id="more-2102"></span></p>
<p>Subversion を使っても良いのですが、それには及ばないライトな用途にこのコマンドをよく使います。ひとりしか使わない、参照しない、管理データを集中的に配置する必要ない（隣にあればいい）場合など。</p>
<p>編集を開始するときはチェックアウト、編集を終了しバージョンを進めるときはチェックインです。 Subversion や CVS にあるような差分を見る rcsdiff やログを見る rcs2log コマンドなども見逃せません。</p>
<div class="hl-surround" ><div class="hl-main"><pre>// チェックアウト
co -l text_base_setting_file

// チェックイン
ci -u text_base_setting_file</pre></div></div>
<p>バージョン管理対象のファイルと同じディレクトリに RCS ディレクトリがあると、バージョン管理情報がそこに配置されるようになります。 RCS ディレクトリがない場合は、バージョン管理対象のファイル名の後ろに ,v が付与されたファイルができます。</p>
<p>ゲーム開発サーバ管理で UNIX/Linux コマンド再入門です。備忘録。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/2102/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ファイルの更新日時を現在の時刻にする</title>
		<link>http://www.game-create.com/archives/1109</link>
		<comments>http://www.game-create.com/archives/1109#comments</comments>
		<pubDate>Mon, 22 Dec 2008 17:15:15 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[Cygwin]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[touch]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[コマンド]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=1109</guid>
		<description><![CDATA[ファイルの更新日時を現在の時刻にするためには touch コマンドを使います。

touch コマンドに実在するファイルへのパスを渡すと、そのファイルの更新日時を現在の時刻に更新することができます。
# hoge.cpp [...]]]></description>
			<content:encoded><![CDATA[<p>ファイルの更新日時を現在の時刻にするためには touch コマンドを使います。</p>
<p><span id="more-1109"></span></p>
<p>touch コマンドに実在するファイルへのパスを渡すと、そのファイルの更新日時を現在の時刻に更新することができます。</p>
<div class="hl-surround" ><div class="hl-main"><pre># hoge.cpp の更新日時を現在の時刻にする
touch hoge.cpp</pre></div></div>
<p>これが何の役に立つのかというと、たとえば make を使っているときに、なんらかの不具合で依存関係の検証を省略されてしまった場合、強制的にファイルをビルド対象にすることができるようになります。</p>
<p>今までファイルを更新扱いにするために、一度ファイルを開いて編集して、元に戻して保存して、という手順を踏んでいた方はぜひともこのコマンドを検討ください。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/1109/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>とんでもなく手軽にファイルを作る</title>
		<link>http://www.game-create.com/archives/1107</link>
		<comments>http://www.game-create.com/archives/1107#comments</comments>
		<pubDate>Sun, 21 Dec 2008 16:57:10 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[Cygwin]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[touch]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[コマンド]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=1107</guid>
		<description><![CDATA[とんでもなく手軽にファイルを作るためには touch コマンドを使います。

touch コマンドにファイル名を渡すことで、その名前のファイルを作ることができます。
# index.html を作る
touch ind [...]]]></description>
			<content:encoded><![CDATA[<p>とんでもなく手軽にファイルを作るためには touch コマンドを使います。</p>
<p><span id="more-1107"></span></p>
<p>touch コマンドにファイル名を渡すことで、その名前のファイルを作ることができます。</p>
<div class="hl-surround" ><div class="hl-main"><pre># index.html を作る
touch index.html</pre></div></div>
<p>果たしてこれが何の役に立つのでしょうか？かなり不思議かと思います。しかし、これが役に立つときがあるのです。続報をお待ちください。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/1107/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>grep の検索結果から不要な行を削除する</title>
		<link>http://www.game-create.com/archives/1103</link>
		<comments>http://www.game-create.com/archives/1103#comments</comments>
		<pubDate>Sat, 20 Dec 2008 16:44:45 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Cygwin]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[コマンド]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=1103</guid>
		<description><![CDATA[grep の検索結果から不要な行を削除するためには grep をさらに grep します。

grep はパターンにマッチするファイルすべてから指定したキーワードを検索する便利なコマンドですが、場合によっては検索結果が多 [...]]]></description>
			<content:encoded><![CDATA[<p>grep の検索結果から不要な行を削除するためには grep をさらに grep します。</p>
<p><span id="more-1103"></span></p>
<p>grep はパターンにマッチするファイルすべてから指定したキーワードを検索する便利なコマンドですが、場合によっては検索結果が多くなってしまい、不要な行のせいで目的の情報にたどり着きにくいことがあります。</p>
<p>たとえば、オープンソースのプログラムを解析するときなどに grep コマンドを実行すると、見たくもないテストケースなどもヒットしてしまうことがよくあります。こういう場合は grep に -v オプションを指定して、 grep の検索結果から不要な行を削除する方法が有効です。</p>
<div class="hl-surround" ><div class="hl-main"><pre># すべてのファイルから keyword という文字列を探します
# ただし、 tests を含む検索結果は除きます
grep -nir keyword *|grep -v tests</pre></div></div>
<p>grep -v は除外したいキーワードの数だけ足すことができますので、検索結果をどんどん絞り込むことができます。ぜひとも有効活用してください。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/1103/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>自分の求めるパターンのファイルに対して grep を実行する</title>
		<link>http://www.game-create.com/archives/1100</link>
		<comments>http://www.game-create.com/archives/1100#comments</comments>
		<pubDate>Fri, 19 Dec 2008 15:58:48 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Cygwin]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[コマンド]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=1100</guid>
		<description><![CDATA[自分の求めるパターンのファイルに対して grep を実行するためには grep と find を組み合わせます。

たとえば、特定のディレクトリ以下にあるすべての *.html ファイルに対して grep による検索をか [...]]]></description>
			<content:encoded><![CDATA[<p>自分の求めるパターンのファイルに対して grep を実行するためには grep と find を組み合わせます。</p>
<p><span id="more-1100"></span></p>
<p>たとえば、特定のディレクトリ以下にあるすべての *.html ファイルに対して grep による検索をかけたいとして、次のようにコマンドを打ったとします。</p>
<div class="hl-surround" style="height:16.8px;"><div class="hl-main"><pre>grep -nir keyword *.html</pre></div></div>
<p>grep で再帰検索をするために -r オプションをつけている点に注目してください。一見、これで目的は達成できそうな気がするのですが、実は高い確率でうまくいきません。なぜ、うまくいかないのかというと、実は grep コマンドは再帰的に潜るディレクトリを *.html というパターンによって振り分けてしまうのです。</p>
<p>つまり、次のような結果になります。</p>
<div class="hl-surround" ><div class="hl-main"><pre>./image.gif                   # 検索されません、 *.html にマッチしません
./index.html                  # 検索されます
./sample.html                 # 検索されます
./samples.html/sample00.html  # 検索されます
./samples.html/sample01.html  # 検索されます
./samples.html/sample02.html  # 検索されます
./samples.html/sample03.html  # 検索されます
./files/file00.html           # 検索されません、 files が *.html にマッチしません
./files/file01.html           # 検索されません、 files が *.html にマッチしません
./files/file02.html           # 検索されません、 files が *.html にマッチしません
./files/file03.html           # 検索されません、 files が *.html にマッチしません</pre></div></div>
<p>わかりますでしょうか？つまり、 grep は入るディレクトリを判定する際にも *.html で考えてしまうのです。これは多くの場合、意図する結果ではないはずです。</p>
<p>では、単純に grep -nir keyword * とすれば問題はないのでしょうか？たしかにそれもひとつの答えです。ですが、もし、検索対象のファイル数が膨大な場合は処理時間がかかります。以前のエントリーでも述べましたが Windows の場合は検索が終わるまで処理が返りません。</p>
<p>こういった場合、実は find コマンドを併用することで解決することが多くあります。</p>
<p>find コマンドは特定のディレクトリ以下にあるファイルをすべてリストアップするコマンドですが、これを grep コマンドに連結するとすっきりと目的を達成することができるようになります。</p>
<div class="hl-surround" style="height:16.8px;"><div class="hl-main"><pre>grep -nir keyword `find ./ -name '*.html'`</pre></div></div>
<p>grep コマンドに本来パターンを指定する部分が `find ./ -name &#8216;*.html&#8217;` となっている点に注目してください。このようにバッククォートでコマンドを囲うと、その結果を外側のプログラムに渡すことができるのです。これが最近のエントリーで語っているコマンドの組み合わせなのです。</p>
<p>ただし、このバッククォートが使えるのは UNIX や Linux に採用されている bash などの高機能シェルでのみです。 Windows の場合は Cygwin をインストールすることで使うことができるようになります。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/1100/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>指定したディレクトリ以下にあるパターンにマッチするファイルとディレクトリをリストアップする</title>
		<link>http://www.game-create.com/archives/1097</link>
		<comments>http://www.game-create.com/archives/1097#comments</comments>
		<pubDate>Thu, 18 Dec 2008 15:54:00 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[Cygwin]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[コマンド]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=1097</guid>
		<description><![CDATA[指定したディレクトリ以下にあるパターンにマッチするファイルとディレクトリをリストアップするためには -name オプションを渡します。

何も指定しないで find コマンドを実行すると、すべてのファイルとディレクトリが [...]]]></description>
			<content:encoded><![CDATA[<p>指定したディレクトリ以下にあるパターンにマッチするファイルとディレクトリをリストアップするためには -name オプションを渡します。</p>
<p><span id="more-1097"></span></p>
<p>何も指定しないで find コマンドを実行すると、すべてのファイルとディレクトリが対象になりますが、 -name オプションを渡すことでパターンにマッチするファイルとディレクトリのみを結果とすることができるようになります。</p>
<div class="hl-surround" ><div class="hl-main"><pre># すべてのファイルとディレクトリを対象とする
find ./

# *.html ファイルのみを対象とする
find ./ -name '*.html'</pre></div></div>
<p>これはちょっと便利そうですが、まだ優位性は見えませんよね。 UNIX や Linux のコマンドは組み合わせることで威力を発揮します。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/1097/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>指定したディレクトリ以下にあるディレクトリのみをリストアップする</title>
		<link>http://www.game-create.com/archives/1095</link>
		<comments>http://www.game-create.com/archives/1095#comments</comments>
		<pubDate>Wed, 17 Dec 2008 15:51:24 +0000</pubDate>
		<dc:creator>Byerkut</dc:creator>
				<category><![CDATA[ゲームプログラミング]]></category>
		<category><![CDATA[Cygwin]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[コマンド]]></category>

		<guid isPermaLink="false">http://www.game-create.com/?p=1095</guid>
		<description><![CDATA[指定したディレクトリ以下にあるディレクトリのみをリストアップするためには find コマンドに -type d オプションを渡します。

何も指定しないで find コマンドを実行すると、結果にはファイルとディレクトリの [...]]]></description>
			<content:encoded><![CDATA[<p>指定したディレクトリ以下にあるディレクトリのみをリストアップするためには find コマンドに -type d オプションを渡します。</p>
<p><span id="more-1095"></span></p>
<p>何も指定しないで find コマンドを実行すると、結果にはファイルとディレクトリの両方が返りますが、 -type d オプションを指定することで、ディレクトリのみを結果とすることができるようになります。</p>
<div class="hl-surround" ><div class="hl-main"><pre># ファイルとディレクトリの一覧を得る
find ./

# ディレクトリのみの一覧を得る
find ./ -type d</pre></div></div>
<p>これも果たしてどうやって活用すればいいのかわからないかもしれませんが、これも組み合わせです。続報をお待ちください。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.game-create.com/archives/1095/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

