<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>「あなくつ」のおもちゃばこ - Laboratory</title>
    <link rel="alternate" type="text/html" href="http://www.ana-kutsu.com/laboratory/" />
    <link rel="self" type="application/atom+xml" href="http://www.ana-kutsu.com/laboratory/atom.xml" />
    <id>tag:www.ana-kutsu.com,2008-09-01:/laboratory//2</id>
    <updated>2011-08-11T13:29:04Z</updated>
    <subtitle>「あなくつ」の趣味で作ったものあれこれ。アプリケーションで正式公開するまでもないものを密かに公開。</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 5.12</generator>

<entry>
    <title>メールアドレス (RFCに基づく仕様を理解する)</title>
    <link rel="alternate" type="text/html" href="http://www.ana-kutsu.com/laboratory/email_addr_spec.html" />
    <id>tag:www.ana-kutsu.com,2011:/laboratory//2.595</id>

    <published>2011-08-11T13:15:27Z</published>
    <updated>2011-08-11T13:29:04Z</updated>

    <summary>今まで僕は、ネット上にあるいわゆる「メールアドレスチェックの正規表現」でメールア...</summary>
    <author>
        <name>あなくつ</name>
        
    </author>
    
    <category term="rfc" label="RFC" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="メールアドレス" label="メールアドレス" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.ana-kutsu.com/laboratory/">
        <![CDATA[<p>今まで僕は、ネット上にあるいわゆる「メールアドレスチェックの正規表現」でメールアドレスのチェック・抽出を行っていたんだけど、それだといろいろ問題が起きてしまい、ちゃんとRFCに基づいてチェックしようということで調べてみました。</p>
<p>まずどのRFCを読むか。RFC 5321 (Simple Mail Transfer Protocol)またはRFC 5322 (Internet Message Format)が最新のようです。下記ではRFC5322の記述を元に読んでいきます。なお、RFC内の記載順ではなく、解釈の順番で引用します。</p>
]]>
        <![CDATA[<p>メールアドレスについては「3.4.1.  Addr-Spec Specification」から記載されています。</p>
<blockquote><pre>
   addr-spec       =   local-part "@" domain

   local-part      =   dot-atom / quoted-string / obs-local-part

   domain          =   dot-atom / domain-literal / obs-domain
</pre></blockquote>
<p>上から順番に解読すると下記のようになります。</p>
<ul>
<li>「addr-spec」(メールアドレス)とは「local-part」と「domain」を「@」で接続したものである。</li>
<li>「local-part」とは「dot-atom」または「quoted-string」または「obs-local-part」である。</li>
<li>「domain」とは「dot-atom」または「domain-literal」または「obs-domain」である。</li>
</ul>
<p>「local-part」と「domain」に含まれる「dot-atom」は「3.2.3.  Atom」セクションで以下のように定義されています。</p>
<blockquote><pre>
   dot-atom        =   [CFWS] dot-atom-text [CFWS]

   dot-atom-text   =   1*atext *("." 1*atext)

   atext           =   ALPHA / DIGIT /    ; Printable US-ASCII
                       "!" / "#" /        ;  characters not including
                       "$" / "%" /        ;  specials.  Used for atoms.
                       "&" / "'" /
                       "*" / "+" /
                       "-" / "/" /
                       "=" / "?" /
                       "^" / "_" /
                       "`" / "{" /
                       "|" / "}" /
                       "~"

   specials        =   "(" / ")" /        ; Special characters that do
                       "<" / ">" /        ;  not appear in atext
                       "[" / "]" /
                       ":" / ";" /
                       "@" / "\" /
                       "," / "." /
                       DQUOTE
</pre></blockquote>
<ul>
<li>「dot-atom」とは「dot-atom-text」である。ただしその前後に「CFWS」を置くことができる。</li>
<li>「dot-atom-text」とは1文字以上の「atext」で、その後に「.」と「atext」のセットが0個以上連結する。</li>
<li>「atext」とは上記に列挙されている文字(印字可能で「specials」ではない文字)である。</li>
<li>「specials」とは上記に列挙されている文字である。(DQUOTEはASCIIコード34「"」)</li>
</ul>
<p>かつてdocomoとAUのメールアドレスでドットの連続したアドレスが設定できましたが、これがRFC違反と騒がれていた所以は「1*atext *("." 1*atext)」だからのようですね。ちなみに現在はdocomoもAUも新たに設定されるメールアドレスではドットを連続させることはできないようです。ドットの連続がアットマークの前に来る僕のメアドは貴重品です(笑)</p>
<p>「dot-atom」に含まれる「CFWS」は「3.2.2.  Folding White Space and Comments」および「4.4.  Obsolete Addressing」セクションで以下のように定義されています。</p>
<blockquote><pre>
   CFWS            =   (1*([FWS] comment) [FWS]) / FWS

   FWS             =   ([*WSP CRLF] 1*WSP) /  obs-FWS
                                          ; Folding white space

   obs-FWS         =   1*WSP *(CRLF 1*WSP)

   comment         =   "(" *([FWS] ccontent) [FWS] ")"

   ccontent        =   ctext / quoted-pair / comment

   ctext           =   %d33-39 /          ; Printable US-ASCII
                       %d42-91 /          ;  characters not including
                       %d93-126 /         ;  "(", ")", or "\"
                       obs-ctext

   obs-ctext       =   obs-NO-WS-CTL

   obs-NO-WS-CTL   =   %d1-8 /            ; US-ASCII control
                       %d11 /             ;  characters that do not
                       %d12 /             ;  include the carriage
                       %d14-31 /          ;  return, line feed, and
                       %d127              ;  white space characters

   quoted-pair     =   ("\" (VCHAR / WSP)) / obs-qp

   obs-qp          =   "\" (%d0 / obs-NO-WS-CTL / LF / CR)
</pre></blockquote>
<ul>
<li>「CFWS」とは、1個以上の「comment」または「FWS」である。ただし「comment」の前に「FWS」を置くことができ、最後の「comment」のあとには「FWS」を置くことができる。</li>
<li>「FWS」とは、1個以上の「WSP」または「obs-FWS」である。ただし「WSP」の前に、0個以上の「WSP」と「CRLF」のセット、を置くことができる。(WSPはASCIIコード32「 」またはASCIIコード9「	」)</li>
<li>「obs-FWS」とは、1個以上の「WSP」である。ただし「WSP」のあとに、「CRLF」と1個以上の「WSP」のセット、を置くことができる。</li>
<li>「comment」とは、「(」と「)」で囲まれた、0個以上の「ccontent」である。ただし「ccontent」の前に「FWS」を置くことができ、最後の「ccontent」のあとには「FWS」を置くことができる。</li>
<li>「ccontent」とは、「ctext」または「quoted-pair」また「comment」である。</li>
<li>「ctext」とは、上記に列挙されている文字コードの範囲または「obs-ctext」である。</li>
<li>「obs-ctext」とは、「obs-NO-WS-CTL」である。</li>
<li>「obs-NO-WS-CTL」とは、上記に列挙されている文字コードの範囲である。</li>
<li>「quoted-pair」とは、「\」に続く「VCHAR」または「WSP」、または「obs-qp」である。(VCHARは印字可能なASCII文字(0x21-0x7E))</li>
<li>「obs-qp」とは、「\」に続くASCIIコード0または「obs-NO-WS-CTL」または「LF」または「CR」である。(LFはASCIIコード10、CRはASCIIコード13)</li>
</ul>
<p>とりあえずここまでで読み取れるのは、「local-part」「domain」の前後、つまり「@」とメールアドレスの前後にはコメントやスペースなどを入れられるということですね。しかもコメントはネスト出来るという面倒な構造です。「dot-atom-text ( this is comment ) @ ana-kutsu.com」こーんなメールアドレスもRFC的にはOKということですね。</p>
<p>それと「quoted-pair」についてですが、面倒に定義されていますが結局は「\」に続けばASCII文字すべてを置くことができることになっていますね。</p>
<p>ところでこの「CFWS」ですが、「3.4.  Address Specification」で述べられている通り、「@」の前後にコメントやスペースを入れるべきではない(SHOULD NOT)と書かれています。なので使わない方がいいですし、実際問題これをMTAが正確に考慮してくれるとは期待しない方がいいでしょう。</p>
<p>続いて、「local-part」に含まれる「quoted-string」は「3.2.4.  Quoted Strings」および「4.4.  Obsolete Addressing」セクションで以下のように定義されています。</p>
<blockquote><pre>
   quoted-string   =   [CFWS]
                       DQUOTE *([FWS] qcontent) [FWS] DQUOTE
                       [CFWS]

   qcontent        =   qtext / quoted-pair

   qtext           =   %d33 /             ; Printable US-ASCII
                       %d35-91 /          ;  characters not including
                       %d93-126 /         ;  "\" or the quote character
                       obs-qtext

   obs-qtext       =   obs-NO-WS-CTL
</pre></blockquote>
<ul>
<li>「quoted-string」とは、「DQUOTE」と「DQUOTE」で囲まれた、0個以上の「qcontent」である。ただし「qcontent」の前に「FWS」を置くことができ、最後の「qcontent」のあとには「FWS」を置くことができる。</li>
<li>「qcontent」とは、「qtext」また「quoted-pair」である。</li>
<li>「qtext」とは、上記に列挙されている文字コードの範囲または「obs-qtext」である。</li>
<li>「obs-qtext」とは、「obs-NO-WS-CTL」である。</li>
</ul>
<p>えーと、つまりダブルクォーテーションに囲まれいれば事実上すべてのASCII文字を置けるわけですねぇ。ドットが連続してもいいし、「\」でエスケープすれば改行コードとかもOKなワケです。</p>
<p>一応RFCでは「quoted-string」は使用すべきではない(SHOULD NOT)となっていますが、プログラムで直接MTAからメールを受け取るとき(.forward でメールを取り込むプログラムを動かすときなど)、まれに「quoted-string」をもったメールアドレスで配送されるので完全には無視できないですね。どうやらpostfixの設定によっては、docomoのドットの連続するメールアドレスのメールを転送するときなどにダブルクォーテーションを追加するようです。(一回これでハマりました)</p>
<p>「local-part」の3つ目、「obs-local-part」は「4.4.  Obsolete Addressing」セクションで以下のように定義されています。</p>
<blockquote><pre>
   obs-local-part  =   word *("." word)

   word            =   atom / quoted-string

   atom            =   [CFWS] 1*atext [CFWS]
</pre></blockquote>
<ul>
<li>「obs-local-part」とは、「word」で、その後に「.」と「word」のセットが0個以上連結する。</li>
<li>「word」とは、「atom」また「quoted-string」である。</li>
<li>「atom」とは、1文字以上の「atext」である。ただしその前後に「CFWS」を置くことができる。</li>
</ul>
<p>このあたりで古いRFCまでカバーできるようになっているようです。上記定義によると「dot.".."@ana-kutsu.com」のようなメールアドレスもOKということになりますね。</p>
<p>ふぅ、これで「local-part」の定義終わり。</p>
<p>「domain」に含まれる「domain-literal」は最初に挙げた「3.4.1.  Addr-Spec Specification」および「4.4.  Obsolete Addressing」セクションで以下のように定義されています。</p>
<blockquote><pre>
   domain-literal  =   [CFWS] "[" *([FWS] dtext) [FWS] "]" [CFWS]

   dtext           =   %d33-90 /          ; Printable US-ASCII
                       %d94-126 /         ;  characters not including
                       obs-dtext          ;  "[", "]", or "\"

   obs-dtext       =   obs-NO-WS-CTL / quoted-pair
</pre></blockquote>
<ul>
<li>「domain-literal」とは、0個以上の「dtext」である。ただし「dtext」の前に「FWS」を置くことができ、最後の「dtext」のあとには「FWS」を置くことができる。また、その前とあとに「[」「]」を置くことができ、さらにその前後に「CFWS」を置くことができる。</li>
<li>「dtext」とは、上記に列挙されている文字コードの範囲または「obs-dtext」である。</li>
<li>「obs-dtext」とは、「obs-NO-WS-CTL」または「quoted-pair」である。</li>
</ul>
<p>「domain」に含まれる「obs-domain」は「4.4.  Obsolete Addressing」セクションで以下のように定義されています。</p>
<blockquote><pre>
   obs-domain      =   atom *("." atom)
</pre></blockquote>
<ul>
<li>「obs-domain」とは、「atom」で、その後に「.」と「atom」のセットが0個以上連結する。</li>
</ul>
<p>これで全部定義読んだかなぁ。</p>
<p>「domain」も自由度はありますが、名前解決可能なFQDN(RFC 5321)か、「[」と「]」でくくられたIPアドレスじゃないとダメなようです。このへんはWikipedia情報です。</p>
<p>RFC 5321により長さが、「local-part」は64オクテット、「domain」は255オクテット、「addr-spec」全体で256オクテットに制限されています。</p>
<ul>
<li><a href="http://hxxk.jp/2004/10/10/1539" target="_blank">hxxk.jp - メールアドレスに使える文字</a></li>
<li><a href="http://hxxk.jp/2004/10/23/1228" target="_blank">hxxk.jp - RFC によるメールアドレスの local-part におけるピリオドの取り扱いについての考察</a></li>
<li><a href="http://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9" target="_blank">メールアドレス - Wikipedia</a></li>
<li><a href="http://www.ietf.org/rfc/rfc5321.txt" target="_blank">Simple Mail Transfer Protocol</a></li>
<li><a href="http://www.ietf.org/rfc/rfc5322.txt" target="_blank">Internet Message Format</a></li>
</ul>
]]>
    </content>
</entry>

<entry>
    <title>Cent OS 5 セットアップスクリプト</title>
    <link rel="alternate" type="text/html" href="http://www.ana-kutsu.com/laboratory/cent_os_5_setup.html" />
    <id>tag:www.ana-kutsu.com,2011:/laboratory//2.589</id>

    <published>2011-05-21T14:10:30Z</published>
    <updated>2011-05-21T15:46:46Z</updated>

    <summary>概要 普段使っているLinuxのセットアップスクリプトを公開します。 想定してい...</summary>
    <author>
        <name>あなくつ</name>
        
    </author>
    
    <category term="apache" label="Apache" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux" label="Linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mysql" label="MySQL" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="php" label="PHP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="postgres" label="Postgres" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="qmail" label="qmail" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="vpopmail" label="vpopmail" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="vsftp" label="vsftp" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.ana-kutsu.com/laboratory/">
        <![CDATA[<h4>概要</h4>
<p>普段使っているLinuxのセットアップスクリプトを公開します。</p>
<h4>想定している環境</h4>
<ul>
<li>Cent OS 5.x</li>
<li>ウィルスチェックアプリケーション: ClamAV</li>
<li>データベース: MySQL 5.0.x</li>
<li>データベース: Postgres</li>
<li>ウェブサーバー: Apache 2.2.3</li>
<li>スクリプトエンジン: PHP 5.1.6</li>
<li>FTPサーバー: vsftp</li>
<li>メールサーバー: qmail+vpopmail</li>
<li>その他のアプリケーションはデフォルトのまま使用</li>
</ul>
]]>
        <![CDATA[<h4>ダウンロード</h4>
<p><a href="http://www.ana-kutsu.com/laboratory/data/centos5_setup.zip" title="「Cent OS 5 セットアップスクリプト」をダウンロード">Cent OS 5 セットアップスクリプトをダウンロード</a> (Size:16KB)</p>
<h4>利用条件</h4>
<ul>
<li>どなたも無料で利用できますが、一切サポート・保証なしです。サーバーがおかしくなっても知りません。</li>
</ul>
<h4>はじめに</h4>
<ul>
<li>サーバーのセットアップは、<a href="http://centossrv.com/" target="_blank">CentOSで自宅サーバー構築</a>を参考にしています。このサイトの内容から、自分のサーバーでいつもセットアップしているものを自動化したものです。</li>
<li class="red">まず、最初にスクリプトの内容を確認して、自分の環境に合わせてから実行してください。</li>
<li class="red">それと、なにかセキュリティにヤバいところなどがありましたら、こっそり教えてください(笑)</li>
</ul>

<h4>解説</h4>

<h5>22-29行</h5>
<blockquote><pre>
#   architecture ( x86_64 / i386 )
SERVER_ARCH='x86_64'
#   hostname
SERVER_HOSTNAME='www.example.com'
#   ip
SERVER_IP='999.999.999.999'
#   mail
SERVER_EMAIL_ROOT='root@example.com'
</pre></blockquote>
<p>「SERVER_ARCH」はRPMファイルのファイル名の一部に使用しているだけです。「SERVER_HOSTNAME」はhostnameとApacheのウェブページのドメインに使用します。「SERVER_IP」はApacheの設定ファイルに使用しています。「SERVER_EMAIL_ROOT」はメールエイリアスとApacheの設定ファイルに使用しています。</p>

<h5>31-32行</h5>
<blockquote><pre>
# useradd
FILE_USERADD='useradd.txt'
</pre></blockquote>
<p>「FILE_USERADD」は追加するユーザーの一覧ファイルを指定します。「useradd.txt」には1行に1ユーザーを記述し、[ユーザー名][SP][ホームディレクトリ][SP][パスワード]を指定します。例:</p>
<blockquote><pre>
username /home/dir password
</pre></blockquote>

<h5>35-36行</h5>
<blockquote><pre>
#   rpmforge (check latest : http://packages.sw.be/rpmforge-release/ )
FILE_RPM_FORGE=&quot;rpmforge-release-0.5.2-2.el5.rf.${SERVER_ARCH}.rpm&quot;
</pre></blockquote>
<p>「FILE_RPM_FORGE」は追加のリポジトリです。ClamAVをyumでインストールするために使用しています。「check latest」のURLから最新版をダウンロードしておき、ファイル名を指定します。</p>

<h5>38-39行</h5>
<blockquote><pre>
# iptables
FILE_IPTABLES_CONF='iptables.sh'
</pre></blockquote>
<p>「FILE_IPTABLES_CONF」はiptablesを設定するときのスクリプトファイルを指定します。rootのホームディレクトリにコピーして実行するだけです。「iptables.sh」の中身は自分のサーバーに合わせて変更してください。適切に設定しないと、<span class="red">最悪の場合、SSHでログインできなくなります。</span></p>

<h5>41-43行</h5>
<blockquote><pre>
# Clam AntiVirus
FILE_CLAMD_CONF='clamd.conf'
FILE_FRESHCLAM_CONF='freshclam.conf'
</pre></blockquote>
<p>「FILE_CLAMD_CONF」はClamAVの設定ファイルで、/etc/にコピーします。「FILE_FRESHCLAM_CONF」はClamAVのデータベースを更新するfreshclamの設定ファイルで、/etc/にコピーします</p>

<h5>45-46行</h5>
<blockquote><pre>
# ntpd
FILE_NTPD_CONF='ntp.conf'
</pre></blockquote>
<p>「FILE_NTPD_CONF」はntpdの設定ファイルで、/etc/にコピーします。</p>

<h5>48-50行</h5>
<blockquote><pre>
FILE_MYSQL_CONF='my.cnf'
MYSQL_PASSWORD_ROOT='hogehoge'
</pre></blockquote>
<p>「FILE_MYSQL_CONF」はMySQLの設定ファイルで、/etc/にコピーします。「MYSQL_PASSWORD_ROOT」はMySQLのrootのパスワードで、データベースの初期化SQLに使用します。</p>

<h5>52-57行</h5>
<blockquote><pre>
# postgresql
POSTGRESQL_NAME='postgresql-9.0'
#   postgresql* (check latest : http://www.pgrpms.org/packages.php )
FILE_POSTGRESQL=&quot;postgresql90-9.0.4-1PGDG.rhel5.${SERVER_ARCH}.rpm&quot;
FILE_POSTGRESQL_LIBS=&quot;postgresql90-libs-9.0.4-1PGDG.rhel5.${SERVER_ARCH}.rpm&quot;
FILE_POSTGRESQL_SERVER=&quot;postgresql90-server-9.0.4-1PGDG.rhel5.${SERVER_ARCH}.rpm&quot;
</pre></blockquote>
<p>「POSTGRESQL_NAME」はインストール後のPostgreSQLの実行ファイル名です。自動起動の設定で使用します。「FILE_POSTGRESQL」「FILE_POSTGRESQL_LIBS」「FILE_POSTGRESQL_SERVER」はPostgreSQLのインストーラーRPMのファイル名です。(yumで入るPostgreSQLのバージョンが古いので、RPMをダウンロード・インストールしています)</p>

<h5>59-60行</h5>
<blockquote><pre>
# httpd
FILE_HTTPD_CONF='httpd.conf'
</pre></blockquote>
<p>「FILE_HTTPD_CONF」はApacheの設定ファイルで、/etc/にコピーします。おそらく多くの場合はウェブサーバーにセットアップされると思いますので、「httpd.conf」の中身はオリジナルにカスタマイズすればいいでしょう。</p>

<h5>62-63行</h5>
<blockquote><pre>
# php
FILE_PHP_CONF='php.ini'
</pre></blockquote>
<p>「FILE_PHP_CONF」はPHPの設定ファイルで、/etc/にコピーします。PHPのお助け機能(?)みたいなもの(magic_quotes_gpcとか)は、余計なおせっかいだと思っているので無効にしてあります。必要に応じてカスタマイズしてください。</p>

<h5>65-66行</h5>
<blockquote><pre>
# vsftpd
FILE_VSFTPD_CONF='vsftpd.conf'
</pre></blockquote>
<p>「FILE_VSFTPD_CONF」はvsftpdの設定ファイルで、/etc/にコピーします。「user_list」ファイルをログインを許可するリストとして使用するよう設定しているので、必要に応じてカスタマイズしてください。</p>

<h5>68-86行</h5>
<blockquote><pre>
# qmail
#   qmail (check latest : http://cr.yp.to/qmail.html )
FILE_QMAIL='qmail-1.03.tar.gz'
#   qmail-date-localtime (check latest : http://www.google.com/search?q=qmail-date-localtime )
FILE_QMAIL_DATE_LOCALTIME='qmail-date-localtime.patch'
#   qmail-smtpd-auth (check latest : http://tomclegg.net/qmail/#qmail-smtpd-auth )
FILE_QMAIL_SMTPD_AUTH='qmail-smtpd-auth-0.31.tar.gz'
#   qmail-smtpd-relay-reject (check latest : http://qmail.mirrors.summersault.com/ )
FILE_QMAIL_SMTPD_RELAY_REJECT='qmail-smtpd-relay-reject'
#   checkpassword (check latest : http://cr.yp.to/checkpwd/install.html )
FILE_CHECKPASSWORD='checkpassword-0.90.tar.gz'
#   ucspi-tcp (check latest : http://cr.yp.to/ucspi-tcp/install.html )
FILE_UCSPITCP='ucspi-tcp-0.88.tar.gz'
#   fastforward (check latest : http://cr.yp.to/fastforward.html )
FILE_FASTFORWARD='fastforward-0.51.tar.gz'
#   vpopmail (check latest : http://sourceforge.net/project/showfiles.php?group_id=85937&amp;package_id=89104)
FILE_VPOPMAIL='vpopmail-5.4.32.tar.gz'
#   qmail-control-script
FILE_QMAIL_CONT='qmail'
</pre></blockquote>
<p>qmailはソースコードからコンパイルしているので、必要なファイルをそれぞれダウンロード・指定しています。パッチや追加プログラムは必要に応じてカスタマイズしてください。</p>

<h5>88-574行</h5>
<p>セットアップの要、処理プログラムです。中身見てなにしているかチェックしたほうがいいと思います。</p>

<h5>576-602行</h5>
<blockquote><pre>
echo '#************************************************'
echo '# [start] other'
echo ''

# mysql
sed -e &quot;s/MYSQL_PASSWORD_ROOT/${MYSQL_PASSWORD_ROOT}/&quot; mysql.sql &gt; mysql.sql.gen
mysql -u root &lt; mysql.sql.gen

# vsftp
echo '' &gt; /etc/vsftpd/user_list

# cron
# daily backup
sed -e &quot;s/MYSQL_PASSWORD_ROOT/${MYSQL_PASSWORD_ROOT}/&quot; backup.sh &gt; /etc/cron.daily/backup.sh
chmod 700 /etc/cron.daily/backup.sh
# daily scan
cp clamscan /etc/cron.daily/
chmod 700 /etc/cron.daily/clamscan
# monthly logrotate
cp log_apache.sh /etc/cron.monthly/
chmod 700 /etc/cron.monthly/log_apache.sh
# monthly dump every site
sed -e &quot;s/MYSQL_PASSWORD_ROOT/${MYSQL_PASSWORD_ROOT}/&quot; dump_mysql.sh &gt; /etc/cron.daily/dump_mysql.sh
chmod 700 /etc/cron.monthly/dump_mysql.sh

# cleanup yum
yum-complete-transaction -y
</pre></blockquote>
<p>セットアップスクリプトの最後の処理部分です。</p>
<p>「# mysql」はサンプルデータベースの削除やパスワードの設定などを行います。</p>
<p>「# vsftp」はvsftp用にからのユーザーリストファイルを作成しているだけです。</p>
<p>「# daily backup」は日毎のデータベースバックアップのスクリプト「backup.sh」をコピーしています。PostgreSQLのバックアップ処理が入ってません。</p>
<p>「# daily scan」は毎日ウィルスチェックを行うスクリプトをコピーしています。</p>
<p>「# monthly logrotate」はApacheのログファイルローテーションスクリプトです。一緒に添付されているhttpd.confの場合、バーチャルホスト毎にログファイルが作成されるので、それらを月毎にファイル分割します。</p>
<p>「# monthly dump every site」はMySQLのデータベースをサイトごとにダンプするスクリプトをコピーしています。</p>
<p>「# cleanup yum」はセットアップ中に何らかの原因でyumが強制停止した場合、中途半端なトランザクション情報が残るので、それをクリーンアップしているだけです。</p>

<h5>実行時</h5>
<p>_setup.shに実行権限を与えて実行するのですが、標準出力とエラー出力をファイルにリダイレクトしておきましょう。</p>
<blockquote><pre>
./_setup.sh &gt;_log 2&gt;&amp;1
</pre></blockquote>
<p>実行完了後にログを確認して正常に完了したかチェックします。なにか問題があれば、該当部分だけ手動で再セットアップします。</p>

<h5>終わったら</h5>
<p>ひと通りセットアップが終わって、動作確認ができたら、特定ユーザーをWheelグループに追加して、rootになれるユーザーを制限しておきましょう。</p>
<h4>更新履歴</h4>
<ul>
<li>[2011/05/21] 公開</li></ul>
</ul>
<h4>参考</h4>
<ul>
<li><a href="http://centossrv.com/" target="_blank">CentOSで自宅サーバー構築</a></li>
</ul>
]]>
    </content>
</entry>

<entry>
    <title>radiko.jp視聴区域外用リピーター</title>
    <link rel="alternate" type="text/html" href="http://www.ana-kutsu.com/laboratory/radikojp.html" />
    <id>tag:www.ana-kutsu.com,2010:/laboratory//2.552</id>

    <published>2010-04-16T18:14:04Z</published>
    <updated>2010-04-19T08:05:42Z</updated>

    <summary>お知らせ 度重なるDoS攻撃を受けたため停止しました。またradiko.jp側で...</summary>
    <author>
        <name>あなくつ</name>
        
    </author>
    
    <category term="proxy" label="Proxy" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="radiko" label="radiko" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="stone" label="stone" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="プロキシ" label="プロキシ" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="リピーター" label="リピーター" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="区域外" label="区域外" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="視聴" label="視聴" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.ana-kutsu.com/laboratory/">
        <![CDATA[<h4 class="red">お知らせ</h4>
<p class="red">度重なるDoS攻撃を受けたため停止しました。またradiko.jp側でも対策されてしまったようです。</p>
<h4>概要</h4>
<p>radiko.jpで配信されているサイマル放送を視聴区域外から試聴するためのリピーター。</p>
<h4>利用方法</h4>
<p>「%SystemRoot%\System32\drivers\etc\hosts」に下記の内容を追加します。</p>
<ul>
<li>183.181.170.120 radiko.smartstream.ne.jp</li>
<li>183.181.170.120 radiko.jp</li>
</ul>
<p>上記設定後、ブラウザを再起動し、通常通り<a href="http://radiko.jp/" target="_blank">radiko.jp</a>へアクセスすると、サービス提供区域内のページが表示されます。</p>
<p>※ Windows以外のプラットフォームでも同様にhostsファイルを編集すれば利用可能です。</p>
<h4>利用条件</h4>
<ul>
<li>どなたも無料で利用できますが、一切サポート・保証なしです。</li>
<li>ネットワーク帯域・接続数など一切制限していません。そのため、転送が不安定になったり、接続不能になったりする可能性があります。</li>
<li>radiko.jp側が何らかの制限を行った場合、必然的にサービスは終了します。</li>
<li>リピーターサーバーはレンタルのため、転送量過多など外部への悪影響が見られる場合はサービスを停止します。</li>
</ul>
]]>
        <![CDATA[<h4>仕組み</h4>
<ul>
<li>リピーターはTCP/UDPリピーターでは大変有名な<a href="http://www.gcd.org/sengoku/stone/Welcome.ja.html" target="_blank">stone</a>を利用させてもらっています。</li>
<li>サーバーは<a href="http://dream.jp/vps_promo/" target="_blank">ServersMan@VPS</a>です。</li>
</ul>
<h4>過程</h4>
<ul>
<li>実はradiko.jpの試験放送が開始されてから激安VPSを踏み台に仕立てて視聴しようと画策していました。が、<a href="http://yutori.2ch.net/test/read.cgi/am/1271180141/84" target="_blank">みんな同じこと考えていた</a>ようです。しかも先を越された。ざんねん。</li>
<li>最初はプロキシでもイケるかなと思ったのですが、プレーヤーがFlash製でブラウザのプロキシ設定にしたがってくれないそうなので却下になりました。</li>
<li>次にOpenVPNを立てようと思ったのですが、ServersMan@VPSでは仮想デバイスtunが利用できず断念しました。</li>
<li>ならばとPPTPサーバーを立てようと思ったのですが、カーネルにpppモジュールが組み込まれていずこちらも断念になってしまいました。どうやらServersMan@VPSではVPNの手段を提供していないようです。</li>
<li>で、最終的にはstoneを利用することになったわけです。</li>
</ul>
<h4>更新履歴</h4>
<ul>
<li>[2010/04/19] DoS攻撃のため停止</li>
<li>[2010/04/17] Version1.0公開</li>
</ul>
<h4>参考</h4>
<ul>
<li><a href="http://www.gcd.org/sengoku/stone/Welcome.ja.html" target="_blank">Simple Repeater 'stone'</a></li>
<li><a href="http://dream.jp/vps_promo/" target="_blank">ServersMan@VPS仮想専用サーバーサービス：ユビキタスプロバイダ DTI</a></li>
</ul>

]]>
    </content>
</entry>

<entry>
    <title>クラスタリング アプリケーション</title>
    <link rel="alternate" type="text/html" href="http://www.ana-kutsu.com/laboratory/agglomerative_clustering.html" />
    <id>tag:www.ana-kutsu.com,2007:/laboratory//2.8</id>

    <published>2007-12-10T15:00:00Z</published>
    <updated>2008-09-06T12:02:17Z</updated>

    <summary> 概要 属性ベクトル(要素が数値で表現されるベクトル)を階層的手法を用いてクラス...</summary>
    <author>
        <name>あなくつ</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.ana-kutsu.com/laboratory/">
        <![CDATA[ <h4>概要</h4>
<p>属性ベクトル(要素が数値で表現されるベクトル)を階層的手法を用いてクラスタリングするためのアプリケーション。</p>
<h4>ダウンロード</h4>
<p><a href="http://www.ana-kutsu.com/laboratory/data/agglomerative_clustering.zip" title="「クラスタリング アプリケーション」のアプリケーションをダウンロード">アプリケーションをダウンロード</a> (Size:335KB)</p>
<p><a href="http://www.ana-kutsu.com/laboratory/data/agglomerative_clustering_source.zip" title="「クラスタリング アプリケーション」のソースコードをダウンロード">ソースコードをダウンロード</a> (Size:13KB)</p>
]]>
        <![CDATA[<h4>開発環境</h4>
<ul>
 <li>Windows XP Professional SP2</li>
 <li>Borland Delphi 7 Professional</li>
</ul>
<h4>コンパイル条件</h4>
<ul>
 <li>Borland Delphi 7</li>
</ul>
<h4>動作環境</h4>
<ul>
 <li>Windows 98/Me/2000/XP<br />
(Vistaではインターフェースの表示に問題が出る可能性があります)</li>
</ul>
<h4>スクリーンショット</h4>
<h5>メインウィンドウ</h5>
<p><a href="http://www.ana-kutsu.com/laboratory/data/agglomerative_01_full.jpg" target="_blank"><img src="http://www.ana-kutsu.com/laboratory/data/agglomerative_01.jpg" alt="メインウィンドウ" width="175" height="125" /></a></p>
<h4>使用方法</h4>
<ol>
 <li>アプリケーションを起動します。</li>
 <li>ウィンドウ上部のテキストボックスにクラスタリング対象のファイルを指定します。または、テキストボックス右の「...」ボタンから「ファイルを開く」ダイアログを表示し、ファイルを選択します。</li>
 <li>必要に応じてパラメーターを設定します。(Clusterは目的のクラスタ数 / Demensionはベクトルの次元数 / Offsetは各レコードにおけるベクトルデータの開始位置)</li>
 <li>クラスタリング時に使用するクラスタ間の距離関数を選択します。</li>
 <li>「Process」ボタンから処理を開始します。</li>
</ol>
<p>入力可能なファイルの内容はCSVファイルのみです。</p>
<p>パラメータDemensionとOffsetは、ファイル中にベクトル以外のデータが含まれる場合それらをクラスタ間距離の計算の対象にしないために設けています。</p>
<p>このアプリケーションは実行速度は意識されていません。階層的クラスタリングはデータ数に応じて指数的に実行時間が増加するため、処理が終了するまでに時間がかかる可能性があります。</p>
<h4>ライセンス</h4>
<p>改変自由。どなたも無料で利用できます。</p>
<p>本データを使用したことによるいかなるトラブルも保障しません。自己責任にてご利用ください。</p>
<h4>更新履歴</h4>
<ul>
 <li>[2007/12/11] Version1.0公開</li>
</ul>
<h4>参考</h4>
<ul>
 <li><a href="http://www.kamishima.net/jp/clustering/" target="_blank">クラスタリングとは (クラスター分析とは)</a></li>
</ul>
<p>クラスタリングの概念や知識は、ウェブ上に多く公開されていますので、他のサイトを参考にしてください。</p>
]]>
    </content>
</entry>

<entry>
    <title>家紋『丸に違い鷹の羽』データ</title>
    <link rel="alternate" type="text/html" href="http://www.ana-kutsu.com/laboratory/kamon.html" />
    <id>tag:www.ana-kutsu.com,2007:/laboratory//2.7</id>

    <published>2007-03-01T15:00:00Z</published>
    <updated>2008-09-06T12:04:17Z</updated>

    <summary> 概要 家紋「丸に違い鷹の羽」(まるにちがいたかのは)のデータ。ファイル形式はE...</summary>
    <author>
        <name>あなくつ</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.ana-kutsu.com/laboratory/">
        <![CDATA[ <h4>概要</h4>
<p>家紋「丸に違い鷹の羽」(まるにちがいたかのは)のデータ。ファイル形式はEMF、EPS、PDF、BMP。</p>
<h4>ダウンロード</h4>
<p><a href="http://www.ana-kutsu.com/laboratory/data/kamon.zip" title="「家紋『丸に違い鷹の羽』データ」のファイルをダウンロード">ファイルをダウンロード</a> (Size:239KB)</p>]]>
        <![CDATA[<h4>サムネイル</h4>
<p><a href="http://www.ana-kutsu.com/laboratory/data/kamon_01_full.jpg" target="_blank"><img src="http://www.ana-kutsu.com/laboratory/data/kamon_01.jpg" alt="丸に違い鷹の羽" width="100" height="100" /></a></p>
<h4>表記ゆれ</h4>
<ul>
 <li>丸に違い鷹の羽</li>
 <li>丸に違い鷹羽</li>
 <li>まるにちがいたかのは</li>
 <li>まるにちがいたかのはね</li>
</ul>
<h4>ライセンス</h4>
<p>著作権フリーです。改変自由。どなたも無料で利用できます。</p>
<p>本データを使用したことによるいかなるトラブルも保障しません。自己責任にてご利用ください。</p>
<h4>更新履歴</h4>
<ul>
 <li>[2007/03/02] Version1.1公開</li>
 <li>[2007/02/13] Version1.0公開</li>
</ul>
]]>
    </content>
</entry>

<entry>
    <title>MovableTypeプラグイン『akAssociatedAccess』</title>
    <link rel="alternate" type="text/html" href="http://www.ana-kutsu.com/laboratory/akaa.html" />
    <id>tag:www.ana-kutsu.com,2008:/laboratory//2.6</id>

    <published>2007-02-28T15:00:00Z</published>
    <updated>2008-09-06T12:05:12Z</updated>

    <summary> 概要 複数行の変数を連想配列のように読み取るためのグローバルフィルタータイプの...</summary>
    <author>
        <name>あなくつ</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.ana-kutsu.com/laboratory/">
        <![CDATA[ <h4>概要</h4>
<p>複数行の変数を連想配列のように読み取るためのグローバルフィルタータイプのMovable Typeプラグイン。カテゴリの並べ順を固定しつつカテゴリ別に値を関連付ける用途に使用できます。複数行変数を利用するため関連付ける値の数に制限がありません。カテゴリごとに画像サイズやスタイルを設定することが可能になります。Movable TypeをCMSツールのように使用するなどの用途に最適です。</p>
<h4>ダウンロード</h4>
<p><a href="http://www.ana-kutsu.com/laboratory/data/akaa.zip" title="「MovableTypeプラグイン『akAssociatedAccess』」のファイルをダウンロード">ファイルをダウンロード</a> (Size:0.5KB)</p>]]>
        <![CDATA[<h4>動作内容</h4>
<p>　カテゴリの概要(MTCategoryDescription)などの複数行変数に対して、連想配列のようにキーを指定して値へアクセスします。複数行変数には各行の最初にキーが設定されているもののとし、キーを指定して呼び出された際には複数行変数内からキーを検索し、キーが見つかった行のキー以外の部分を返します。</p>
<h4>インストール方法</h4>
<p>Movable Typeのディレクトリ内のpluginsディレクトリにコピーします。</p>
<h4>使用方法</h4>
<p>以下具体例を元に説明します。ここでは複数行変数としてカテゴリの概要(MTCategoryDescription)を利用します。</p>
<ol>
 <li>カテゴリの詳細設定ページを開きます。</li>
 <li>下の画像のように概要テキストボックスに[キー名]:(コロン)[値]の順で各行へ入力します。キー名と値は任意に設定できます。<br />
<a href="http://www.ana-kutsu.com/laboratory/data/akaa_01_full.jpg" target="_blank"><img src="http://www.ana-kutsu.com/laboratory/data/akaa_01.jpg" alt="概要への入力画面" width="400" height="300" /></a></li>
 <li>テンプレートの編集ページを開きます。</li>
 <li>下の画像のように保存した値を挿入したい部分に&lt;$MTCategoryDescription akaa="[キー名]"$&gt;と入力します。<br />
<a href="http://www.ana-kutsu.com/laboratory/data/akaa_02_full.jpg" target="_blank"><img src="http://www.ana-kutsu.com/laboratory/data/akaa_02.jpg" alt="テンプレートへの入力画面" width="400" height="300" /></a></li>
 <li>再構築して、プラグインが動作していることを確認します。</li>
</ol>
<h4>ライセンス</h4>
<p>改変自由。どなたも無料で利用できます。</p>
<p>本データを使用したことによるいかなるトラブルも保障しません。自己責任にてご利用ください。</p>
<h4>更新履歴</h4>
<ul>
 <li>[2007/03/01] Version1.0公開</li>
</ul>
]]>
    </content>
</entry>

<entry>
    <title>Gemtek Radio 21用アプリケーション</title>
    <link rel="alternate" type="text/html" href="http://www.ana-kutsu.com/laboratory/radio.html" />
    <id>tag:www.ana-kutsu.com,2007:/laboratory//2.5</id>

    <published>2007-01-21T15:00:00Z</published>
    <updated>2008-09-06T12:03:13Z</updated>

    <summary> 概要 Gemtek社製Radio 21を操作するアプリケーション。電源と選局の...</summary>
    <author>
        <name>あなくつ</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.ana-kutsu.com/laboratory/">
        <![CDATA[ <h4>概要</h4>
<p>Gemtek社製Radio 21を操作するアプリケーション。電源と選局のみをコントロールするシンプルなアプリケーション。</p>
<h4>ダウンロード</h4>
<p><a href="http://www.ana-kutsu.com/laboratory/data/radio.zip" title="「Gemtek Radio 21用アプリケーション」のアプリケーションをダウンロード">アプリケーションをダウンロード</a> (Size:335KB)</p>
<p><a href="http://www.ana-kutsu.com/laboratory/data/radio_source.zip" title="「Gemtek Radio 21用アプリケーション」のソースコードをダウンロード">ソースコードをダウンロード</a> (Size:13KB)</p>
]]>
        <![CDATA[<h4>開発環境</h4>
<ul>
 <li>Windows XP Professional SP2</li>
 <li>Borland Delphi 7 Professional</li>
</ul>
<h4>コンパイル条件</h4>
<ul>
 <li>Borland Delphi 7 Professional / Enterprise</li>
 <li>外部コンポーネント「<a href="http://cc.codegear.com/Item.aspx?id=19151" target="_blank">Delphi 7.0 ActionBands Patch (all languages)</a>」</li>
 <li>外部コンポーネント「<a href="http://hpcgi2.nifty.com/t-katochin/wiki/wiki.cgi?p=%BC%EA%BA%EE%A4%EA%C9%F4%C9%CA" target="_blank">TrayIconコンポーネント ver1.18</a>」</li>
</ul>
<h4>動作環境</h4>
<ul>
 <li>Windows 98/Me/2000/XP</li>
 <li>Gemtek Radio 21<br />
(ドライバが正常にインストールされていること)</li>
</ul>
<p>Radio 21の他にD-LINK社製DSB-R100も利用できるかもしれません(未確認)。さらにシリアルポート接続タイプのFMラジオである、ラジオン丸やらじこまも利用できるかもしれません(未確認)。</p>
<h4>スクリーンショット</h4>
<h5>選局</h5>
<p><a href="http://www.ana-kutsu.com/laboratory/data/radio_01_full.jpg" target="_blank"><img src="http://www.ana-kutsu.com/laboratory/data/radio_01.jpg" alt="選局" width="110" height="75" /></a><br />
通常時はタスクトレイで起動しています。アイコンをクリックし、メニューから放送局を選択することで選局を行います。</p>
<h5>設定ウィンドウ</h5>
<p><a href="http://www.ana-kutsu.com/laboratory/data/radio_02_full.jpg" target="_blank"><img src="http://www.ana-kutsu.com/laboratory/data/radio_02.jpg" alt="設定ウィンドウ" width="135" height="152" /></a><br />
このウィンドウで放送局のプリセットを設定します。</p>
<h4>ライセンス</h4>
<p>GPLとします。</p>
<p>本データを使用したことによるいかなるトラブルも保障しません。自己責任にてご利用ください。</p>
<h4>更新履歴</h4>
<ul>
 <li>[2007/01/22] Version1.0公開</li>
</ul>
<h4>参考</h4>
<ul>
 <li><a href="http://drivermagic.com/p/nph-detail.php?a=3017" target="_blank">drivermagic.com: usb_FM_beta.zip</a></li>
</ul>
<p>Radio 21のインストール時に作成されるradio.dllの関数リファレンスが公開されています。このアプリケーションはこのDLLを呼び出すことで動作しています。また、DLLのリファレンスの他に、USB通信のプロトコルも公開されています。これを参照すればハードウェアと直接通信できるかもしれません。</p>
]]>
    </content>
</entry>

</feed>

