<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>K　blog</title>
    <link rel="alternate" type="text/html" href="http://www.kazu.tv/blog/" />
    <link rel="self" type="application/atom+xml" href="http://www.kazu.tv/blog/atom.xml" />
    <id>tag:www.kazu.tv,2008-06-18:/blog//1</id>
    <updated>2012-02-29T15:10:24Z</updated>
    <subtitle>日本、カナダ、フィリピンと各地を転々としているITエンジニアのblog。技術的な話（ほぼ備忘録）や、海外インターンの話がメイン。</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 4.28-ja</generator>

<entry>
    <title>The Lean Startup</title>
    <link rel="alternate" type="text/html" href="http://www.kazu.tv/blog/archives/001034.html" />
    <id>tag:www.kazu.tv,2012:/blog//1.1034</id>

    <published>2012-02-29T14:39:17Z</published>
    <updated>2012-02-29T15:10:24Z</updated>

    <summary>久しぶりに書評 これ、マーケティングとか起業家とかそういう人だけじゃなくて、新サ...</summary>
    <author>
        <name>kazu</name>
        
    </author>
    
        <category term="本" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="起業" label="起業" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kazu.tv/blog/">
        <![CDATA[<p>久しぶりに書評</p>
<p>これ、マーケティングとか起業家とかそういう人だけじゃなくて、新サービスを立ち上げようとしているエンジニアの人にこそ是非読んで欲しい。</p>
<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=1A1A1A&fc1=FFFFFF&lc1=A5A5FF&t=kblog-22&o=9&p=8&l=as1&m=amazon&f=ifr&ref=qf_sp_asin_til&asins=0307887898" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</p>
<p>スタートアップって、サクセスストーリーの、しかも華やかというか話として面白い部分しか伝わってこないし、アイディア・タイミングとかばっかりに目がいきがちだけど、そうじゃないよってのが痛いほどよく分かる。</p>]]>
        <![CDATA[<p>特に感銘を受けたというか目から鱗が落ちたのはMinimum Viable ProductとValidated Learningという概念、そして指標を取ることは重要だけど、actionable metricsを見ないとダメで、ユーザー数とかの<span class="st">vanity metrics</span>を見てては失敗するってところ。</p><p>それぞれについて簡単に説明すると、</p><ul><li>Minimum Viable Product（<a href="http://en.wikipedia.org/wiki/Minimum_viable_product" target="_blank">wikipedia</a>）： ビジネスモデルの根拠としている仮定を検証するために必要最低限なプロダクト。従来の「プロトタイプ」とは異なる概念</li><li>Validated Learning ： 「失敗から何かを学んだ」というタイプの学びではなく、Validatedな学び。具体的には、計測可能な指標等で顧客の事について学ぶ事って感じ？（ちょっと理解が浅いのでもう一度本を読まないと・・・）</li><li>Actionable Metrics ： 例えば総ユーザー数のような「Vanity Metrics」を見てると、なぜユーザー数が増えているのか増加率が減っているのか、がはっきり分からなく、効果的な施策が打てない。Actionable Metricsとは、その指標を見ることでどうすべきなのかが客観的に判断可能な指標。</li></ul><p>この本、ここ最近では一番インパクトがあった本なので、起業家やスタートアップ企業で働いている人などには是非読んでもらいたい本。</p><p>&nbsp;</p>]]>
    </content>
</entry>

<entry>
    <title>Mac OS X LionでLC_CTYPE: cannot change locale (UTF-8)とか言われる</title>
    <link rel="alternate" type="text/html" href="http://www.kazu.tv/blog/archives/001033.html" />
    <id>tag:www.kazu.tv,2012:/blog//1.1033</id>

    <published>2012-01-25T01:19:23Z</published>
    <updated>2012-02-29T07:54:28Z</updated>

    <summary>Mac OS X Lionにアップグレードしたら、他のホストにSSHでログインした時に bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8) とか怒られるようになったので、その解決策</summary>
    <author>
        <name>kazu</name>
        
    </author>
    
        <category term="Linux, UNIX" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="macosx" label="Mac OS X" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kazu.tv/blog/">
        <![CDATA[<p>今更ながらMac OS X Lionにアップグレードした。</p>
<p>いつも通り仕事用のサーバーにログインしたら以下のようなエラーメッセージが出た。</p>
<pre class="brush: plain; code">
bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)</pre>
<p>LC_TYPEがおかしいらしいので、 一度ログアウトしてMac側のターミナルで以下の通り確認すると、UTF-8という謎の値に設定されている・・・</p>
<pre class="brush: plain;">
$ env | grep LC_TYPE
LC_TYPE=UTF-8</pre>
<p>とりあえずこれを解除すればいいんだけど、どこでやるのが一番いいかなぁと思ってちょっと調べた所こちらの<a target="_blank" href="http://apple.stackexchange.com/questions/21096/where-does-lang-variable-gets-set-in-mac-os-x">ページ</a>が見付かった。</p>
<p>Terminal &gt; Preferences &gt; Settings &gt; [profile] &gt; Advanced &gt; Set locale environment variables on startupのチェックを外したらOKだった。</p>]]>
        
    </content>
</entry>

<entry>
    <title>「すしざんまい」ヒドい</title>
    <link rel="alternate" type="text/html" href="http://www.kazu.tv/blog/archives/001032.html" />
    <id>tag:www.kazu.tv,2012:/blog//1.1032</id>

    <published>2012-01-17T23:58:35Z</published>
    <updated>2012-01-18T00:07:59Z</updated>

    <summary>カナダ時代の友達が日本に来た。1人は1年振り、もう1人は4年振りの日本。ホテルか...</summary>
    <author>
        <name>kazu</name>
        
    </author>
    
        <category term="飲み食い" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="食事" label="食事" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kazu.tv/blog/">
        <![CDATA[<p>カナダ時代の友達が日本に来た。1人は1年振り、もう1人は4年振りの日本。</p><p>ホテルから近いので、夜だったけど築地に行ってみた。まぁそんなに高くなくていいので普通の寿司が食べたいという事なので、ぶらぶら歩いてみて「すしざんまい」に入ろうかと思った。</p><p>以下、店員さんとのやりとり</p><p>自分：「テーブル席空いてますか」<br />道路で客引きをしていた店員A：（トランシーバーで中と話した後）「<strong>テーブル席あります</strong>よ」<br />自分：「じゃ、お願いします」（店に通される）<br />店内の店員B：「こちらにどうぞ」（<strong>順番待ち</strong>の列に案内する）<br />自分：「何分くらい待ちますか？」<br />店員B：「カウンターの席ならすぐご用意できますが」<br />自分：「何分くらい待ちますか？」<br />店員B：「<strong>20分くらい</strong>です」</p><p>当然別の店に行った。観光客相手だとこんな商売でも通用するのかね。もう二度と行かない。</p><p>しかし「すしざんまい」って築地だけで何店舗あるんだろう・・・</p>]]>
        
    </content>
</entry>

<entry>
    <title>Windowsコマンドプロンプトで環境設定用バッチファイルを読み込み</title>
    <link rel="alternate" type="text/html" href="http://www.kazu.tv/blog/archives/001031.html" />
    <id>tag:www.kazu.tv,2011:/blog//1.1031</id>

    <published>2011-06-17T14:57:31Z</published>
    <updated>2011-06-17T15:04:52Z</updated>

    <summary>自分用メモ。 WindowsでUNIX系のコマンドとかツールを使う時って、環境変...</summary>
    <author>
        <name>kazu</name>
        
    </author>
    
        <category term="Windows" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="windows" label="Windows" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kazu.tv/blog/">
        <![CDATA[<p>自分用メモ。</p> <p>WindowsでUNIX系のコマンドとかツールを使う時って、環境変数設定したりPATH通さないといけなかったりするんだけど、それをグローバル環境でやるのは何となく気が引ける。</p> <p>そう言う時、例えば以下のような環境設定用のバッチをまず作る。</p> <pre class="brush: plain; code">
set PATH=%PATH%;C:\Program Files\Java\jdk1.6.0_24\bin</pre> <p>で、コマンドプロンプトのショートカットを適当に作り、「リンク先」を以下のように変更する。env.batは先ほどのファイル。</p> <pre class="brush: plain; code">
%SystemRoot%\system32\cmd.exe /k &quot;C:\Users\kazu\Documents\conf\env.bat&quot;</pre> <p>意外に重宝する。</p>]]>
        
    </content>
</entry>

<entry>
    <title>Amazon EC2のホスト名</title>
    <link rel="alternate" type="text/html" href="http://www.kazu.tv/blog/archives/001030.html" />
    <id>tag:www.kazu.tv,2011:/blog//1.1030</id>

    <published>2011-05-29T13:53:35Z</published>
    <updated>2011-05-29T16:07:31Z</updated>

    <summary>自分用メモ。Amazon EC2だとサーバーを再起動するとIPアドレスが変わる。...</summary>
    <author>
        <name>kazu</name>
        
    </author>
    
        <category term="サーバー関係" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="ec2" label="EC2" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kazu.tv/blog/">
        <![CDATA[<p>自分用メモ。</p><p>Amazon EC2だとサーバーを再起動するとIPアドレスが変わる。ちょっとググっていくつかいい方法を見つけた。</p><ul><li>自動でDNSに登録（<a target="_blank" href="http://www.ducea.com/2009/06/01/howto-update-dns-hostnames-automatically-for-your-amazon-ec2-instances/">これ</a>とか<a target="_blank" href="http://www.slideshare.net/winebarrel/aws-7595339">これ</a>）</li><li>プライベートIPを自動的にhostsに登録（<a target="_blank" href="http://nkjmkzk.net/?p=1919">&rarr;</a>）</li></ul><p>EC2のメタ情報は色々あるみたい（参考<a target="_blank" href="http://d.hatena.ne.jp/rx7/20100605/p1">1</a>）。</p><p>&nbsp;</p>]]>
        
    </content>
</entry>

<entry>
    <title>postfix管理用コマンド</title>
    <link rel="alternate" type="text/html" href="http://www.kazu.tv/blog/archives/001029.html" />
    <id>tag:www.kazu.tv,2011:/blog//1.1029</id>

    <published>2011-05-29T11:48:04Z</published>
    <updated>2011-05-29T11:57:52Z</updated>

    <summary>自分用メモ。postfixの管理系コマンド。 キューの確認  # /usr/sb...</summary>
    <author>
        <name>kazu</name>
        
    </author>
    
        <category term="サーバー関係" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="postfix" label="postfix" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kazu.tv/blog/">
        <![CDATA[<p>自分用メモ。</p><p>postfixの管理系コマンド。</p> <p>キューの確認</p> <pre class="brush: plain; code">
# /usr/sbin/postqueue -p</pre> <p>メールの中身を確認</p> <pre class="brush: plain; code">
# postcat -q [キューID]</pre> <p>キューの削除</p> <pre class="brush: plain; code">
# /usr/sbin/postsuper -d [キュー ID]</pre> <p>&nbsp;</p>]]>
        
    </content>
</entry>

<entry>
    <title>継続(continuations)</title>
    <link rel="alternate" type="text/html" href="http://www.kazu.tv/blog/archives/001028.html" />
    <id>tag:www.kazu.tv,2011:/blog//1.1028</id>

    <published>2011-04-29T15:24:14Z</published>
    <updated>2011-05-06T05:44:39Z</updated>

    <summary>自分用メモ。しばらく前にとある勉強会で「継続」なるものを知った。これを使うと便利...</summary>
    <author>
        <name>kazu</name>
        
    </author>
    
        <category term="プログラム" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="プログラム" label="プログラム" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kazu.tv/blog/">
        <![CDATA[<p>自分用メモ。</p><p>しばらく前にとある勉強会で「継続」なるものを知った。これを使うと便利な場面もあるらしく、コード例を交えつつ説明してくれた。</p><p>しかし、元々知識のない自分にはイマイチピンと来なかった。そんな時に誰かがこのサイトを教えてくれた。分かりやすい。ただし、概念が何となく分かったからって、継続を使ったコードが書ける気はしない。</p><p><a target="_blank" href="http://practical-scheme.net/docs/cont-j.html">なんでも継続</a></p>]]>
        
    </content>
</entry>

<entry>
    <title>Web API検索サイト</title>
    <link rel="alternate" type="text/html" href="http://www.kazu.tv/blog/archives/001027.html" />
    <id>tag:www.kazu.tv,2011:/blog//1.1027</id>

    <published>2011-04-17T14:30:09Z</published>
    <updated>2011-04-17T14:34:13Z</updated>

    <summary>自分用メモ。最近のWebサービスは他のサービスのAPIを色々組み合わせるのは当た...</summary>
    <author>
        <name>kazu</name>
        
    </author>
    
        <category term="開発関係" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="webサービス" label="Webサービス" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kazu.tv/blog/">
        <![CDATA[<p>自分用メモ。</p><p>最近のWebサービスは他のサービスのAPIを色々組み合わせるのは当たり前なんだけど、そうしたAPIを検索できるサイト。知り合いに教えてもらった。</p><p>http://wafl.net/apis/search?category=30</p>]]>
        
    </content>
</entry>

<entry>
    <title>Linuxerの為のFreeBSD入門 jail編（１）</title>
    <link rel="alternate" type="text/html" href="http://www.kazu.tv/blog/archives/001026.html" />
    <id>tag:www.kazu.tv,2011:/blog//1.1026</id>

    <published>2011-04-06T16:17:42Z</published>
    <updated>2011-04-06T16:40:51Z</updated>

    <summary>■背景自分がFreeBSDを使ってみようと思ったのはjailが使いたかったから。...</summary>
    <author>
        <name>kazu</name>
        
    </author>
    
        <category term="Linux, UNIX" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="freebsd" label="FreeBSD" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="jail" label="jail" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kazu.tv/blog/">
        <![CDATA[<h3>■背景</h3><p>自分がFreeBSDを使ってみようと思ったのはjailが使いたかったから。現状では恐らく基本的なことすら分かっていないが、とりあえずjailを勉強してみる。</p><p>FreeBSD jailで検索すると結構情報が出てくるんだけど、結構古い情報が多い。新しめのFreeBSDだとFlavourというのを使うのが一般的らしいので、それを使う。</p><p>環境：FreeBSD 8.1</p>]]>
        <![CDATA[<h3>■ezjailインストール、ソースの取得</h3> <p>まずはezjailのインストール</p> <pre class="brush: plain; code">
$ cd /usr/ports/sysutils/ezjail
$ sudo make install clean</pre> <p>次にjail環境の構築用に（？）ソースツリーの取得</p> <pre class="brush: plain; code">
$ sudo sysinstall</pre> <p>とやって、Configure &rarr; Distribution &rarr; src からソースを全て選択してインストールする。</p> <p>ソースから環境を構築。以前はezjail-admin updateで良かったらしいけど、最近ではオプションをつける必要があるらしい。</p> <pre class="brush: plain; code">
$ sudo ezjail-admin update
Error: No install action has been chosen.
  Please note that ezjails behaviour changed. Rebuilding the world no longer is default.
  Run 'ezjail-admin update -b' to build and install a world from source or 'ezjail-admin update -i' to install an already built world.</pre> <p>ということで、 -b オプションをつけた。</p> <pre class="brush: plain; code">
$ sudo ezjail-admin update -b</pre> <p>あと、jail環境内でportsを使いたい場合は、-pか-Pを使う。詳しい違いはmanを参照のこと。</p> <pre class="brush: plain; code">
$ sudo ezjail-admin update -P</pre> <p>次回はネットワーク設定、起動・終了など</p>]]>
    </content>
</entry>

<entry>
    <title>Linuxerの為のFreeBSD入門（2）</title>
    <link rel="alternate" type="text/html" href="http://www.kazu.tv/blog/archives/001025.html" />
    <id>tag:www.kazu.tv,2011:/blog//1.1025</id>

    <published>2011-03-24T13:37:06Z</published>
    <updated>2011-03-29T14:59:58Z</updated>

    <summary>前回、基本的な設定とかを行ったので、今回は必要なパッケージを入れていく。ちなみに...</summary>
    <author>
        <name>kazu</name>
        
    </author>
    
        <category term="Linux, UNIX" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="freebsd" label="FreeBSD" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kazu.tv/blog/">
        <![CDATA[<p><a href="http://www.kazu.tv/blog/archives/001024.html">前回</a>、基本的な設定とかを行ったので、今回は必要なパッケージを入れていく。</p><p>ちなみに環境はFreeBSD 8.1</p><h3>・emacs</h3><p>/usr/ports/editors/emacs がそれ。ちなみにバージョンは23系。/usr/ports/editorsの下にはemacs22とemacs21というのもあり、古いバージョンを使いたい場合はそちらを使用すると良さそう。</p><p>sudo make installをすると、色々なオプションが選択できるけど、画像表示やらフォントがとかのオプションが多い。SSH経由でしか使わない人は、X関連はオフにしたい。その場合、/etc/make.confに以下の行を追加すればよい。</p><pre class="code">
WITHOUT_X11=yes
</pre>]]>
        <![CDATA[<h3>・Java</h3> <p>Javaは色々選択肢があるらしい。<a href="http://d.hatena.ne.jp/littlebuddha/20090413/1239610630" target="_blank">こちらのページ</a>によると5通りあるそうだ。どこのページだかは忘れたけど、最近はOpenJDKを使うのがお薦めらしいので、とりあえずOpenJDKを入れることにした。</p> <pre class="brush: plain; code">
# cd /usr/ports/java/openjdk6
# make install clean</pre> <p>&nbsp;OpenJDKをインストールしているはずなのに、なぜか以下のようなメッセージが出てDiable JDKのファイルを要求された。あと、タイムゾーンのアップデータ。</p> <pre class="brush: plain; code">
 Because of licensing restrictions, you must fetch the distribution
 manually.

 Please access

     http://www.FreeBSDFoundation.org/cgi-bin/download?download=diablo-caffe-freebsd7-amd64-1.6.0_07-b02.tar.bz2

 with a web browser and &quot;Accept&quot; the End User License Agreement for
 &quot;Caffe Diablo 1.6.0&quot;.

 Please open http://java.sun.com/javase/downloads/index.jsp
 in a web browser and follow the &quot;Download&quot; link for
 &quot;JDK US DST Timezone Update Tool - 1_3_35&quot; to obtain the
 time zone update file, tzupdater-1_3_35-2011b.zip.

 Please place the downloaded file(s) in /usr/ports/distfiles.
</pre> <p>それらをダウンロードして、/usr/ports/distfilesに放り込む。その後もう一度make installをやればOKなのかな。</p><p>でも、java -versionだとDibloって出るな。</p><pre class="brush: plain; code">
# java -version
java version &quot;1.6.0_07&quot;
Diablo Java(TM) SE Runtime Environment (build 1.6.0_07-b02)
Diablo Java HotSpot(TM) 64-Bit Server VM (build 10.0-b23, mixed mode)
</pre><p>徐々に勉強していこう。</p>]]>
    </content>
</entry>

<entry>
    <title>Linuxerの為のFreeBSD入門（１）</title>
    <link rel="alternate" type="text/html" href="http://www.kazu.tv/blog/archives/001024.html" />
    <id>tag:www.kazu.tv,2011:/blog//1.1024</id>

    <published>2011-03-22T17:43:13Z</published>
    <updated>2011-03-23T07:20:11Z</updated>

    <summary>LinuxユーザーがFreeBSDを使ってみた。</summary>
    <author>
        <name>kazu</name>
        
    </author>
    
        <category term="Linux, UNIX" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="freebsd" label="FreeBSD" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kazu.tv/blog/">
        <![CDATA[<p>訳あって、生まれて初めてFreeBSDをちょっと触ってる。</p><p>UNIX系OSはLinux、Solarisあたりはまぁまぁ分かるしそれ以外にもちょこちょこ触ったことはあるけど、一番経験が多いのはLinux（特にRedHat系）なので、他のOSに移ると戸惑うことが多い。</p><p>と言うことで、自分のようなLinuxユーザー向けにFreeBSDの基礎的なことを書く。というか単なるメモ書き。</p><h3>■環境</h3><ul><li>さくらのVPS 512</li><li>FreeBSD 8.1</li></ul>]]>
        <![CDATA[<h3>■インストール</h3> <p>インストールは簡単。<a target="_blank" href="http://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/index.html">FreeBSD ハンドブックの日本語訳</a>に詳しく載ってるし、さくらのVPS固有の話は、さくらのサイトに<a target="_blank" href="http://support.sakura.ad.jp/support/vps/menu_oscustom_freebsd.shtml">ドキュメント</a>があるのでそちらを参照。</p> <h3>■sudo、su</h3> <p>この時点でとりあえずroot以外に一般ユーザーが1人作成されているものとする。通常は一般ユーザーで作業して、必要な時にsudoを使うってのが通常のLinuxerだと思うけど、FreeBSDではsudoは最初からは入っていない。ということで、まずはrootになってsudoをインストール。</p> <pre class="brush: plain; code">
# pkg_add -r sudo</pre> <p>よし。次はvisudoでごにょごにょして、と思ったら、</p> <pre class="brush: plain; code">
# visudo
visudo: Command not found.</pre> <p>パスを確認してみると、ちゃんと通ってるっぽい。</p> <pre class="brush: plain; code">
# env | grep PATH
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin</pre> <p>一回ログアウトしてログインし直したら大丈夫だった。rootのデフォルトシェルはcshなんだけど、PATHにあるコマンド一覧がキャッシュされてるのかな。&rarr; 調べた所キャッシュされてるらしい。ログアウトせず、rehashコマンドでも大丈夫みたい。</p> <p>ちなみにpkg_addコマンドで入れたものは/usr/local以下にインストールされるようだ。</p> <p>suに関してだけど、デフォルトではwheelグループに入っているユーザーしか実行できない。それ以外のユーザーが実行するとSorryとか言われてしまう。</p> <h3>■portsとpackages</h3> <p>次に必要なパッケージを色々と入れておこうと思うけど、その前に一つ。FreeBSDにはportとpackageという2種類のパッケージがあるらしい。無理矢理RedHat系に例えると以下の通り。</p> <ul>     <li>package &rarr; RPMをインストール</li>     <li>port &rarr; SRPMをビルドし、出来上がったRPMをインストール</li> </ul> <p>Gentoo Linuxを触ったことある人なら、portは多分portageみたいなもの（だと思う）って書いた方が分かるか。</p> <p><strong>portのインストール</strong></p> <p>portに関してはOSインストール時にPorts Collectionをインストールするかどうか尋ねられたと思うけど、<a target="_blank" href="http://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/ports-using.html">こちら</a>によるとそれよりはCVSupかPortsnapを使う方がいいらしい。</p> <p>と言うことで、そちらに従う。よく分からないのでCVSupというのにしてみる。</p> <pre class="brush: plain; code">
csup -L 2 -h cvsup5.jp.FreeBSD.org /usr/share/examples/cvsup/ports-supfile</pre> <p>これで準備完了。</p> <p>後は、インストールしたいもののportのディレクトリに移動して、make install （あるいはmake install clean）を実行。</p> <pre class="brush: plain; code">
# cd /usr/ports/shells/zsh
# make install clean</pre> <p><strong>packageのインストール</strong></p> <p>前述の通りpkg_addを使う。</p><h3>■まとめ</h3><p>とりあえず、何とか使えるようになった。今回のまとめはこんなところか。</p><ul><li>Ports CollectionはOSインストール時に入れる必要は無い。</li><li>パッケージのインストールはportかpackageを使う。portの方がオプションを色々選択できる。</li><li>デフォルトではwheelグループに入っていないとsuが使えない。</li></ul>]]>
    </content>
</entry>

<entry>
    <title>RoRでYou are being redirectedと出る</title>
    <link rel="alternate" type="text/html" href="http://www.kazu.tv/blog/archives/001023.html" />
    <id>tag:www.kazu.tv,2011:/blog//1.1023</id>

    <published>2011-03-20T09:13:04Z</published>
    <updated>2011-03-20T09:22:56Z</updated>

    <summary><![CDATA[■現象タイトル通りRuby on Railsで&quot;You are bei...]]></summary>
    <author>
        <name>kazu</name>
        
    </author>
    
        <category term="プログラム" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="rubyonrails" label="Ruby on Rails" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kazu.tv/blog/">
        <![CDATA[<h3>■現象</h3><p>タイトル通りRuby on Railsで&quot;You are being redirected&quot;という画面が表示されるけど、実際には待ってもリダイレクトされないで、そのページのリンクをクリックしないと次のページに遷移しない。</p><p>You are being redirectedで検索するとRoRの特定のバージョンでそういうバグがあったらしいけど、自分の場合は違う。</p><h3>■そもそも何の画面？</h3><p>あまり詳しくは調べてないけど、redirect_toを使うと、HTTPレスポンスのヘッダで301だか302が返されると共に、ボディに前述の内容が含まれてクライアントに返されるらしい。</p><p>何らかの理由で、上手くリダイレクトがされない場合に、上の内容が表示される。</p>]]>
        <![CDATA[<h3>■自分のケースの原因</h3><p>本番環境ではページのキャッシュが有効になってる。</p><p>ログインが必要なページにアクセスした時にログインページにリダイレクト（redirect_to）されて、そのリダイレクト処理自体は成功したんだけど、その際のHTTPの返答がキャッシュされて、ログインしている時にそのページにアクセスしてもリダイレクトの時の内容が表示される。</p><h3>■対処</h3><p>キャッシュを無効にする、キャッシュの設定を変更するなど。</p>]]>
    </content>
</entry>

<entry>
    <title>nginxでWordPressのFancy URL</title>
    <link rel="alternate" type="text/html" href="http://www.kazu.tv/blog/archives/001022.html" />
    <id>tag:www.kazu.tv,2011:/blog//1.1022</id>

    <published>2011-02-26T09:11:26Z</published>
    <updated>2011-02-26T09:53:44Z</updated>

    <summary>最近、仕事と趣味のプロジェクトで立て続けにnginxを使う機会があった。ngin...</summary>
    <author>
        <name>kazu</name>
        
    </author>
    
        <category term="サーバー関係" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="wordpress" label="WordPress" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="nginx" label="nginx" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kazu.tv/blog/">
        <![CDATA[<p>最近、仕事と趣味のプロジェクトで立て続けにnginxを使う機会があった。nginx + PHPについてこないだ<a href="http://www.kazu.tv/blog/archives/001020.html">エントリ</a>を書いたけど、今回はApapcheのmod_rewriteのような機能を使ってWordPressのFancy URLを実現する方法について少し書く。といっても簡単。</p><p>参考にしたのは<a target="_blank" href="http://forum.slicehost.com/comments.php?DiscussionID=2127">ここ</a>（英語）。</p><h3>■やりたい事</h3><p>WordPressは以下のURLでアクセスするものとする。</p><p>http://www.example.com/blog/</p><p>Permalinkは、デフォルトだと以下のURL。</p><p>http://www.example.com/blog/?p=xxx</p><p>これを以下のようにしたい。</p><p>http://www.example.com/blog/index.php/YYYY/MM/entry-name/</p><h3>■WordPressはmod_rewriteの有無を判断</h3><p>ちなみに、Apacheを使っていると、WordPressがmod_rewriteの存在有無をチェックして、上記のURLからindex.phpの部分を除いたURLが選択できるようになってるんだけど、nginx上で動かしている場合はmod_rewriteなしと判断されてしまい、選択できるURLはいずれもindex,phpという文字列が含まれたものになっている。</p><p>もちろん、nginxでもmod_rewrite相当の事が出来るので、選択肢から選ばずに、自分でindex.php無しのURLを指定する事も出来るはず。</p>]]>
        <![CDATA[<h3>■設定</h3> <p>nginx.confの設定は以下の通り。</p> <pre class="brush: plain; code">
        # /blog にアクセスされたら、末尾にスラッシュをつける
        rewrite ^/blog$ /blog/;
        # /blog/ 以下にアクセスされた場合の設定。
        location /blog/ {
            # ※1
            root   /usr/share/nginx/html;
            index  index.html index.htm index.php;

            # リクエストされたファイルが存在しない場合（※2）
            if (!-e $request_filename) {
                rewrite ^/blog/(.*)$ /blog/index.php?q=$1 last;
            }
        }
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html/$fastcgi_script_name;
            include        fastcgi_params;
        }
</pre> <p>※1 WordPressのファイルは実際には /usr/share/nginx/html/blog 以下に存在するが、root はあくまで/usr/share/nginx/html と指定する。</p><p>※2 例えば、/blog/index.php/YYYY/MM/entry-name/ というURLにアクセスされた場合、/usr/share/nginx/html/blog/index.php/YYYY/MM/entry-name/ というファイルを探しに行くが、存在しないのでこのルールが適用される。</p>]]>
    </content>
</entry>

<entry>
    <title>RubyでTwitter APIを使う</title>
    <link rel="alternate" type="text/html" href="http://www.kazu.tv/blog/archives/001021.html" />
    <id>tag:www.kazu.tv,2011:/blog//1.1021</id>

    <published>2011-02-26T06:30:41Z</published>
    <updated>2011-02-26T07:12:48Z</updated>

    <summary>RubyのTwitter関連ライブラリには色々あるみたいだけど、Twitter4...</summary>
    <author>
        <name>kazu</name>
        
    </author>
    
        <category term="プログラム" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="ruby" label="Ruby" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kazu.tv/blog/">
        <![CDATA[<p>RubyのTwitter関連ライブラリには色々あるみたいだけど、<a href="http://twitter4r.rubyforge.org/" target="_blank">Twitter4R</a>を使った。</p><h3>■バージョン</h3><p>先ほどのページを見ると0.3.0が最新のように見えるが、良く読むと「最新版はダウンロードサイトをチェックしてくれ」みたいに書いてある。ちなみに、<a href="http://rubyforge.org/frs/?group_id=3293" target="_blank">ダウンロードサイト</a>をみると 0.5.3 が最新版のようにも見えるが、gem installしてみたら0.6.0がインストールされた。</p><h3>■前提知識</h3><p>Twitter API、OAuthについての基礎知識はあるものとする。特にClientとBrowserの違いが分かってないと混乱するかも。</p><p>今回はClient形式のアプリを作るものとする。まぁボットみたいなものを想像してもらえばいいかと。</p><p>ちなみに、&quot;Twitter4R&quot;で検索して出てくるページは結構パスワード認証を使ってるけど、今はパスワード認証は廃止になっていて、APIにアクセスするのにはOAuthを使う必要があるので注意。</p>]]>
        <![CDATA[<h3>■使い方</h3> <p>事前にTwitterの開発者向けサイトでアプリケーションを登録し、以下の4つを確認しておく</p> <ul>     <li>Consumer key</li>     <li>Consumer secret</li>     <li>Access token</li>     <li>Access secret</li> </ul> <p>以下、コード。</p> <pre class="brush: ruby; code">
# 初期化
Twitter::Client.configure do |c|
  c.oauth_consumer_token = &quot;consumer key&quot;
  c.oauth_consumer_secret = &quot;consumer secret&quot;
end

# access tokenとaccess secretを渡して、クライアントを初期化
client = Twitter::Client.new(:oauth_access =&gt; {
                             :key    =&gt; &quot;access token&quot;,
                             :secret =&gt; &quot;access secret&quot; } )

# 後はAPIにアクセスするだけ。
# 例えばつぶやくには以下のようにやる。
client.status(:post, &quot;Hello World!&quot;)
</pre> <p>Twitter4Rは割とシンプルなライブラリだけど、ドキュメントはあまりないみたいなので、詳しくは<a href="http://twitter4r.rubyforge.org/rdoc/" target="_blank">RDoc</a>を参照。</p>]]>
    </content>
</entry>

<entry>
    <title>nginx + PHP</title>
    <link rel="alternate" type="text/html" href="http://www.kazu.tv/blog/archives/001020.html" />
    <id>tag:www.kazu.tv,2011:/blog//1.1020</id>

    <published>2011-02-21T03:19:03Z</published>
    <updated>2011-02-26T09:14:22Z</updated>

    <summary>こないだ、nginx + unicornについてのエントリを書いた。これでRub...</summary>
    <author>
        <name>kazu</name>
        
    </author>
    
        <category term="サーバー関係" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="php" label="PHP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="nginx" label="nginx" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kazu.tv/blog/">
        <![CDATA[<p>こないだ、nginx + unicornについての<a href="http://www.kazu.tv/blog/archives/001015.html">エントリ</a>を書いた。これでRuby on Railsが動く環境は整った。</p><p>同じサーバーでblogも動かしたいという要望があったため、WordPressが動くようにPHPの環境も整える事にした。</p><h3>■環境</h3><p>CentOS 5.0 （諸事情により）</p>]]>
        <![CDATA[<h3>■spawn-fcgiのインストール、設定</h3><p>yumでspawn-fcgiをインストール。</p> <pre class="brush: plain; code">
$ sudo yum install spawn-fcgi</pre> <p>spawn-fcgiパッケージに含まれるファイルを確認してみる。</p> <pre class="brush:plain; code">
$ rpm -ql spawn-fcgi
/etc/init.d/spawn-fcgi
/etc/sysconfig/spawn-fcgi
/usr/bin/spawn-fcgi
/usr/share/doc/spawn-fcgi-1.6.3
/usr/share/doc/spawn-fcgi-1.6.3/AUTHORS
/usr/share/doc/spawn-fcgi-1.6.3/COPYING
/usr/share/doc/spawn-fcgi-1.6.3/NEWS
/usr/share/doc/spawn-fcgi-1.6.3/README
/usr/share/man/man1/spawn-fcgi.1.gz</pre> <p>/etc/sysconfig/spawn-fcgiの設定を以下のように書き換えた。</p> <pre class="brush:plain; code">
OPTIONS=&quot;-u nginx -g apapche -a 127.0.0.1 -p 9000 -C 16 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/bin/php-cgi&quot;</pre> <p>/etc/init.d/spawn-fcgiを起動すれば、php-cgiがポート9000でリッスンし始めるはず。</p><p>グループをnginxではなくapacheにしている理由は、PHPのセッション情報を格納するディレクトリ /var/lib/php/session に書き込むため。ディレクトリの権限を変更してもOK。</p> <h3>■nginxの設定</h3> <p>後は、nginxの設定で、～.php ファイルへのリクエストをphp-cgiへ渡せばよい。</p> <pre class="brush:plain; code">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; location ~ \.php$ {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_pass&nbsp;&nbsp; 127.0.0.1:9000;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_index&nbsp; index.php;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_param&nbsp; SCRIPT_FILENAME&nbsp; /var/www/html/$fastcgi_script_name;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fastcgi_params;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</pre> <h3>■参考</h3><p>参考にしたのは<a target="_blank" href="http://www.cyberciti.biz/faq/rhel-fedora-install-configure-nginx-php5/">こっちのサイト</a>。このサイトでは419.shと言う名前のシェルスクリプトを使ってて自分も最初それに従ったんだけど、その後、上述の通りspawn-fcgiに同様のスクリプトが存在する事に気づいて、そっちを使うようにした。</p>]]>
    </content>
</entry>

</feed>

