<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>omnioo</title>
    <link rel="alternate" type="text/html" href="http://www.omnioo.com/" />
    <link rel="self" type="application/atom+xml" href="http://www.omnioo.com/atom.xml" />
    <id>tag:www.omnioo.com,2009-12-16://32</id>
    <updated>2011-12-13T13:46:26Z</updated>
    <subtitle>オムニオ</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 5.03</generator>

<entry>
    <title>実は - omnioo lab.</title>
    <link rel="alternate" type="text/html" href="http://www.omnioo.com/omnioolab/news/post-122.php" />
    <id>tag:omnioo.com,2011:/omnioolab//31.1323</id>

    <published>2011-12-13T13:43:34Z</published>
    <updated>2011-12-13T13:46:26Z</updated>

    <summary>実は新サーバーに移しました。 ...</summary>
    <author>
        <name>omnioo</name>
        
    </author>
    
        <category term="開発メモ&amp;NEWS" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.omnioo.com/omnioolab/">
        実は新サーバーに移しました。 
        
    </content>
</entry>

<entry>
    <title>Apache2のユーザーディレクトリの設定　Ubuntu/Debian - omnioo lab.</title>
    <link rel="alternate" type="text/html" href="http://www.omnioo.com/omnioolab/ubuntu-910/server/apache2ubuntudebian-1.php" />
    <id>tag:omnioo.com,2011:/omnioolab//31.1322</id>

    <published>2011-12-11T15:04:24Z</published>
    <updated>2011-12-11T15:44:10Z</updated>

    <summary>メインのドメインexample.comがあって、examp.com/~userみ...</summary>
    <author>
        <name>omnioo</name>
        
    </author>
    
        <category term="Server" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Web Server" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.omnioo.com/omnioolab/">
        <![CDATA[メインのドメインexample.comがあって、examp.com/~userみたいな接続の方法というのを昔はよく見かけましたが、こういう設定は今でも勿論できます。あんまりサイト運営に関してはもうすでに意味のない感じですが、一応設定していると便利は便利です。オリジナルドメインとかのDNSの設定不備とかそういうので、一時的にアクセスできなくなった時は、こっちの設定が安定しています。<br /><blockquote>/etc/apache2/mods-available/userdir.conf <br /></blockquote>を編集します。<br /><br /><blockquote>&lt;IfModule mod_userdir.c&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UserDir www<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UserDir disabled root<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Directory /home/*/www&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AllowOverride FileInfo AuthConfig Limit Indexes<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Options MultiViews SymLinksIfOwnerMatch IncludesNoExec ExecCGI<br />　　　　// Indexesを削除、ExecCGIを追加<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Limit GET POST OPTIONS&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Order allow,deny<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Allow from all<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Limit&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;LimitExcept GET POST OPTIONS&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Order deny,allow<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Deny from all<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/LimitExcept&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Directory&gt;<br />&lt;/IfModule&gt;<br /></blockquote>と編集して、このモジュールを有効化します。<br /><blockquote>a2enmod userdir<br />/etc/init.d/apache2 restart<br /></blockquote>で有効になります。<br /><br />デフォルトではpublic_htmlになっているのでご注意。私は今流行りのwwwディレクトリに設定してみました。この場合は勿論/etc/skel/wwwを設定しておきます。ユーザー作成（adduser）の際に自動的にコピーしてくれます。<br /> ]]>
        
    </content>
</entry>

<entry>
    <title>慕わない方がいい危険人物キーワード - omnioo lab.</title>
    <link rel="alternate" type="text/html" href="http://www.omnioo.com/omnioolab/cat391/post-121.php" />
    <id>tag:omnioo.com,2011:/omnioolab//31.1321</id>

    <published>2011-12-11T13:45:10Z</published>
    <updated>2011-12-11T13:51:14Z</updated>

    <summary>「自分で調べろ」「俺は教えた」「なんかやっても俺は知らない」「俺の言ったことわか...</summary>
    <author>
        <name>omnioo</name>
        
    </author>
    
        <category term="エッセイ" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="芸術・美術・哲学" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.omnioo.com/omnioolab/">
        <![CDATA[<ul><li>「自分で調べろ」</li><li>「俺は教えた」</li><li>「なんかやっても俺は知らない」</li><li>「俺の言ったことわかってる？」</li><li>「そうなると思ってた」</li></ul>　これ、よくよく考えてみると結構怖いですね。比較的こういう人って多いと思うのですが、こういう人は自分自身はわりと常識的なモラリストであると自負しているというのが更にこわい感じがします。つまり、真面目で常識的な人がかなり破壊的な精神状態ということになっているわけです。<br />　自分が破壊的な精神状態かどうかを見分ける方法があるのですが、自分の最も身近な人間との関係でわかります。「自分は常識的であるにもかかわらず、理不尽に責められる」と思っている方は、自分自身がかなり破壊的で無残な精神状態であることが多いです。特に深夜まで夫婦喧嘩とかカップル喧嘩やっているような方々...。<br /> ]]>
        
    </content>
</entry>

<entry>
    <title>DNSサーバーnamed.confの設定 - omnioo lab.</title>
    <link rel="alternate" type="text/html" href="http://www.omnioo.com/omnioolab/ubuntu-910/server/dns/dnszone.php" />
    <id>tag:omnioo.com,2011:/omnioolab//31.1319</id>

    <published>2011-12-04T14:36:51Z</published>
    <updated>2011-12-11T01:35:25Z</updated>

    <summary>bind9の設定インデックス　ゾーンの設定の中核はnamed.confというファ...</summary>
    <author>
        <name>omnioo</name>
        
    </author>
    
        <category term="DNS" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Server" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Ubuntu 9.10/10.04" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.omnioo.com/omnioolab/">
        <![CDATA[<ul><li><a href="http://omnioo.com/omnioolab/omnioo-doc/public-doc/dnsbind9.php">bind9の設定インデックス</a></li></ul><br />　ゾーンの設定の中核はnamed.confというファイルで行います。その他の設定はこのファイルからの派生物であると考えてもいいぐらいです。すでにrndc-keyをnamed.confに設定しました。この先もこのファイルに設定を施してゆきます。<br />　Ubuntu/Debianのbind9のnamed.confはデフォルトでは、<br /><blockquote>include "/etc/bind/named.conf.option/";<br />include "/etc/bind/named.conf.local/";<br />include "/etc/bind/named.conf.default-zones/";<br /></blockquote>という３つのファイルをインクルードしています。これはnamed.confに直接書いても全く構いません。しかし一応分類しておいた方が賢明ということでデフォルトでこんな風になっています。ファイル名からも殆ど想像できるように、<br /><ul><li>bindに関する機能をいろいろ制御するオプション</li><li>ローカルエリアの設定</li><li>メインになるゾーンの設定</li></ul>という分類になっています。（私の場合は、named.conf.localは殆ど使っていません。）<br />メインに使うのは1と3のファイルです。 2は何故使わないかというとローカル環境での名前解決はおそらくホストの設定をもうすでにやっている筈です。ローカルエリアでの名前解決は基本的には、<br /><blockquote>hostname = 127.0.0.1<br /></blockquote>のみなので、殆ど場合はDNSサーバーで特に設定する必要がないか、デフォルトで設定済みになっています。<br /><br />

<h1>外部にDNSサーバーを開放する</h1>
　DNSサーバーはどのドメインがどのIPアドレス（またはネットワーク）に属するかを登録しているデータベースです。ですのでLAN内のDNSサーバーとして使う場合を除いては外に開放しないといわゆるクラウド的に使うことができません。ですので、ここでは外部に開放する手順を説明してゆきます。<br /><br />

<h2>include "/etc/bind/named.conf.default-zones/";を設定する</h2>
　まずは何かしらのエラーが起こって元に戻せなくなったらいけないので、このファイルのバックアップをとっておきます。設定が複雑になってきてエラー解決の切り分けができなくなったらデフォルトに戻せばいいわけです。それから、ここではインクルードするファイルを<br /><blockquote>include "/etc/bind/named.conf.main-zones/";<br /></blockquote>として、ファイル名を変更しておきます。それからnamed.conf.main-zonesを開いて編集します。<br /><br />　デフォルトの/etc/bind/named.conf.default-zoneは、ローカルエリアの設定とドメインのROOT"."などの基本的な設定がすでに施されています。インストールしたばかりのROOTゾーンはすでに最新のものになっているので大丈夫です。<br />　このファイルで定義することは、どのドメインを設定するかというものです。そしてその設定した詳細なドメイン情報がどのファイルであるのかを設定します。しかしそのドメインの設定も大きく分けて２つ存在します。すなわち、ネットワークの内側（LAN）であるのか外側（WAN）であるのか?です。その二つの領域を分ける作業をします。<br />　LAN内、またはサーバー自身であるという領域を示すためにaclを使用します。ここで、localnetと指定した場合には、viewの部分のmatch-clientsという部分にリンクしています。つまり、view "local"で設定したゾーン情報が、aclで設定したネットワーク内に反映されるということになります。デフォルトの設定は内側向けのみの設定になっているのでaclやviewを使用する必要がないのです。このaclとviewはLAN内のゾーン情報をいっぺんに設定するのに便利なのです。<br /><blockquote>/etc/bind/db.root&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ROOTゾーン情報<br />/etc/bind/db.local&nbsp;&nbsp; &nbsp;localhostゾーン情報<br />/etc/bind/db.127&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;localhostの逆引きのゾーン情報<br />/etc/bind/db.0&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ブロードキャストのゾーン情報<br />/etc/bind/db.255&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;ブロードキャストの逆引きのゾーン情報<br /></blockquote>というゾーンが設定されています。<br /><br />　WAN側（外側）の設定はview "global"で行います。ここでのmatch-clientsは、設定したゾーンすべてということになるのでany;を指定します。<br />　WAN側からドメインの名前解決を求めてやってくるクライアントに対してドメインとIPアドレスの対応表を渡すわけですが、DNSサーバーではそのDNSサーバーのドメインを設定してやらなくてはいけません。我々がWEBサーバーなどにアクセスするドメインは通常、ドメインとIPアドレスのペアでよいのですが、DNSサーバー自身を示すドメインも含めて設定するドメインが必要になります。このドメインだけはゾーンの設定が少々違ってきます。（後述）<br />　ですので、zone "exmaple.com"はそのような役割をするドメインとして一番最初に記述しておきます。その方がわかりやすいです。勿論DNSサーバーにはいろいろな種類と役割がありますので、このような設定はスタンドアローンのサーバー、WEBサーバーとかFTPサーバーとかが一台のマシンで併用されている小さなサーバーであると思ってください。（データセンターなどのサーバーはDNSサーバー自体が一つの大きなネットワークを作っているので、これまた高度な違う設定になります。DNSサーバーのDNSサーバーがあるのですから。）<br />　またDNSサーバーは一台では心許ないということでセカンダリーサーバーを置くことが、必須の条件になっております。必須でもないのですが、永遠の習慣になっています。幸いにしてmaihama-netさんは、セカンダリーDNSサーバーを無償で貸してくれるというありがたい事業をやってくれていますので、私はそこを利用しています。セカンダリーサーバーはメインになるプライマリーサーバーのゾーン情報を転送して常にミラーリングしています。仮にプライマリーサーバーが落ちてもしばらくの間は接続不能ということにならないような仕組みになっています。allow-transferの部分でセカンダリーサーバーのIPアドレスを指定してやります。（勿論、セカンダリー側の設定もあらかじめやっておく必要があります。）下の例では、合計3台のネームサーバーがミラーリングされていることになります。安心です。<br />　メインになるドメインのゾーン情報は逆引きの設定も施しておいた方が無難です。というのは逆引きできないドメインはかなり怪しいからです(特に機能的には問題ないのですが、スパムなどのメール送信に使われるサーバーなどは追跡されないように逆引きを設定していない場合が多いからです。）。Webサーバーの接続のみですと本来逆引きの設定は必要ないのですが、礼儀としても、習慣としても、またこれから先の高度な設定においても逆引きゾーンの設定はしておいた方がよいです。<br />　最後に通常のドメインの設定をします。これらのドメインがns.exmaple.comというアドレスをもったDNSサーバー内で名前解決されるドメインになります。環境が許す限りかなりたくさんのドメインを設定することができます。現在の中級クラスのマシンでも数百、数千は設定可能とのことです。勿論ネットワークのアクセス数にもよりますが。<br />　このような形で設定したら保存します。次は個々のzoneファイルを設定してゆきます。<br /><br /><blockquote>acl "localnet" {<br />&nbsp;&nbsp; &nbsp;127.0.0.1;<br />&nbsp;&nbsp; &nbsp;192.168.11.0/24;<br />};<br /><br />view "local" {<br />&nbsp;&nbsp; &nbsp;match-clients {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;localnet;<br />&nbsp;&nbsp; &nbsp;};<br /><br />&nbsp;&nbsp; &nbsp;// Root Server<br />&nbsp;&nbsp; &nbsp;zone "." {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;type hint;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;file "/etc/bind/db.root";<br />&nbsp;&nbsp; &nbsp;};<br /><br />&nbsp;&nbsp; &nbsp;// be authoritative for the localhost forward and reverse zones, and for<br />&nbsp;&nbsp; &nbsp;// broadcast zones as per RFC 1912<br />&nbsp;&nbsp; &nbsp;zone "localhost" {<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;type master;<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;file "/etc/bind/db.local";<br />&nbsp;&nbsp; &nbsp;};<br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp;&nbsp; zone "127.in-addr.arpa" {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; type master;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; file "/etc/bind/db.127";<br />&nbsp;&nbsp;&nbsp; };<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; zone "0.in-addr.arpa" {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; type master;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; file "/etc/bind/db.0";<br />&nbsp;&nbsp;&nbsp; };<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; zone "255.in-addr.arpa" {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; type master;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; file "/etc/bind/db.255";<br />&nbsp;&nbsp;&nbsp; };<br />};<br /><br /><br />view "global" {<br />&nbsp;&nbsp;&nbsp; match-clients {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; any;<br />&nbsp;&nbsp;&nbsp; };<br /><br />&nbsp;&nbsp;&nbsp; zone "exmaple.com" {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; type master;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; file "/etc/bind/zone/db.exmaple.com";<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; allow-transfer {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 123.50.202.226;&nbsp;&nbsp;&nbsp; //ns1.maihama-net.com<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 38.110.146.192;&nbsp;&nbsp;&nbsp; //ns2.maihama-net.com<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; notify yes;<br />&nbsp;&nbsp;&nbsp; };<br />&nbsp;&nbsp;&nbsp; zone "89.67.45.123.in-addr.arpa" {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; type master;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; file "/etc/bind/zone/db.123.45.67.89.rev";<br />&nbsp;&nbsp;&nbsp; };<br /><br /><br />&nbsp;&nbsp;&nbsp; zone "example2.com" {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type master;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file "/etc/bind/zone/db.example2.com";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allow-transfer {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //123.50.202.226;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //ns1.maihama-net.com<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; notify yes;<br />&nbsp;&nbsp;&nbsp; };<br /><br />};<br /></blockquote>&nbsp;グローバルなIPアドレスに対応するためのzoneの設定は、viewのglobal内で設定します。それぞれのzoneはネストされたデータベースとなっています。<br /><blockquote>zone "exmaple.com" {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; type master;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; file "/etc/bind/zone/db.exmaple.com";<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; allow-transfer {<br />;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 123.50.202.226;&nbsp;&nbsp;&nbsp; //ns1.maihama-net.com<br />;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 38.110.146.192;&nbsp;&nbsp;&nbsp; //ns2.maihama-net.com<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; };<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; notify yes;<br />};<br /><br />zone "89.67.45.123.in-addr.arpa" {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; type master;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; file "/etc/bind/zone/db.123.45.67.89.rev";<br />&nbsp;};<br /></blockquote>　一行目のzone "exmaple.com"で、zoneを指定します。ここで指定するドメインのゾーンの基本的な正引きの情報がここでネストされます。<br />二行目のtypeでは、プライマリーサーバーかセカンダリーサーバーかを指定します。ここではプライマリーサーバー（マスターサーバー）なのでmasterを指定します。<br />次にゾーン情報が書かれたzoneファイルのパスを指定します。これは基本的にはどこにおいても構わないのですが、ここでは/etc/bind/zoneというディレクトリを作成してその中に格納しています。データ情報が多くなるとディレクトリを作成しておいた方が無難です。<br />allow-transferではセカンダリーのネームサーバーを指定します。ここでは<a href="http://www.maihama-net.com/">マイハマネットさん</a>のIPを指定していますが、きちんと申し込んでから設定します。ですので、上記の例ではコメントアウトしています。<br />notifyでの設定はデフォルトではyesになっています。これは、nsで指定されたこのネームサーバーの設定が速やかにセカンダリーサーバーに転送されるかどうかの設定をしています。セカンダリーが設定いる際にはyesにしておくべきでしょう。後述になりますが、zoneファイルの設定でシリアル番号を1つ上げないと設定が反映されないのでご注意！<br /><br />　次に逆引きゾーンの設定をします。逆引きの場合は、IPアドレスを指定しますが、IPアドレスを逆から並べるというようなことをします。つまり、<br /><blockquote>123.45.67.89<br />　　　　↓<br />zone "89.67.45.123.in-addr.arpa"<br /></blockquote>という設定になります。in-addr.arpaの意味はぶっちゃけ考えなくてもいいです。こういう規則になっているというだけの話なので。<br />ここでもtypeはマスター、fileには逆引きゾーンのファイルパスを設定します。<br /><br />

<h1>ポートの設定</h1>
　ここらあたりの話はネットワーク設計のやり繰りで変わってきてしまうので一概には言えないのですが、DNSサーバーで使用するポートは53です。特にDNSサーバーが特殊なのはレスポンスに対してえらい細かくてうるさいTCPポートと共に、殆どなげやりで無責任なUDPポートを使用するということです。つまり53/tcpと53/udpというような設定が必要です。<br />　iptableや市販のルーター、もっと高性能なファイヤーウォールルーターなど様々なフォームウエアで設定が可能なので、便宜そちらできちんと設定しておくこと。市販のルーターですとNAT/マスカレードというようなキーワードで調べると設定の仕方が見つかるはずです。<br />　サーバーマシンそのものに直接iptableでもってポートを設定するときには、まずは、すべてのポートを閉じることをお薦めします。全部閉じてから該当のポートのみを開くようにしましょう。スタンドアローンのサーバー機では数個のポートを開放するだけで充分だからです。<br /><blockquote># ufw allow 53/udp<br /># ufw allow 53/tcp<br /></blockquote><br />]]>
        
    </content>
</entry>

<entry>
    <title>vim操作 - omnioo lab.</title>
    <link rel="alternate" type="text/html" href="http://www.omnioo.com/omnioolab/ubuntu-910/vim.php" />
    <id>tag:omnioo.com,2011:/omnioolab//31.1295</id>

    <published>2011-12-03T16:14:36Z</published>
    <updated>2011-12-04T06:30:10Z</updated>

    <summary>コマンドモードでは、exコマンドという様々なコマンドを実行する事ができます。ノーマルモードから、コマンドモードに移るためには、「:」キーを押します。コマンドモードに移ると、カーソルが一番下の段に移動します。 exコマンドで、編集したファイルの保存・終了する方法を紹介します。 </summary>
    <author>
        <name>omnioo</name>
        
    </author>
    
        <category term="Command" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Ubuntu 9.10/10.04" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.omnioo.com/omnioolab/">
        <![CDATA[<h1>保存や終了などの基本的な操作</h1>

コマンドモードでは、exコマンドという様々なコマンドを実行する事ができます。
ノーマルモードから、コマンドモードに移るためには、「:」キーを押します。
コマンドモードに移ると、カーソルが一番下の段に移動します。
exコマンドで、編集したファイルの保存・終了する方法を紹介します。

<table width="100%">
<tbody><tr>
<th>キー</th><th>動作</th>
</tr>
<tr>
  <td>:w<br />:w!</td><td>編集中のファイルを上書き保存します。!を付けると読み取り専用でも強制的に保存します。</td>
</tr>
<tr>
<td>:w name</td><td>編集中の内容をnameというファイル名で保存します。</td>
</tr>
<tr>
  <td>:q<br />:q!</td><td>ファイルを保存済みの場合、vimを終了します。編集が途中の場合は、終了できません。!を付けると編集途中でも強制的に終了させることができます。</td>
</tr>
<tr>
  <td>:wq<br />:wq!</td><td>ファイルを保存してから終了します。!を付けると読み取り専用でも強制的に保存して終了させることができます。</td>
</tr>
<tr>
  <td>:x<br />:x!</td><td>ファイルを保存してから終了します。!を付けると読み取り専用でも強制的に保存して終了させることができます。</td>
</tr>

 </tbody></table>

exコマンドモードに移らずノーマルモードで保存・終了する方法もあります。


<table width="100%">
<tbody><tr>
<th>キー</th><th>動作</th>
</tr>
<tr>
  <td>ZZ</td><td>ファイルを保存してから終了します。:wqと同じ動作です。</td>
</tr>
<tr>
  <td>ZQ</td><td>ファイルを保存しないで終了します。:q!と同じ動作です。</td>
</tr>
 </tbody></table>
<br />
<h1>ヤンクとペースト</h1>
　もっともよく利用するのがコピー&amp;ペーストなのですが、どうしてだかvimの場合はコピーのことをヤンクと言います。yyでその一行をヤンクします。単語単位ではyw、文字単位ではylとなっています。異様に複雑に感じますが慣れるとまあまあ使いやすいです。<br />　ペーストは一行単位ではpp、単語単位ではpw、文字単位ではplとなります。しかしこれ、海外産ということもあって単語単位でのコピー&amp;ペーストというものが存在しますが、句読点まで続く日本語にはちょっと相なれないものです。そもそもコードを書く以外には使わないものなので、まあこれでよいかというところです。<br />
<table width="100%">
<tbody><tr>
<th>キー</th><th>動作</th>
</tr>
<tr>
  <td>yy</td><td>カーソルのある1行をヤンクします。複数行ヤンクする場合は、3yyとすると3行ヤンクされます。</td>
</tr>
<tr>
  <td>yw</td><td>カーソルのある部分の単語を1つヤンクします。同様に複数単語をヤンクしたい場合は、3ywとすると３単語だけヤンクします。</td>
</tr>
<tr>
  <td>yl</td><td>カーソルのある部分から1文字をヤンクします。同様に複数文字数をコピーしたい場合は、3ylとすると3文字ヤンクします。</td>
</tr>
 </tbody></table>

<br />

<table width="100%">
<tbody><tr>
<th>キー</th><th>動作</th>
</tr>
<tr>
  <td>pp</td><td>ヤンクした行をカーソルのある位置に1行ペーストします。yyに対応しているペーストのコマンドです。複数行ヤンクした場合は、3ppとするとヤンクしたものを先頭から3行だけペーストします。</td>
</tr>
<tr>
  <td>pw</td><td>ヤンクした単語を1単語だけカーソルのある位置にペーストします。pwに対応してます。複数単語をペーストする際には3pwとします。3単語ペーストされます。</td>
</tr>
<tr>
  <td>pl</td><td>ヤンクした1文字をカーソルのある位置にペーストします。複数文字をペーストする際には、3plとすると3文字だけペーストされます。</td>
</tr>
 </tbody></table>

]]>
        
    </content>
</entry>

<entry>
    <title>Macにインストールしておきたいソフト一覧 - omnioo lab.</title>
    <link rel="alternate" type="text/html" href="http://www.omnioo.com/omnioolab/machintosh/imac/mac-1.php" />
    <id>tag:omnioo.com,2011:/omnioolab//31.1318</id>

    <published>2011-12-02T15:41:47Z</published>
    <updated>2011-12-02T15:54:11Z</updated>

    <summary>CotEditor　コードを書く際にはこのエディタが一番いいです。今までmiを使...</summary>
    <author>
        <name>omnioo</name>
        
    </author>
    
        <category term="OSX" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="iMac" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.omnioo.com/omnioolab/">
        <![CDATA[CotEditor<br />　コードを書く際にはこのエディタが一番いいです。今までmiを使っていましたがしょぼいMacで使うと結構重い。CotEditorはものすごく軽くて、設定も殆どデフォルトでそのままコーディングに使えます。みょうちくりんなモードもスキンもない。バックグランドの色を変えたりとかどうでもいい機能もないのでとてもいいです。<br /><br />mi<br />&nbsp;なんだかんだで一応入れておいてしまうmiですが、phpのモードがデフォルトで入っていなくていちいちダウンロードしてこないといけないのがおしいです。でも使っている人が多いので入れておいて損はないかも。<br /><br />VLC<br />&nbsp;なんだかんだで動画の再生には、Quick TimeよりもWindows Media PlayerよりもVLCが一番いいです。これはもう殆どの動画形式に対応していて何でも再生できます。その後のエンコードは別で考えればいい感じです。再生するならVLC。<br /><br />Evernote<br />&nbsp;アカウントもっていないと意味はありませんが、クラウド時代になんでもかんでも外部サーバーに保存しておけるEvernoteは便利です。無料アカウントで充分使える上に、ブラウザーから開かなくともアプリから開けるととても楽チンです。<br /><br />SyberDuck<br />&nbsp;複数のFTPアカウントに接続できたら最高なんですが、今のところ１つのアカウントにしか接続できなくて、他に切り替える時はいちいち接続を切らないといけないのですが、何だかんだでサーバー上のファイルを直接編集できるのはとても便利です。FireFTPとSyberduckが合わさったようなFTPクライアントはないでしょうか。いずれにろ、SyberDuckを選ぶのが賢明かも。<br /><br /><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>iPhoneから取り込んだiPhotoの画像・動画の保存先 - omnioo lab.</title>
    <link rel="alternate" type="text/html" href="http://www.omnioo.com/omnioolab/machintosh/imac/-iphonepcwindowsiphonemaclionfinderiphoto-libraryiphotooriginalslionmaster.php" />
    <id>tag:omnioo.com,2011:/omnioolab//31.1317</id>

    <published>2011-12-01T00:53:14Z</published>
    <updated>2011-12-01T00:54:35Z</updated>

    <summary>　 iPhoneで写真とか動画とかを撮影してPCに落とすときには、Windows...</summary>
    <author>
        <name>omnioo</name>
        
    </author>
    
        <category term="OSX" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="iMac" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.omnioo.com/omnioolab/">
        <![CDATA[　 iPhoneで写真とか動画とかを撮影してPCに落とすときには、Windowsの場合はiPhoneを外部でディバイスとして認識してくれるので写真なんかは普通に取り込めるんですが、Macの場合は母体みたいなものにドッキングみたいな感覚で、全然拒否反応がなくて馴染みすぎてしまって画像の保存先とか全然わからないので困りました。しかもLion以降はちょっと保存先のフォルダー名とかも違いました。<br /><br /><ol><li>Finderで普通に「ピクチャ」を開きます。</li><li>その中にあるiPhoto Libraryを右クリックして「パッケージの内容を表示」を選択して中を開きます。普通にクリックするとiPhotoアプリが起動してしまいます。</li><li>この中のoriginalsとあるフォルダ（LionではMasterっていう名前になっていました）を開きます。</li><li>その中に日付毎のフォルダに分かれて保存されているはずです。</li></ol><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>sudoのユーザーを設定する - omnioo lab.</title>
    <link rel="alternate" type="text/html" href="http://www.omnioo.com/omnioolab/ubuntu-1010/sudo.php" />
    <id>tag:omnioo.com,2011:/omnioolab//31.1316</id>

    <published>2011-11-28T15:07:38Z</published>
    <updated>2011-11-28T15:10:52Z</updated>

    <summary>　sudoのユーザーはデフォルトではrootだけになっています。GUIでUbun...</summary>
    <author>
        <name>omnioo</name>
        
    </author>
    
        <category term="Command" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Ubuntu 10.10" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Ubuntu 9.10/10.04" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.omnioo.com/omnioolab/">
        <![CDATA[　sudoのユーザーはデフォルトではrootだけになっています。GUIでUbuntu/Debianをインストールした場合なんかは、デフォルトのユーザーがsudoに自動的に登録されていたりするのかもしれません。が、基本的にはsudoユーザーは登録制です。<br /><br />

<h1>sudoユーザーを登録する方法</h1>　 rootでログインしてから、以下のファイルを編集します。<br /><blockquote># vi /etc/sudoers<br /></blockquote>おそらく、ファイル中程にある、<br /><blockquote># User privilege specification<br />root&nbsp;&nbsp; &nbsp;ALL=(ALL) ALL<br /></blockquote>という項目の後ろに登録したいユーザーを加えてゆきます。<br /><blockquote># User privilege specification<br />root&nbsp;&nbsp; &nbsp;ALL=(ALL) ALL<br />hoge&nbsp; ALL=(ALL) ALL<br /></blockquote>といった感じです。<br />　このファイルの保存が終わったら、何らかの再起動をしなくともsudoコマンドが使えるようになっております。<br /><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>Ubuntu/Debian treeコマンド - omnioo lab.</title>
    <link rel="alternate" type="text/html" href="http://www.omnioo.com/omnioolab/ubuntu-910/ubuntudebian-tree.php" />
    <id>tag:omnioo.com,2011:/omnioolab//31.1313</id>

    <published>2011-11-23T14:31:19Z</published>
    <updated>2011-11-23T14:33:48Z</updated>

    <summary>デフォルトで入っていないんですね。# apt-get -y install tr...</summary>
    <author>
        <name>omnioo</name>
        
    </author>
    
        <category term="Command" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Ubuntu 10.10" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Ubuntu 9.10/10.04" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.omnioo.com/omnioolab/">
        <![CDATA[デフォルトで入っていないんですね。<br /><blockquote># apt-get -y install tree [Enter]<br /></blockquote>で入ります。<br /><blockquote>$ <span class="highlight">tree</span> -L 1 -d /usr<br /></blockquote><pre>とやると、userディレクトリ以下の階層1つのディレクトリのみを表示してくれる。<br /></pre><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>Symfony2でデータベースの作成 - omnioo lab.</title>
    <link rel="alternate" type="text/html" href="http://www.omnioo.com/omnioolab/php/symfony2-3.php" />
    <id>tag:omnioo.com,2011:/omnioolab//31.1312</id>

    <published>2011-11-23T13:16:27Z</published>
    <updated>2011-11-24T14:15:25Z</updated>

    <summary>　データベースの作成といいつつ、特にSymfony2でデータベース作成するわけで...</summary>
    <author>
        <name>omnioo</name>
        
    </author>
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="フレームワーク" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.omnioo.com/omnioolab/">
        <![CDATA[　データベースの作成といいつつ、特にSymfony2でデータベース作成するわけでもないので、コマンドラインか、または、PHPMyAdminなんかでデータベースを１つだけ予め作成しておきます。ただそれを組み込むってだけの話です。ですので、すぐに終了します。<br />　ここではMySQLを組み込む話をします。<br /><blockquote>./Symfony/app/config/parameters.ini<br /></blockquote><div align="left">を開いて、DB情報を記入します。<br /></div><blockquote>database_driver&nbsp;&nbsp; = pdo_mysql&nbsp;&nbsp;&nbsp; ; このまま<br />database_host = localhost<br />database_port =&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ; 普通は空で特に問題なし<br />database_name = symfony<br />database_user = root<br />database_password = xxxxxx<br /></blockquote>でOKです。<br /><br />　データベースの設定方法はブラウザーからも設定できます。Symfony2に手を出している人がここから設定するとはあまり思えませんが。<br /><a href="http://localhost/Symfony/app_dev.php/_configurator/step/0">http://localhost/Symfony/app_dev.php/_configurator/step/0</a><br /><br /><a href="http://omnioo.com/omnioolab/assets_c/2011/11/db_set-847.php" onclick="window.open('http://omnioo.com/omnioolab/assets_c/2011/11/db_set-847.php','popup','width=1033,height=831,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://omnioo.com/omnioolab/assets_c/2011/11/db_set-thumb-500x402-847.jpg" alt="db_set.jpg" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" height="402" width="500" /></a><br /><br /><br /> <div><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>Symfony2のインストール - omnioo lab.</title>
    <link rel="alternate" type="text/html" href="http://www.omnioo.com/omnioolab/php/symfony2-2.php" />
    <id>tag:omnioo.com,2011:/omnioolab//31.1310</id>

    <published>2011-11-23T07:31:08Z</published>
    <updated>2011-11-27T02:13:28Z</updated>

    <summary>　Symfony2から何故か頭が大文字になりました。Symfony2は従来のsy...</summary>
    <author>
        <name>omnioo</name>
        
    </author>
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="フレームワーク" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.omnioo.com/omnioolab/">
        <![CDATA[　Symfony2から何故か頭が大文字になりました。Symfony2は従来のsymfonyと中身が全然違うみたいです。ダウンロード、インストール方法は本家のサイトでもかなり詳しく解説しています。<br />　ここではDebian環境でのメモですので、その他の環境では便宜別のパスとかコマンドで置き換えてください。概ね同じです。<br />&nbsp;いずれにしろ、PHP 5.3.2 以上が動作する Web サーバ(Apache など)が開発環境として整っている必要があります。その他のモジュール類は、Symfony2をインストールしてから準備しても大丈夫です。<br /><a href="http://docs.symfony.gr.jp/sf2-blog-tutorial/01-introduction.html">http://docs.symfony.gr.jp/sf2-blog-tutorial/01-introduction.html</a><br /><br />

<h1>ダウンロード</h1>
　Symfony2はダウンロードサイトから、Symfony Standard 2.0.6(.zip)あたりを選んでダウンロードします。<br /><a href="http://docs.symfony.gr.jp/sf2-blog-tutorial/01-introduction.html">http://symfony.com/download</a><br /><br />

<h1>インストール</h1>　適当なところで解凍するとSymfonyというフォルダーが出来上がります。それをWEBサーバーにアップロードします。<br />ここではアップロード先を、/home/user/wwwであることを前提に話をすすめていきます。もしかしたら面倒なので、./Symfony/xxxというような書き方をしてしまうかもしれません。いずれにしろSymfonyディレクトリからのパスなので、だいたいで理解お願いします。ですので、アップロードが終了すると、<br /><blockquote>./Symfony<br />&nbsp;&nbsp;&nbsp; |-- LICENSE<br />&nbsp;&nbsp;&nbsp; |-- README.md<br />&nbsp;&nbsp;&nbsp; |-- app<br />&nbsp;&nbsp;&nbsp; |-- bin<br />&nbsp;&nbsp;&nbsp; |-- deps<br />&nbsp;&nbsp;&nbsp; |-- deps.lock<br />&nbsp;&nbsp;&nbsp; |-- src<br />&nbsp;&nbsp;&nbsp; |-- vendor<br />&nbsp;&nbsp;&nbsp; `-- web<br /></blockquote>という風になります。これでアップロードは完了です。<br />アクセスURLは、<br /><blockquote>http://localhost/Symfony/<br /></blockquote>をRootディレクトリとして説明してゆきます。便宜自分のURLに書き換えて解釈してください。<br /><br />

<h1>設定</h1>　ここから初期設定をいろいろやります。まずは、<br /><blockquote>http://localhost/Symfony/web/config.php<br /></blockquote>ファイルにアクセスします。<br /><br />　もしここで<b>「This script is only accessible from localhost.」</b>というメッセージが出てきたら、外部から接続できるように設定します。初期設定ではlocalhostのみの接続を許可しているからです。変更箇所は、<br /><blockquote>./Symfony/web/config.php<br />./Symfony/web/app_dev.php<br /></blockquote>という２つのファイルの、<br /><blockquote>/*<br />if (!in_array(@$_SERVER['REMOTE_<wbr>ADDR'], array(<br />&nbsp;&nbsp;&nbsp; '127.0.0.1',<br />&nbsp;&nbsp;&nbsp; '::1',<br />))) {<br />&nbsp;&nbsp;&nbsp; header('HTTP/1.0 403 Forbidden');<br />&nbsp;&nbsp;&nbsp; exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');<br />
}<br />*/<br /></blockquote>という部分をコメントアウトします。問題がなければ削除してしまっても構いませんが、一応コメントアウトが基本ですかね。<br />問題がなければ、以下のような画面が現れます。<br /><a href="http://omnioo.com/omnioolab/assets_c/2011/11/symfony_shot-838.php" onclick="window.open('http://omnioo.com/omnioolab/assets_c/2011/11/symfony_shot-838.php','popup','width=1030,height=446,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://omnioo.com/omnioolab/assets_c/2011/11/symfony_shot-thumb-500x216-838.jpg" alt="symfony_shot.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0pt auto 20px;" height="216" width="500" /></a><br />

<h1>パーミッションとかの設定</h1>
　一部パーミッションとかの設定をします。aclというモジュールでもってスレッドセーフティな設定が最もいいのですが、うまく環境が整わない場合は、www-data(Apacheのユーザー)と自身のユーザーがキャシュとログにどちらとも平等にアクセスできるようにパーミッションを設定します。app/cacheとapp/logのパーミッション設定をしているファイルに一行書き足します。<br /><blockquote>./Symfony/app/console<br />./Symfony/web/app.php<br />./Symfony/web/app_dev.php<br /></blockquote>の３つのファイルの先頭にumaskを設定します。以下の一行をファイル先頭に書き加えてください。<br /><blockquote>umask(0000); 　　　//パーミッション777を与えます。<br /></blockquote>ALCを使ったスレッドセーフな設定を推奨している...といいますか、当然その方がいいので、<a href="http://docs.symfony.gr.jp/symfony2/book/installation.html">その設定方法は本家で参照</a>のこと。　<br /><br /><br />

<h1>各モジュール類をインストールする</h1>
　実際には上記のような画面は出ないと思います。PHPのバージョンが違うとか、モジュールが足りないとかいろいろ言われると思います。Symfonyをインストールする前に準備した方がよいのですが、私はSymfonyをインストールしてから、次々と足してゆきました。しかし、この時点で開発環境を整備しておいた方が無難です。英語での警告なり推奨だったりですが、普通に読めばだいたいわかる感じです。<br /><br />　いい加減ですが、以下のようにインストールすることができます。それ以外でエラーが出たり警告が出たりした場合は、本家で調べた方が無難です。<br /><blockquote># apt-get upgrade<br /># apt-get install apache2<br /># apt-get install mysql-server<br /># apt-get install php5 php5-mysql php-pear<br /># apt-get install sqlite3 php5-sqlite<br /># apt-get install make libpcre3-dev<br /># apt-get install php5-intl<br /># pecl install apc<br /># pecl install xdebug<br /># apt-get install php-apc<br /># pear channel-discover pear.phpunit.de<br /># pear channel-discover components.ez.no<br /># pear upgrade pear<br /># pear install phpunit/PHP_CodeCoverage<br /># apt-get install phpunit<br /></blockquote><br />

<h1>PHPの設定</h1>　ちょっとだけですが、PHP.iniの設定をしなくてはいけません。Symfony1.4系の話だったか今回のSymfony2だったか忘れてしまいまいたが、cliも同様に設定しておかないといけなかったような気がするので、問題なければ、<br />/etc/php5/apache2/php.ini<br />/etc/php5/cli/php.ini<br />の２つのファイルを同様に設定しておいた方が無難かもしれません。（php.iniはそれぞれの環境で違う場所にあるかもです。）<br /><blockquote>date.timezone = Asia/Tokyo<br />short_open_tag = Off<br /></blockquote>&nbsp;タイムゾーンの設定とショートタグ&lt;? ... ?&gt;という省略形の書き方を禁止するというものです。&lt;?php ...　?&gt;で書かないと動かなくなりますので、同WEBサーバーに他のPHPが動いている場合はご注意。<br />　ここまででインストールと基本的な設定終了。<br /><br />

<h1>Demo画面を見てみる</h1>
　最後にデモ画面を見てみます。先ほどのhttp://localhost/Symfony/web/config.php画面にある３つのリンクの真ん中ぐらいに、<br /><blockquote>Bypass configuration and go to the Welcome page<br /></blockquote>というものがあるので、それをクリックして進みます。具体的には、<br /><blockquote>http://localhost/Symfony/app_dev.php/<br /></blockquote>というパスになっている筈です。<br /><a href="http://omnioo.com/omnioolab/assets_c/2011/11/symfony_demo-841.php" onclick="window.open('http://omnioo.com/omnioolab/assets_c/2011/11/symfony_demo-841.php','popup','width=1029,height=834,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://omnioo.com/omnioolab/assets_c/2011/11/symfony_demo-thumb-500x405-841.jpg" alt="symfony_demo.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0pt auto 20px;" height="405" width="500" /></a>その画面の 「RUN THE DEMO」という右側の緑色のボタンを押すと、Hello Symfonyの画面が出ます。Hello Worldへのリンクありますので、それをクリックするとDemo画面のHello World!が見える筈です。ここまでで、設定が終了という感じです。その他の不具合はその都度解決してゆけばいいでしょう。<br />　後から学ぶことですが、コントローラーとかテンプレートのコードとか書かれているので、ちょっと参考にしておけばよいと思います。このHello World!画面はデモのバンドルが作っているページです。これから学ぶバンドルの最初の一歩のページです。<br /><br /><a href="http://omnioo.com/omnioolab/assets_c/2011/11/symfony_hello_world-844.php" onclick="window.open('http://omnioo.com/omnioolab/assets_c/2011/11/symfony_hello_world-844.php','popup','width=1016,height=844,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://omnioo.com/omnioolab/assets_c/2011/11/symfony_hello_world-thumb-500x415-844.jpg" alt="symfony_hello_world.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0pt auto 20px;" height="415" width="500" /></a><br /><br /><br />
<br /><br /><div><br /></div><div><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>MySQLでよく使うコマンド一覧 - omnioo lab.</title>
    <link rel="alternate" type="text/html" href="http://www.omnioo.com/omnioolab/mysql/script/mysql-12.php" />
    <id>tag:omnioo.com,2011:/omnioolab//31.1309</id>

    <published>2011-11-23T01:20:54Z</published>
    <updated>2011-11-23T02:01:18Z</updated>

    <summary><![CDATA[&nbsp;MySQLはPHPMyAdminが主流になってしまって、時々コマンド...]]></summary>
    <author>
        <name>omnioo</name>
        
    </author>
    
        <category term="MySQL" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="command" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.omnioo.com/omnioolab/">
        <![CDATA[&nbsp;MySQLはPHPMyAdminが主流になってしまって、時々コマンドラインから使うとかなり忘れてしまっているので備忘録としての一覧です。これ見ればかなり思い出す。<br /><br />

<h1>ログイン</h1><blockquote>
$ mysql -u {USER_NAME} -p [Enter]<br />{PASSWORD} [Enter]<br /></blockquote><br />

<h1>ユーザー操作</h1>
<b>ユーザー一覧を表示</b>（いっぱいあるので、ここではホストとユーザー名だけ）<br /><blockquote>$ select {HOST},{USER_NAME} from mysql.user [Enter]<br /></blockquote><br /><b>ユーザーの作成</b>（すべての権限を与える） <a href="http://omnioo.com/omnioolab/mysql/mysql-10.php">詳細はこちら参照</a><br /><blockquote>$ grant all privileges on {DB_NAME}.* to {USER_NAME}@{HOST} identified by '{PASSWORD}';<br /></blockquote><br /><b>ユーザーの権限確認</b><br /><blockquote>$ show grants for {USER_NAME}@{HOST};<br /></blockquote><br /><b>ユーザーのパスワードの変更</b><br /><blockquote>$ set password fo {USER_NAME}@{host}=password('password');
<br /></blockquote><br /><b>ユーザー削除</b><br /><blockquote>delete from mysql.user where user='{USER_NAME}';<br /></blockquote><br />

<h1>データベース操作</h1>
<b>データベースの一覧</b><br /><blockquote>$ show databases;<br /></blockquote><br /><b>データベースの作成 (UTF8の場合)</b><br /><blockquote>$ create database {DB_NAME} character set utf8;<br /></blockquote><br /><b>データベースの削除</b><br /><blockquote>$ drop database {DB_NAME};<br /></blockquote><br /><br />　ここから先はPerlとかPHPでやってしまうので、あんまり使わないですね。<br /><br />&nbsp; ]]>
        
    </content>
</entry>

<entry>
    <title>坂本慎太郎氏の才能 - omnioo lab.</title>
    <link rel="alternate" type="text/html" href="http://www.omnioo.com/omnioolab/cat391/post-120.php" />
    <id>tag:omnioo.com,2011:/omnioolab//31.1307</id>

    <published>2011-11-20T15:29:48Z</published>
    <updated>2011-11-20T15:30:37Z</updated>

    <summary></summary>
    <author>
        <name>omnioo</name>
        
    </author>
    
        <category term="エッセイ" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="気になる人物" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.omnioo.com/omnioolab/">
        <![CDATA[<iframe width="500" height="315" src="http://www.youtube.com/embed/t08i_cWdcbM" frameborder="0" allowfullscreen></iframe>]]>
        
    </content>
</entry>

<entry>
    <title>SymfonyでHello world!を作ってみる - omnioo lab.</title>
    <link rel="alternate" type="text/html" href="http://www.omnioo.com/omnioolab/php/-hello-worldsymfonyurl---symfony5w1h-symfony-hello-worldhello-world-symfony.php" />
    <id>tag:omnioo.com,2011:/omnioolab//31.1306</id>

    <published>2011-11-16T16:29:37Z</published>
    <updated>2011-11-16T17:11:26Z</updated>

    <summary>　伝統的に「Hello World!」ということになってしまいますが。Symfo...</summary>
    <author>
        <name>omnioo</name>
        
    </author>
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="フレームワーク" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.omnioo.com/omnioolab/">
        <![CDATA[　伝統的に「Hello World!」ということになってしまいますが。Symfonyもやはりそれでもって学習するのがいかと思います。ここでやるべきことは、意味はとにかくよくわからないまでもひと通り体験しておくべきものとして、<br /><ul><li>バンドルの作成と設定</li><li>ルーティングの設定</li><li>コントローラーの設定</li><li>URLアクセス</li></ul>ということになります。<br />　概念的な話でいいますと、<br /><ul><li>バンドル＝モジュールの作成</li><li>ルーティング＝行き先とパスの作成</li><li>コントローラー＝入力-&gt;出力</li></ul>です。<br /><br />

<h1>バンドルとは？</h1>
　Symfonyフレームワークのその中核はこのバンドルにあります。フレームワークがフレームワークとして機能するときその内容のコアはこのバンドルで作成します。アプリの5W1H は、ここで作成されます。というのは、このバンドルという概念はいわゆるモジュールやプラグインという概念にほぼ等しいということです。国際宇宙ステーションと同様に、それだけで最低限機能する宇宙ステーションの柱となるエネルギーの供給と通路。これが宇宙ステーションの本体でありフレームワークです。しかしそれだけでは勿論ステーションとしての機能がなされないので、モジュールを追加してゆきます。生活のための住居モジュール、宇宙で様々な実験をするための実験施設ノジュール、ステーションで働く人の健康管理をするための病院モジュール、そんなものがその最低限の宇宙ステーションに随時組み込まれて大きくなります。Symfonyも同様に、バンドル＝モジュールを追加してゆくことによって大きくなります。１つの機能を付け加える際にバンドルを１つ作るということになります。<br /><br />

<h1>バンドルの作成</h1>　ここでは、Hello World!をやってみます。なぜなら初心者はHello worldに決まっているからです。<br />　バンドルを作るのはコマンド一発なので簡単です。以下のコマンドを実行するだけです。しかし、予めSymfonyのあるディレクトリに移動しておく必要があるかもしれません。<br /><blockquote>$ php app/console generate:bundle --namespace=Acme/HelloBundle --format=yml<br /></blockquote>コマンドを実行するとYESだのNOだのいろいろ聞いてくるのですが、全部ENTERでもってそのまま突き進んでください。Symfonyは何も答えなくともきちんと処理してくれます。しかしフレームワークなのでルールがあります。<br /><blockquote>$ php app/console generate:bundle --namespace=&lt;名前空間&gt;/&lt;バンドル名&gt; --format=&lt;フォーマットタイプ&gt;<br /></blockquote>というルールになっています。<br />　名前空間は知っての通りバンドル機能を１つの塊として名前空間で分けます。これは自分が欲する機能別に名前空間を指定することができることを意味していると同時に、実際にディレクトリ別にコードを分割することで実装します。<br />　バンドル名は、習慣的に&lt;バンドル名&gt;Bundleという名前がよいです。ですからHelloBundleということになっています。<br />　フォーマットはバンドル作成の際に必要な設定ファイルのタイプを指定します。yml php xmlが指定できますが、ymlが一番簡単だしSymfonyもymlがいいと言っているので初心者はymlにすべきです。<br /><br />　さて、You can now start using the generated code! というところでバンドル作成が成功したことになります。<br /><br />

<h1>バンドルの設定</h1>　バンドルが作成されたらバンドルの設定をいくつかしなくてはなりません。しかしその前にバンドルはどこにあるのでしょう？それは上記ですでに述べたように名前空間で実装されています。<br /><blockquote>src/Acme/HelloBundle<br />src/&lt;名前空間&gt;/&lt;バンドル名&gt;<br /></blockquote>というディレクトリにバンドルのスケルトンが作成されている筈です。バンドルは名前空間が実際のディレクトリとして各ディレクトリごとに格納されます。通常といいますか、PHPもまた、名前空間と実際のディレクトリはバラバラで構わないのですが、Symfonyはフレームワークとして名前空間と実際のディレクトリ構造を全く同じにしています。この方がわかりやすいんです。<br /><br />　先ほどの宇宙ステーションのようにこのバンドルはどこかでステーションと接続しないと意味がありません。つまりバンドルにお互いに行き来できる通路が必要なわけです。この通路は２つ必要です。それは、<br /><ul><li>名前空間の登録　[app/autoload.php]</li><li>カーネルへ登録　[app/AppKernel.php]</li></ul>という２つの作業です。<br />　実際はバンドル作成時のコマンド（app/console generate:bundle）で自動的に登録されています。自動的に登録されているというはやや語弊がありますが、名前空間の登録は実はしなくてもいいのです。なぜなら、この名前空間はどこからともなく自動的に読み込まれるように設計されているからです。ですがカーネルの登録は自動的にホントに登録されています。結局のところどちらもしなくてもよいのですが、フレームワークの意味として把握していた方が得策でしょう。<br /><br />　さて、名前空間の登録はしなくてよいといいましたが、ここは初心者として明示的に登録してみましょう。<br />app/autoload.phpというファイルに登録します。このファイルは、Symfonyが走る時に自動的に読み込まれます。requireとかincludeとかを全く気にしないで、この先どんどんコードを書いてゆけるという安心極まりない機能を有しています。<br /><blockquote>$loader = new UniversalClassLoader();<br />$loader-&gt;registerNamespaces(<wbr>array(<br />&nbsp;&nbsp;&nbsp; 'Symfony'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; array(__DIR__.'/../vendor/<wbr>symfony/src', __DIR__.'/../vendor/bundles'),<br />&nbsp;
　　...その他の名前空間...<br />&nbsp;&nbsp;&nbsp; 'Metadata'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; __DIR__.'/../vendor/metadata/<wbr>src',<br />　　　　<b>'Acme'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&gt; __DIR__.'/../</b><wbr><b>src',</b><br />));<br />$loader-&gt;registerPrefixes(<wbr>array(...<br /></blockquote><br />16行目辺りが名前空間登録の尻になっている筈です。すでに登録されている名前空間があります。そのリストの最後に明示的に先ほど作成したバンドルを書き加えます。ここでの登録はあくまでのバンドルにまつわる「名前空間」の登録なので、バンドルが配置されているディレクトリを名前空間としたAcmeだけを登録します。この名前空間に後から追加するバンドルの場合は、この中に含まれてしまいますのでここでの作業は不要になります。（というか、元々不要ではあるのですが...）<br /><br />　カーネルの登録は、app/AppKernel.phpというファイルに登録されています。見てみましょう。<br /><blockquote>class AppKernel extends Kernel<br />{<br />&nbsp;&nbsp;&nbsp; public function registerBundles()<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $bundles = array(<br />
　　　　　　　　　　　...すでに登録されているBundleがいっぱい<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new JMS\SecurityExtraBundle\<wbr>JMSSecurityExtraBundle(),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>new Acme\HelloBundle\</b><wbr><b>AcmeHelloBundle(),</b><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );<br /></blockquote>21行目辺りにすでに登録されているのがわかります。これは、バンドルが正しく機能しない時に役にたつと思います。もしかしたら、ここに登録されていないかもしれないからです。作成したバンドルがカーネルに登録されているかどうか一応確認してみるのが得策です。<br /><br />　これでバンドルの作成は終わりです。<br /><br />バンドル作成の本家のページ<br /><a href="http://docs.symfony.gr.jp/sf2-blog-tutorial/03-create-bundle.html">http://docs.symfony.gr.jp/sf2-blog-tutorial/03-create-bundle.html<br /></a><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>ブログ記事を複製/移動 MovableTypeプラグイン - omnioo lab.</title>
    <link rel="alternate" type="text/html" href="http://www.omnioo.com/omnioolab/movable-type/movabletypeduplicateentry.php" />
    <id>tag:omnioo.com,2011:/omnioolab//31.1305</id>

    <published>2011-11-10T01:55:14Z</published>
    <updated>2011-11-11T09:45:58Z</updated>

    <summary><![CDATA[&nbsp;むかしはMTにブログ記事をコピーするという項目があったような気がする...]]></summary>
    <author>
        <name>omnioo</name>
        
    </author>
    
        <category term="Movable Type" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Plugin" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.omnioo.com/omnioolab/">
        <![CDATA[&nbsp;むかしはMTにブログ記事をコピーするという項目があったような気がするのですが気のせいでしょうか？テンプレートの複製はできるのに、ブログ記事の複製ができないというのはちょっと不便じゃないかと思いますが、基本的にはユニークなものを記録するという意味ではブログ記事に覆製は必要ないんだろうけれど、用途によっては結構コピーするものなのです。<br />　と思ったら、プラグインがありました。MT5で使用できて、設定もいらないという便利さ。しかも、機能が豊富でブログ記事を他のブログ記事にコピー＆移動ができるという代物。すごい。<br /><br /><a href="http://www.skyarc.co.jp/engineerblog/entry/duplicateentry.html">http://www.skyarc.co.jp/engineerblog/entry/duplicateentry.html</a><br /> ]]>
        
    </content>
</entry>

</feed>

