<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>りっぷる開発記録</title>
    <link rel="alternate" type="text/html" href="http://kaihatsu.mikagamikobo.com/" />
    <link rel="self" type="application/atom+xml" href="http://kaihatsu.mikagamikobo.com/atom.xml" />
    <id>tag:kaihatsu.mikagamikobo.com,2008-10-17://1</id>
    <updated>2010-08-07T08:22:21Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.21-ja</generator>

<entry>
    <title>LinuxにJDKとTomcatをインストール</title>
    <link rel="alternate" type="text/html" href="http://kaihatsu.mikagamikobo.com/2010/08/linuxjdktomcat.html" />
    <id>tag:kaihatsu.mikagamikobo.com,2010://1.301</id>

    <published>2010-08-07T07:44:28Z</published>
    <updated>2010-08-07T08:22:21Z</updated>

    <summary>Red Hat Enterprise Linux 4(32bit)にJDKとTo...</summary>
    <author>
        <name>りっぷる</name>
        
    </author>
    
        <category term="java" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="linuxjava" label="Linux java" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kaihatsu.mikagamikobo.com/">
        <![CDATA[Red Hat Enterprise Linux 4(32bit)にJDKとTomcatをインストールする。<br /><br />まずは、JDKのインストール。<br /><br /><a href="http://java.sun.com/javase/ja/6/download.html">http://java.sun.com/javase/ja/6/download.html</a><br /><br />「JDKダウンロード」で英語ページに移動したのち「Download」。<br /><br />Platformに「Linux」を選択して「Continue」。<br /><br />ダウンロード用URLが表示されるので、コピーしてwget。<br /><br />今回使うのは、これ。<br />jdk-6u21-linux-i586-rpm.bin<br /><br />ダウンロードしたファイル名は非常に長いので、リネームしておく。<br />ファイルに実行権限を付与して実行する。<br /><br /><blockquote># wget (コピーしたURL)<br /># mv (非常に長いファイル名) jdk-6u21-linux-i586-rpm.bin<br /># chmod +x jdk-6u21-linux-i586-rpm.bin<br /># ./ jdk-6u21-linux-rpm.bin<br /></blockquote><br /><br />正常にインストールできているか確認する。<br /><br /><blockquote># java -version<br />java version "1.6.0_21"<br />Java(TM) SE Runtime Environment (build 1.6.0_21-b06)<br />Java HotSpot(TM) Client VM (build 17.0-b16, mixed mode, sharing)<br /></blockquote><br /><br />ちなみに、Platformでx64用を選択してインストールしようとしたら、ファイルがない系のエラーが出た。<br /><br /><br /><br />続いてTomcatのインストール。<br /><br /><a href="http://tomcat.apache.org/">http://tomcat.apache.org/</a><br /><br />現在、Stableな最新版が6.0系なので、これをインストールすることにする。<br /><br />6.0系のダウンロードページのBinary Distributionsから、Coreのtar.gzをwgetする。<br />それから、tar解凍してインストール先に移動させてシンボリックリンクを設定。<br /><br />インストール先は、これ。<br />/usr/local/tomcat/<br /><br /><blockquote># cd /usr/src<br /># wget http://www.meisei-u.ac.jp/mirror/apache/dist/tomcat/tomcat-6/v6.0.29/bin/apache-tomcat-6.0.29.tar.gz<br /># tar xvzf apache-tomcat-6.0.29<br /># mv apache-tomcat-6.0.29 /usr/local<br /># cd /usr/local<br /># ln -s apache-tomcat-6.0.29 tomcat<br /># ls -la tomcat<br />lrwxrwxrwx 1 root root 20 Aug&nbsp; 7 16:15 tomcat -&gt; apache-tomcat-6.0.29<br /></blockquote><br /><br />Tomcatを実行するための専用ユーザーを作っておく。<br />rootユーザーなんかで起動してしまうと、Tomcat経由でシステム全体に被害が及びかねないので、関係ないファイルには触れないようにする。<br /><br />ユーザー名、グループ名はどちらも「tomcat」にする。<br />ホームディレクトリは、Tomcatのインストール先。<br />/usr/local/tomcat<br /><br />ディレクトリのオーナーを変更。<br /><blockquote># chown -R tomcat.tomcat /usr/local/tomcat/<br /></blockquote><br /><br />あとは、設定を調整しておく。<br /><br />/usr/local/tomcat/bin/catalina.shにJAVA_HOMEを設定する。<br /><blockquote>JAVA_HOME=/usr/java/latest<br /></blockquote><br />自動起動スクリプトも作っておく。<br />/etc/init.d/tomcat<br /><blockquote>#!/bin/sh<br />#<br /># Startup script for Apache Tomcat 6.0<br />#<br /># chkconfig: 2345 85 15<br /># description: Apache Tomcat Java Servlets and JSP server<br /># processname: tomcat<br /># pidfile: /var/run/tomcat.pid<br /># config: /usr/local/tomcat/conf/server.xml<br /><br /># Source function library.<br />. /etc/rc.d/init.d/functions<br /><br /># Source networking configuration.<br />. /etc/sysconfig/network<br /><br />CATALINA_HOME=/usr/local/tomcat<br />TOMCAT_SCRIPT=$CATALINA_HOME/bin/catalina.sh<br />TOMCAT_USER=tomcat<br /><br />[ -f $TOMCAT_SCRIPT ] || exit 0<br /><br /># See how we were called.<br />case "$1" in<br />&nbsp;&nbsp;&nbsp; start)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Start daemons.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if [ -f /var/lock/subsys/tomcat ] ; then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "Tomcat already started!"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit 1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fi<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo -n "Starting Tomcat: "<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; su -s /bin/bash - $TOMCAT_USER -c "$TOMCAT_SCRIPT start"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RETVAL=$?<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ $RETVAL = 0 ] &amp;&amp; touch /var/lock/subsys/tomcat<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;<br />&nbsp;&nbsp;&nbsp; stop)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # Stop daemons.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if [ ! -f /var/lock/subsys/tomcat ] ; then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "Tomcat already stopped!"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit 1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fi<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo -n "Shutting down Tomcat: "<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $TOMCAT_SCRIPT stop<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RETVAL=$?<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ $RETVAL = 0 ] &amp;&amp; rm -f /var/lock/subsys/tomcat<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;<br />&nbsp;&nbsp;&nbsp; status)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; status tomcat<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit $?<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;<br />&nbsp;&nbsp;&nbsp; restart)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $0 stop<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $0 start<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;<br />&nbsp;&nbsp;&nbsp; *)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "Usage: $TOMCAT_PROG {start|stop|status|restart}"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit 1<br />esac<br /><br />exit 0<br /><br /></blockquote><br />実行権限付与。<br /><blockquote># chmod +x /etc/init.d/tomcat<br /></blockquote><br />起動の確認。<br /><blockquote># /etc/init.d/tomcat start<br />Starting Tomcat: Using CATALINA_BASE:&nbsp;&nbsp; /usr/local/tomcat<br />Using CATALINA_HOME:&nbsp;&nbsp; /usr/local/tomcat<br />Using CATALINA_TMPDIR: /usr/local/tomcat/temp<br />Using JRE_HOME:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /usr/java/latest<br />Using CLASSPATH:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /usr/local/tomcat/bin/bootstrap.jar<br /></blockquote><br />停止。<br /><blockquote># /etc/init.d/tomcat stop<br /></blockquote><br /><br />最後に自動起動設定。<br /><blockquote># chkconfig tomcat on<br /># chkconfig --list tomcat<br />tomcat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0:off&nbsp;&nbsp; 1:off&nbsp;&nbsp; 2:on&nbsp;&nbsp;&nbsp; 3:on&nbsp;&nbsp;&nbsp; 4:on&nbsp;&nbsp;&nbsp; 5:on&nbsp;&nbsp;&nbsp; 6:off<br /></blockquote><br /><br />これで、完了。<br />]]>
        
    </content>
</entry>

<entry>
    <title>メール受信で php スクリプトを起動する</title>
    <link rel="alternate" type="text/html" href="http://kaihatsu.mikagamikobo.com/2009/12/post-7.html" />
    <id>tag:kaihatsu.mikagamikobo.com,2009://1.212</id>

    <published>2009-12-15T19:02:42Z</published>
    <updated>2009-12-15T19:30:26Z</updated>

    <summary>メールを受信したら、その内容を解釈して処理するための方法。処理するのは php ...</summary>
    <author>
        <name>りっぷる</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="php" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://kaihatsu.mikagamikobo.com/">
        <![CDATA[メールを受信したら、その内容を解釈して処理するための方法。<br />処理するのは php スクリプト。<br /><br />受信したメールを処理するスクリプトは hoge.php とする。<br />ホームディレクトリ直下に置いてあるものとする。<br /><br /><br />まず、ホームディレクトリにこのような .forward を作る。<br /><br />.forward<br /><blockquote>"| php hoge.php"<br /></blockquote><br />これで、メールを受けとった sendmail が、.forward の中身に沿って処理してくれる。<br />
.forward のアクセス権は、緩いと処理されない場合がある。<br />644 では動作しなかったが、 600 にしたら動いたというケースがある。<br /><br />ただし、このままだとエラーになる。<br />sendmail から起動する場合、smrsh という制限付きのシェルが立ち上がるからだ。<br />この制限のおかげで、意図せずに sendmail が動作した場合でも、ファイルが消えたりして大変なことになるのが避けられる。<br /><br />大変なことを避けられるのはよいが、制限がきつすぎて php が起動できないのは問題だ。<br />そこで、smrsh で、php を許可することにする。<br /><br />smrsh から起動できるプログラムは、以下のフォルダに格納されている。<br /><blockquote>/etc/smrsh/<br /></blockquote><br />ここに、php のシンボリックを入れておけばよい。<br />こうすれば、.forward の中で php を起動できる。<br /><br /><br />受信したメールは、PEAR :: Mail_mimeDecode を使うと便利。<br />マルチパートでないテキストのメールだったら、こんな感じで処理できる。<br /><br /><blockquote>require_once 'Mail/mimeDecode.php';<br /><br />$params = array(<br />&nbsp; 'include_bodies' =&gt; true,<br />&nbsp; 'decode_bodies'&nbsp; =&gt; true,<br />&nbsp; 'decode_headers' =&gt; true,<br />&nbsp; 'input' =&gt; file_get_contents("php://stdin"),<br />&nbsp; 'crlf' =&gt; "\r\n",<br />&nbsp; );<br />$structure = Mail_mimeDecode::decode($params);<br /><br />$from = $structure-&gt;headers['from'];<br />$to = $structure-&gt;headers['to'];<br />$subject = $structure-&gt;headers['subject'];<br /><br />switch(strtolower($structure-&gt;ctype_primary)){<br />case "text":<br />&nbsp; $body = $structure-&gt;body;<br />&nbsp; break;<br />default:<br />&nbsp; $body = "";<br />}<br /></blockquote><br />これで、メールから php スクリプトを起動できる。<br /><br /><br />ちなみに、スクリプトを起動しつつ、メールの転送もしたい、という場合はどうするか。<br />.forward に行単位で並べていけばよい。<br /><br />.forward<br /><blockquote>"| php hoge.php"<br />piyo@gmail.com<br />buhi@yahoo.co.jp<br /></blockquote>このようにしておけば、hoge.php が実行されて、さらに piyo@gmail.com と buhi@yahoo.co.jp にメールが転送される。<br />]]>
        
    </content>
</entry>

<entry>
    <title>Google App Engine のテンプレートでカスタムフィルタを使う</title>
    <link rel="alternate" type="text/html" href="http://kaihatsu.mikagamikobo.com/2009/09/google-app-engine-1.html" />
    <id>tag:kaihatsu.mikagamikobo.com,2009://1.145</id>

    <published>2009-09-15T11:59:11Z</published>
    <updated>2009-09-15T12:35:19Z</updated>

    <summary>Google App Engine のテンプレートで、カスタムフィルターを使う方...</summary>
    <author>
        <name>りっぷる</name>
        
    </author>
    
        <category term="Google App Engine" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gae" label="gae" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="python" label="python" 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://kaihatsu.mikagamikobo.com/">
        <![CDATA[Google App Engine のテンプレートで、カスタムフィルターを使う方法。<br /><br />フォルダ構成はこんな感じ。<br /><br /><blockquote>root<br />│&nbsp; app.yaml<br />│ &nbsp;<br />├─apps<br />│&nbsp; │&nbsp; __init__.py<br />│&nbsp; │ &nbsp;<br />│&nbsp; └─frontend<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; main.py<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; __init__.py<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │ &nbsp;<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─lib<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; custom_filters.py<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; __init__.py<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─template<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; index.html<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; show.html<br />│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />└─lib<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; model.py<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; __init__.py<br /></blockquote><br /><br />カスタムフィルターは、apps.frontend.lib.custom_filters モジュールに定義されている。<br />リクエストハンドラは、apps.frontend.main モジュールの中。<br /><br />まずは、テンプレートライブラリにカスタムフィルタのモジュールを登録する。<br /><br />apps/frontend/main.py<br /><blockquote>from google.appengine.ext.webapp import template<br />webapp.template.register_template_library('apps.frontend.lib.custom_filters')<br /></blockquote><br />そして、カスタムフィルタモジュールの中で、フィルタを登録する。<br /><br />apps/frontend/lib/custom_fliters.py<br /><blockquote>from google.appengine.ext import webapp<br />register = webapp.template.create_template_register()<br /><br />@register.filter<br />def append(value, arg):<br />&nbsp;&nbsp;&nbsp; return value + arg<br /></blockquote><br />これで、カスタムフィルタの準備は完了。<br />テンプレートでいきなり使える。<br /><br />テンプレート内で load タグを使う必要はない。<br /><br /><br />ふ～・・・<br />長かった。<br /><br />Django と gae のカラミがいまいちよく分からない。<br /><br />カスタムフィルタを使う方法を探していたら、Django の設定をハッキングするような手法が数多く見つかった。<br />ひととおり試したが、どれもうまくいかなかった。<br /><br />ここで上げた方法は、動作はしたが、実行パフォーマンスにムダがある。<br />不要なときであってもカスタムフィルタをロードしてしまう。<br />リクエストハンドラの中で、いちいち必要なフィルタモジュールだけを登録する、という方法も考えられるが、それだとコントローラとビューの分離がアヤしくなってくる。<br /><br />Django では、テンプレート中に load タグを使えば、この問題は避けられる。<br />GAE には、この load タグに相当するような方法が用意されているのだろうか。<br /><br /><br />逆引き辞書的なモノが欲しくなってくるね。<br />Ruby レシピブックみたいな。<br />]]>
        
    </content>
</entry>

<entry>
    <title>XREAでPEARを使う</title>
    <link rel="alternate" type="text/html" href="http://kaihatsu.mikagamikobo.com/2009/08/xreapear.html" />
    <id>tag:kaihatsu.mikagamikobo.com,2009://1.103</id>

    <published>2009-08-02T16:53:36Z</published>
    <updated>2009-08-02T17:03:56Z</updated>

    <summary>XREAの共有サーバーでPEARを使う場合の手順。まずは、sshでログイン。ホー...</summary>
    <author>
        <name>りっぷる</name>
        
    </author>
    
        <category term="php" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="pear" label="pear" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="php" label="php" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="xrea" label="xrea" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kaihatsu.mikagamikobo.com/">
        <![CDATA[XREAの共有サーバーでPEARを使う場合の手順。<br />まずは、sshでログイン。<br /><br />ホームディレクトリで<br /><blockquote>pear config-create /virtual/ユーザ名/public_html .pearrc<br /></blockquote>する。<br />これでホームディレクトリ直下に設定ファイル（.pearrc）が生成される。<br /><br />次に<br /><blockquote>pear install -o PEAR<br /></blockquote>とする。<br /><br />public_html/pear以下に、もろもろのファイルがインストールされる。<br /><br />あとはインストールしたいPEARパッケージを、インストールすればよい。<br /><blockquote>pear install XML_RPC<br /></blockquote>のような感じで。<br /><br /><br />PEARがインストールできたら、パスを通しておく。<br /><br />通すパスは、これ。<br /><blockquote>/virtual/ユーザ名/public_html/pear/php<br /></blockquote><br /><br /><br />.htaccessに<br /><blockquote>php_value include_path ".:/usr/local/lib/php:/virtual/ユーザ名/public_html/pear/php"<br /></blockquote>と書いておけばよい。<br /><br /><blockquote>.:/usr/local/lib/php<br /></blockquote>は、既存のパス。<br /><br />phpinfoでinclude_pathを確認しておけば確実。<br /><br />参考: <a href="http://pear.php.net/manual/ja/installation.shared.php">共有ホストでの PEAR のローカルコピーのインストール</a><br />]]>
        
    </content>
</entry>

<entry>
    <title>Google App Engine 初めの一歩</title>
    <link rel="alternate" type="text/html" href="http://kaihatsu.mikagamikobo.com/2009/07/google-app-engine.html" />
    <id>tag:kaihatsu.mikagamikobo.com,2009://1.88</id>

    <published>2009-07-18T15:39:54Z</published>
    <updated>2009-09-15T12:36:09Z</updated>

    <summary>前々から気になっていた、Google App Engineに手をつけてみた。まず...</summary>
    <author>
        <name>りっぷる</name>
        
    </author>
    
        <category term="Google App Engine" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="gae" label="gae" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="python" label="python" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kaihatsu.mikagamikobo.com/">
        <![CDATA[前々から気になっていた、Google App Engineに手をつけてみた。<br /><br />まずは、<a href="http://code.google.com/intl/ja/appengine/docs/python/gettingstarted/devenvironment.html">ここの指示</a>に従って、以下のブツをダウンロード&amp;インストールした。<br /><br />- <a href="http://www.python.org/">Python 2.5.2</a><br />- <a href="http://code.google.com/intl/ja/appengine/downloads.html">App Engine SDK </a><br /><br /><br />Pythonは、デフォルトだとルートディレクトリにインストールしようとしていた。<br />これを、Program Files以下に変更。<br />パスにスペース入ってしまうのが悪影響を及ぼさないか、やや心配。<br /><br />これで、必要な開発環境は整った。<br /><br />早速App Engineのデモを起動しよう。<br /><br /><blockquote>C:/Program Files/Google/google_appengine/<br /></blockquote>に移動して、<br /><blockquote>dev_appserver.py demos/guestbook/<br /></blockquote>してみる。<br /><br />こんなエラーが出た。<br /><br /><blockquote>INFO&nbsp;&nbsp;&nbsp;&nbsp; 2009-07-18 11:03:19,717 appengine_rpc.py] Server: appengine.google.com<br />Allow dev_appserver to check for updates on startup? (Y/n): Traceback (most recent call last):<br />&nbsp; File "C:\Program Files\Google\google_appengine\dev_appserver.py", line 60, in &lt;module&gt;<br />&nbsp;&nbsp;&nbsp; run_file(__file__, globals())<br />&nbsp; File "C:\Program Files\Google\google_appengine\dev_appserver.py", line 57, in run_file<br />&nbsp;&nbsp;&nbsp; execfile(script_path, globals_)<br />&nbsp; File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_main.py", line 474, in &lt;module&gt;<br />&nbsp;&nbsp;&nbsp; sys.exit(main(sys.argv))<br />&nbsp; File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_main.py", line 432, in main<br />&nbsp;&nbsp;&nbsp; if update_check.AllowedToCheckForUpdates():<br />&nbsp; File "C:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.py", line 452, in AllowedToCheckForUpdates<br />&nbsp;&nbsp;&nbsp; answer = input_fn("Allow dev_appserver to check for updates on startup? "<br />EOFError: EOF when reading a line<br /></blockquote><br />検索してみたが、全くヒットしない。<br />しばし露頭に迷う。<br /><br />コマンドはエディタのxyzzy上から打ったのだが、もしかしたら、これが影響したかもしれない。<br />試しにWindowsのプロンプトからコマンドを入れてみる。<br /><br /><blockquote>C:\Program Files\Google\google_appengine&gt;dev_appserver.py demos\guestbook<br />INFO&nbsp;&nbsp;&nbsp;&nbsp; 2009-07-18 15:33:56,405 appengine_rpc.py] Server: appengine.google.com<br />Allow dev_appserver to check for updates on startup? (Y/n): <br /></blockquote><br />入力を求めてきた。<br />うまくいったようだ。<br /><br />yを打ち込むと、サーバーが起動したようだ。<br /><br /><blockquote>dev_appserver will check for updates on startup.&nbsp; To change this setting, edit C<br />:\Documents and Settings\kawai/.appcfg_nag<br />INFO&nbsp;&nbsp;&nbsp;&nbsp; 2009-07-18 15:33:59,296 appcfg.py] Checking for updates to the SDK.<br />WARNING&nbsp; 2009-07-18 15:33:59,703 datastore_file_stub.py] Could not read datastor<br />e data from c:\docume~1\kawai\locals~1\temp\dev_appserver.datastore<br />WARNING&nbsp; 2009-07-18 15:33:59,703 datastore_file_stub.py] Could not read datastor<br />e data from c:\docume~1\kawai\locals~1\temp\dev_appserver.datastore.history<br />WARNING&nbsp; 2009-07-18 15:33:59,796 dev_appserver.py] Could not initialize images A<br />PI; you are likely missing the Python "PIL" module. ImportError: No module named<br />&nbsp;_imaging<br />INFO&nbsp;&nbsp;&nbsp;&nbsp; 2009-07-18 15:33:59,858 dev_appserver_main.py] Running application gues<br />tbook on port 8080: http://localhost:8080<br /></blockquote><br />ブラウザから<br /><blockquote>http://localhost:8080<br /></blockquote>にアクセスしてみる。<br /><br />おぉ！<br />何かフォームが表示された！<br /><br />テキトウに入力して送信してみる。<br /><br />入力が反映された！<br /><br />楽しい。<br /><br /><br />さて、うまくいったのはいいが、サーバーを落とすにはどうするか。<br />Ctrl-Cが効かない。<br /><br />調べてみる。<br />同様の問題は他の人のところでも発生しているようだ。<br /><br />シャットダウンするには、<br /><blockquote>Ctrl-Break<br /></blockquote>しろ、とのこと。<br /><br />Break ・・・？<br />そんなキーあったっけ？<br /><br />キーボードを見回してみる。<br /><br />あった。<br /><br />右上の隅にひっそりと。<br /><br />やってみると、サーバーがシャットダウンされた。<br />めでたし。<br /><br />これで、ようやく第一歩が踏み出せた。<br />ウェブアプリにしたいアイディアは山のようにある。<br /><br />ウェブアプリを公開しようとすると、今までだったら、サーバーを確保したり拡張性を気にしたりする必要があって敷居が高かった。<br />App Engineでは、Googleがそういった手間のかかる部分をフォローしてくれる。<br />だから、開発者はメインのロジックに集中できる、という触れ込みだ。<br /><br />楽しみだ。<br />]]>
        
    </content>
</entry>

<entry>
    <title>Windows のバージョンと通称の対応</title>
    <link rel="alternate" type="text/html" href="http://kaihatsu.mikagamikobo.com/2009/04/windows.html" />
    <id>tag:kaihatsu.mikagamikobo.com,2009://1.30</id>

    <published>2009-04-05T10:05:26Z</published>
    <updated>2009-04-05T10:11:55Z</updated>

    <summary>Windows は XP とか Vista とか通称で呼ばれることが多いが、これ...</summary>
    <author>
        <name>りっぷる</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://kaihatsu.mikagamikobo.com/">
        <![CDATA[Windows は XP とか Vista とか通称で呼ばれることが多いが、これはバージョンと対応している。<br /><br />コマンドプロンプトを起動した際など、バージョンは表示されるが、通称は表示されないので、<br />この対応関係が知りたくなることがある。<br /><br />そんなときのために。<br /><br />Windows 95 4,0<br />Windows 98 4,10<br />Windows Me 4,90<br /><br />Windows 2000 5,0<br />Windows XP 5,1<br />Windows 2003 5,2<br /><br />Windows Vista 6,0<br /><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>PHS300(cradlepoint 製)をG-Call ( EMobile )で利用</title>
    <link rel="alternate" type="text/html" href="http://kaihatsu.mikagamikobo.com/2008/12/phs300cradlepoint-g-call-emobi.html" />
    <id>tag:kaihatsu.mikagamikobo.com,2008://1.29</id>

    <published>2008-12-19T10:04:03Z</published>
    <updated>2010-06-09T21:21:39Z</updated>

    <summary> 日経NETWORKの2008年11月で紹介されていた、無線LANアクセスポイン...</summary>
    <author>
        <name>りっぷる</name>
        
    </author>
    
        <category term="ハードウェア" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://kaihatsu.mikagamikobo.com/">
        <![CDATA[<div style="float: right;">
<a href="http://hb.afl.rakuten.co.jp/hgc/092de111.7b1577b6.092de112.cd90e493/?pc=http%3a%2f%2fwww.rakuten.co.jp%2fibsjapan%2f328949%2f1830981%2f%231419893&amp;m=http%3a%2f%2fm.rakuten.co.jp%2fibsjapan%2fi%2f1419893%2f" target="_blank"><img src="http://hbb.afl.rakuten.co.jp/hgb/?pc=http%3a%2f%2fimage.rakuten.co.jp%2fwshop%2fdata%2fws-mall-img%2fibsjapan%2fimg128%2fimg10624281690.jpeg&amp;m=http%3a%2f%2fimage.rakuten.co.jp%2fwshop%2fdata%2fws-mall-img%2fibsjapan%2fimg64%2fimg10624281690.jpeg" border="0" /></a>
</div>
日経NETWORKの2008年11月で紹介されていた、無線LANアクセスポイントの <a href="http://hb.afl.rakuten.co.jp/hgc/092de111.7b1577b6.092de112.cd90e493/?pc=http%3a%2f%2fwww.rakuten.co.jp%2fibsjapan%2f328949%2f1830981%2f%231419893&amp;m=http%3a%2f%2fm.rakuten.co.jp%2fibsjapan%2fi%2f1419893%2f" target="_blank">PHS300</a>
、楽天で購入。<br /><br />G-Call （EMobile）でネット接続をセッティングした。<br /><br />マニュアルもブラウザでアクセスする設定画面も日本語化されていた。<br /><br />分かりやすい。<br /><br /><br /><br />設定手順。<br /><br />まずは、マニュアルに従って、本体の設定を。<br /><br />電池を入れて、アダプタをつないで電源ON。<br /><br />愛用のレッツノートCF-R7でワイヤレスネットワークの一覧を表示すると、<br /><br />PHS-*** <br /><br />というのが表示されるので、これに接続。<br /><br />ブラウザから192.168.0.1にアクセスすると、ログインページが表示された。<br /><br /><br />マニュアルに従って、初期パスワードを入力して「ログイン」をクリック。<br /><br />初期パスワードはMACアドレスの下6桁。<br /><br />MACアドレスは本体裏面に書いてある。<br /><br /><br />無事、ログインできたのでセットアップウィザードを実行。<br /><br />パスワードやらセキュリティやらを設定。<br /><br />セキュリティはWPA2、ユーザーログインは不要に。<br /><br />最後に設定内容の概要が表示されるので、それを確認して「接続」。<br /><br />以上で本体の設定終了。<br /><br /><br />次にモバイル側の設定。<br /><br />ネットワーク名を変えたので、ワイヤレスネットワークの一覧から選びなおして再度接続。<br /><br />先程と同様に、ブラウザから192.168.0.1にアクセスし、ログイン。<br /><br />「基本」の「WAN」を表示。<br /><br />「携帯モデムPPP設定」で、「ユーザー名」、「パスワード」、「APN」を入力。<br /><br />これらは、G-Call 契約時の情報と同じ。<br /><br />EMOBILE HW ユーティリティに入力したものと一緒。<br /><br />入力したら「設定を保存」して「デバイスの再起動」を実行。<br /><br /><br />以上で設定終了。<br /><br />白い D02HW をブスッと差してしばし待つと青ランプが点灯。<br /><br />ネットに接続できるようになった。<br /><br /><br />ちなみに、ATコマンドの設定が必要、という説もあったが、設定しなくて接続できた。<br /><br />ファームウェアはバージョン2.2.1。<br />]]>
        
    </content>
</entry>

<entry>
    <title>Vista に xampp をインストール</title>
    <link rel="alternate" type="text/html" href="http://kaihatsu.mikagamikobo.com/2008/12/vista-xampp.html" />
    <id>tag:kaihatsu.mikagamikobo.com,2008://1.28</id>

    <published>2008-12-16T17:30:26Z</published>
    <updated>2008-12-16T17:42:36Z</updated>

    <summary>Vista に xampp をインストールする際には注意点が2点。Program...</summary>
    <author>
        <name>りっぷる</name>
        
    </author>
    
        <category term="xampp" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="xampp" label="xampp" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kaihatsu.mikagamikobo.com/">
        <![CDATA[Vista に xampp をインストールする際には注意点が2点。<br /><br />Program Files フォルダはセキュリティがきついので正常に動作しない。<br /><br />C:/xampp/ などにインストールする。<br /><br /><br />Program Files/xampp/ にインストールしてみたら、apache/conf/httpd.conf が編集できなかった。<br /><br /><br />そして、各サーバーをサービスとして利用しない。<br /><br />サービスとしてインストールしてしまうと、サービスを再起動するときにエラーになる。<br /><br />xampp コンパネでサービスのチェックをはずした上で「開始」を。<br /><br /><br />ちなみに、Skype が起動していると、ポートがふさがっている可能性がある。<br /><br />Skype を xampp より後に起動すれば問題はない。<br /><br /><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>xampp1.6.8 で Pear を使うには</title>
    <link rel="alternate" type="text/html" href="http://kaihatsu.mikagamikobo.com/2008/12/xampp168-pear.html" />
    <id>tag:kaihatsu.mikagamikobo.com,2008://1.27</id>

    <published>2008-12-16T17:18:48Z</published>
    <updated>2008-12-16T17:50:11Z</updated>

    <summary>現行の xampp(1.6.8) には、インストールしただけでは pear が使...</summary>
    <author>
        <name>りっぷる</name>
        
    </author>
    
        <category term="xampp" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="pear" label="pear" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="php" label="php" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="xampp" label="xampp" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kaihatsu.mikagamikobo.com/">
        <![CDATA[現行の xampp(1.6.8) には、インストールしただけでは pear が使えない。<br /><br />使えるようにするためには、以下の操作を。<br /><br />コマンドプロンプトで、go-pear.bat を実行。<br />go-pear.bat は xampp/php の下にある。<br /><br /><blockquote>cd c:/xampp/php/<br />go-pear.bat<br /></blockquote><br />実行すると、いくつか設定を聞かれる。<br /><br />全てデフォルトの設定でインストールする。<br /><br /><br /><blockquote>
Are you installing a system-wide PEAR or a local copy?<br />
(system|local) [system] :(Enter)<br /><br />
Below is a suggested file layout for your new PEAR installation.  To<br />
change individual locations, type the number in front of the<br />
directory.  Type 'all' to change all of them or simply press Enter to<br />
accept these locations.<br /><br />
 1. Installation base ($prefix)                   : C:\xampp\php<br />
 2. Temporary directory for processing            : C:\xampp\php\tmp<br />
 3. Temporary directory for downloads             : C:\xampp\php\tmp<br />
 4. Binaries directory                            : C:\xampp\php<br />
 5. PHP code directory ($php_dir)                 : C:\xampp\php\pear<br />
 6. Documentation directory                       : C:\xampp\php\docs<br />
 7. Data directory                                : C:\xampp\php\data<br />
 8. User-modifiable configuration files directory : C:\xampp\php\cfg<br />
 9. Public Web Files directory                    : C:\xampp\php\www<br />
10. Tests directory                               : C:\xampp\php\tests<br />
11. Name of configuration file                    : C:\WINDOWS\pear.ini<br />
12. Path to CLI php.exe                           : C:\xampp\php\.<br /><br />
1-12, 'all' or Enter to continue:(Enter)<br />
Beginning install...<br />
Configuration written to C:\WINDOWS\pear.ini...<br />
Initialized registry...<br />
Preparing to install...<br />
installing phar://go-pear.phar/PEAR/go-pear-tarballs/Archive_Tar-1.3.2.tar...<br />
installing phar://go-pear.phar/PEAR/go-pear-tarballs/Console_Getopt-1.2.3.tar...<br />
installing phar://go-pear.phar/PEAR/go-pear-tarballs/PEAR-1.7.1.tar...<br />
installing phar://go-pear.phar/PEAR/go-pear-tarballs/Structures_Graph-1.0.2.tar...<br />
pear/PEAR can optionally use package "pear/XML_RPC" (version &gt;= 1.4.0)<br />
install ok: channel://pear.php.net/Archive_Tar-1.3.2<br />
install ok: channel://pear.php.net/Console_Getopt-1.2.3<br />
install ok: channel://pear.php.net/Structures_Graph-1.0.2<br />
install ok: channel://pear.php.net/PEAR-1.7.1<br />
PEAR: Optional feature webinstaller available (PEAR's web-based installer)<br />
PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)<br />
PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)<br />
PEAR: To install optional features use "pear install pear/PEAR#featurename"<br /><br />
******************************************************************************<br />
WARNING!  The include_path defined in the currently used php.ini does not<br />
contain the PEAR PHP directory you just specified:<br /><br />
If the specified directory is also not in the include_path used by<br />
your scripts, you will have problems getting any PEAR packages working.<br /><br /><br />
Would you like to alter php.ini ? [Y/n] :(Enter)<br /><br />
php.ini <c:\xampp\php\php.ini> include_path updated.</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
Current include path           : .;C:\xampp\php\pear\</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
Configured directory           : C:\xampp\php\pear</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
Currently used php.ini (guess) : C:\xampp\php\php.ini</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
Press Enter to continue:</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
** WARNING! Old version found at C:\xampp\php, please remove it or be sure to use the new c:\xampp\php\pear.bat comma</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
The 'pear' command is now at your service at c:\xampp\php\pear.bat</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
** The 'pear' command is not currently in your PATH, so you need to</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
** use 'c:\xampp\php\pear.bat' until you have added</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
** 'C:\xampp\php' to your PATH environment variable.</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
Run it without parameters to see the available actions, try 'pear list'</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
to see what packages are installed, or 'pear help' for help.</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
For more information about PEAR, see:</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
  http://pear.php.net/faq.php</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
  http://pear.php.net/manual/</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
Thanks for using go-pear!</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
* WINDOWS ENVIRONMENT VARIABLES *</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
For convenience, a REG file is available under C:\xampp\php\PEAR_ENV.reg .</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
This file creates ENV variables for the current user.</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
Double-click this file to add it to the current user registry.</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>
続行するには何かキーを押してください . . .(Enter)</c:\xampp\php\php.ini><c:\xampp\php\php.ini></c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini></c:\xampp\php\php.ini></blockquote>







<c:\xampp\php\php.ini><br />以上で pear のインストール終了。<br /><br />正常にインストールされているかどうか確認。<br /><br /></c:\xampp\php\php.ini><blockquote><c:\xampp\php\php.ini>C:\xampp\php&gt;pear -V(Enter)</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>PEAR Version: 1.7.1</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>PHP Version: 5.2.6</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>Zend Engine Version: 2.2.0</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini>Running on: Windows NT FLAKA 6.0 build 6001</c:\xampp\php\php.ini><br /><c:\xampp\php\php.ini></c:\xampp\php\php.ini></blockquote><br /><br />おまけ<br />xampp/php にパスを通しておけば、pear コマンドがどこからでも打ててラクチン。<br />]]>
        
    </content>
</entry>

<entry>
    <title>バーチャルドメインのメールアドレス設定</title>
    <link rel="alternate" type="text/html" href="http://kaihatsu.mikagamikobo.com/2008/12/post-6.html" />
    <id>tag:kaihatsu.mikagamikobo.com,2008://1.26</id>

    <published>2008-12-14T11:17:06Z</published>
    <updated>2008-12-14T11:32:26Z</updated>

    <summary>バーチャルドメイン heaven.com にメアドを設定する手順。angel@h...</summary>
    <author>
        <name>りっぷる</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="linux" label="Linux" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kaihatsu.mikagamikobo.com/">
        <![CDATA[バーチャルドメイン heaven.com にメアドを設定する手順。<br /><br />angel@heaven.com に送信されたメールを、Linux ユーザー angel のアカウントにマッピングする。<br /><br /><br />まずは、<br />/etc/mail/local-host-names ファイルにドメインを追加する。<br /><br />今回の場合だと<br /><blockquote>heaven.com<br /></blockquote>を追加。<br /><br />/etc/mail/virtusertable ファイルにバーチャルメアドとそれを<br />受け取るユーザーを記述する。<br /><br /><blockquote>angel@heaven.com angel<br /></blockquote><br /><br />これでオッケー。<br />sendmail を再起動する。<br /><br /><blockquote>/etc/init.d/sendmail restart<br /></blockquote><br /> <br />ついでに、angel 宛てのメールを他のメアドに転送する場合。<br /><br />/etc/aliases ファイルの末尾に、転送元と転送先を追加する。<br />転送先が複数の場合はカンマ区切り。<br /><br /><blockquote>angel: michael@seraphim,gabriel@seraphim,rafael@seraphim,uriel@seraphim<br /></blockquote><br /><br />]]>
        
    </content>
</entry>

<entry>
    <title>新しく取得したドメインを運用するには</title>
    <link rel="alternate" type="text/html" href="http://kaihatsu.mikagamikobo.com/2008/11/post-5.html" />
    <id>tag:kaihatsu.mikagamikobo.com,2008://1.25</id>

    <published>2008-11-20T14:09:05Z</published>
    <updated>2009-04-09T21:45:08Z</updated>

    <summary>ムームードメインで取得したドメインを Linux で運用するための手順。サーバー...</summary>
    <author>
        <name>りっぷる</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="linux" label="Linux" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kaihatsu.mikagamikobo.com/">
        <![CDATA[ムームードメインで取得したドメインを Linux で運用するための手順。<br />サーバーは rhel4。<br /><br />必要な作業は、以下の2点。<br /><ol><li>ムームードメインで、ネームサーバーを指定する</li><li>ネームサーバーの設定をする</li></ol>新しく取得したドメインは hogehoge.com、<br />運用するサーバーの IP は、123.456.789.123 ということで。<br /><br />まずは、ムームーの設定。<br />DNS サーバーの設定で、プライマリを取得したドメインに。<br />セカンダリには、フリーの xname を使う。<br /><br /><blockquote>ネームサーバ1 ns.hogehoge.com<br />ネームサーバ2 ns0.xname.org<br />ネームサーバ3 ns1.xname.org<br /></blockquote><br />IP 設定で、123.456.789.123 を指定する。<br />以上でムームーの設定終わり。<br /><br /><br />次にネームサーバーの設定。<br />ここでは、ns.hogehoge.com のサーバーの設定。<br /><br />設定するファイルは、以下のふたつ。<br />/etc/named.conf<br />/var/named/hogehoge.com.zone<br /><br />named.conf に以下を追加。<br /><blockquote>zone "hogehoge.com" {<br />&nbsp;&nbsp;&nbsp; type master;<br />&nbsp;&nbsp;&nbsp; file "hogehoge.com.zone";<br />&nbsp;&nbsp;&nbsp; allow-transfer {<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  87.98.164.164;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  195.234.42.1;<br />&nbsp;&nbsp;&nbsp; };<br />};<br /></blockquote><br />allow-transfer の中身は、セカンダリネームサーバのIP。<br />この場合は ns0.xname.org と ns1.xname.org。<br /><br />編集したら、次のコマンドでチェック。<br /><blockquote>/usr/sbin/named-checkconf /etc/named.conf<br /></blockquote><br />hogehoge.com.zone は新しく作成する。<br />内容はこのように。<br /><blockquote>$TTL 86400<br />@&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SOA&nbsp;&nbsp;&nbsp;&nbsp; ns.hogehoge.com.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root.hogehoge.com.&nbsp;&nbsp;&nbsp;&nbsp; (<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2008112001<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1h<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 15m<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1w<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1d<br />)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ns.hogehoge.com.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ns0.xname.org.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ns1.xname.org.<br />ns&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 123.456.789.123<br />hogehoge.com.&nbsp; IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 123.456.789.123</blockquote>
<br />こちらも、作成したらチェック。<br /><blockquote>/usr/sbin/named-checkzone hogehoge.com /var/named/hogehoge.com.zone<br /></blockquote>ファイルの末尾に空行が入っていたらエラーになるので要注意。<br /><br />問題なければ、named を再起動。<br /><blockquote>/etc/init.d/named restart<br /></blockquote><br />最後に確認を。<br /><blockquote>dig @123.456.789.123 hogehoge.com<br /></blockquote><br />こんな感じになればよし。<br /><blockquote>; &lt;&lt;&gt;&gt; DiG 9.2.4 &lt;&lt;&gt;&gt; hogehoge.com<br />;; global options:&nbsp; printcmd<br />;; Got answer:<br />;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 8946<br />;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 2<br /><br />;; QUESTION SECTION:<br />;hogehoge.com.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A<br /><br />;; ANSWER SECTION:<br />hogehoge.com.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 84549&nbsp;&nbsp; IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 123.456.789.123<br /><br />;; AUTHORITY SECTION:<br />hogehoge.com.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 84549&nbsp;&nbsp; IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ns0.xname.org.<br />hogehoge.com.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 84549&nbsp;&nbsp; IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ns1.xname.org.<br />hogehoge.com.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 84549&nbsp;&nbsp; IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ns.hogehoge.com.<br /><br />;; ADDITIONAL SECTION:<br />ns0.xname.org.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 22965&nbsp;&nbsp; IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 195.234.42.1<br />ns1.xname.org.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 78838&nbsp;&nbsp; IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 87.98.164.164<br /><br />;; Query time: 0 msec<br />;; SERVER: 1.2.3.4#53(1.2.3.4)<br />;; WHEN: Thu Nov 20 23:33:29 2008<br />;; MSG SIZE&nbsp; rcvd: 141<br /></blockquote><br /><br /><br />  ]]>
        
    </content>
</entry>

<entry>
    <title>symfony clear-cache が失敗する</title>
    <link rel="alternate" type="text/html" href="http://kaihatsu.mikagamikobo.com/2008/11/symfony-clear-cache.html" />
    <id>tag:kaihatsu.mikagamikobo.com,2008://1.24</id>

    <published>2008-11-16T03:40:20Z</published>
    <updated>2008-11-16T03:52:42Z</updated>

    <summary>symfony でキャッシュクリアのコマンドが失敗することがある。この問題は既出...</summary>
    <author>
        <name>りっぷる</name>
        
    </author>
    
        <category term="symfony" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="symfony" label="symfony" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kaihatsu.mikagamikobo.com/">
        <![CDATA[symfony でキャッシュクリアのコマンドが失敗することがある。<br />この問題は<a href="http://trac.symfony-project.org/ticket/4696">既出</a>。<br /><br />原因は、キャッシュファイルのアクセス権。<br />キャッシュファイルが、所有者 apache、アクセス権 644 で作成されていた。<br /><br />symfony cc コマンドは、キャッシュファイルを上書きしようとすることがあるが、このコマンドを実行するユーザーが apache ではないので、上書きに失敗する。<br /><br /><br />対策。<br />キャッシュファイルが 666 で作成されればよい。<br /><br />さしあたって、ブラウザからアクセスがあったとき、真っ先にロードされるファイルに<br /><blockquote>umask(0000);<br /></blockquote>と書いておく。<br /><br /><blockquote>/config/ProjectConfiguration.class.php<br /></blockquote>がいいかな。<br /><br />ログファイルとか、アップロードされたファイルとか、キャッシュ以外のファイルまで影響が出てしまうが、とりえずはこれでよし。<br />]]>
        
    </content>
</entry>

<entry>
    <title>symfony のインストール（SVN）</title>
    <link rel="alternate" type="text/html" href="http://kaihatsu.mikagamikobo.com/2008/11/symfony-svn.html" />
    <id>tag:kaihatsu.mikagamikobo.com,2008://1.23</id>

    <published>2008-11-13T16:53:36Z</published>
    <updated>2008-11-13T17:33:22Z</updated>

    <summary>symfony をひとつのマシンで複数バージョン使う方法。メインの方は PEAR...</summary>
    <author>
        <name>りっぷる</name>
        
    </author>
    
        <category term="symfony" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="symfony" label="symfony" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kaihatsu.mikagamikobo.com/">
        <![CDATA[symfony をひとつのマシンで複数バージョン使う方法。<br /><br />メインの方は PEAR でインストールする。<br />これは、stable な最新版にしておくことにする。<br />→ <a href="http://kaihatsu.mikagamikobo.com/2008/11/symfony-pear.html">symfony のインストール（PEAR）</a><br /><br /><br />現在、PEAR 版の最新は、1.1.4。<br />アップデートすると、過去の1.0系で開発していたプロジェクトが動作しなくなってしまう。<br />過去のプロジェクトをいちいち全部、新バージョンに対応させるのはタイヘン。<br />なので、1.0系の symfony も使えるようにしてみる。<br />環境は WindowsXP &amp; xampp。<br /><br />手順としては、こんな感じ。<br /><ol><li>過去バージョンの symfony を SVN からチェックアウトする。</li><li>対応するプロジェクトの設定を更新する。<br /></li></ol><br />ではでは、早速、チェックアウトを。<br />symfony の SVN リポジトリはこちら。<br /><blockquote>http://svn.symfony-project.com/<br /></blockquote><br /><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://kaihatsu.mikagamikobo.com/pics/svn_symfony.png"><img alt="svn_symfony.png" src="http://kaihatsu.mikagamikobo.com/assets_c/2008/11/svn_symfony-thumb-230x292.png" class="mt-image-right" style="margin: 0pt 0pt 20px 20px; float: right;" height="292" width="230" /></a></span><div>カメさんで覗いてみると、こんなことに→<br />
<br />tags の中にリリース版があるので、この中からお好みのバージョンを選ぶ。<br />今は、1.0系のプロジェクトを動かしたいので、1.0系最新の1.0.18にする。<br /><br />そして、ローカルの適当なフォルダにチェックアウト。<br />どこのフォルダでもよい。<br /><br />C:/usr/symfony/1_0_18/ にチェックアウトした。<br /><br />これで、インストールは終わり。<br />チェックアウトしただけ。<br /><br /><br />次に、プロジェクトの設定。<br />config/config.php の内容を編集する。<br /><br />開いてみると、このようなものになっている。<br /><br /><blockquote>$sf_symfony_lib_dir&nbsp; = 'C:\Program Files\xampp\php\pear/symfony';<br />$sf_symfony_data_dir = 'C:\php5\pear\data/symfony';<br /></blockquote><br />PEAR でインストールされたフォルダが書かれているはず。<br />これを SVN 版に書きかえる。<br /><br /><blockquote>$sf_symfony_lib_dir&nbsp; = 'C:\usr/symfony/1_0_18/lib';<br />$sf_symfony_data_dir = 'C:\usr/symfony/1_0_18/data';<br /></blockquote><br />書きかえたら保存して、完了。<br /><br /><br />これで、過去のプロジェクトは過去の symfony バージョンのまま運用しつつ、新しいプロジェクトは新しいバージョンで開発できるようになった。<br /><br /><br />ちなみに、symfony(symfony.bat) コマンドは、プロジェクト内ではルートにある symfony ファイルをたたいているだけなので、バージョンの差異は問題にならない。<br />プロジェクトの外からコマンドをうつと、おそらくパスが通っているであろう、PEAR 版のバージョンが起動する。<br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>symfony のインストール（PEAR）</title>
    <link rel="alternate" type="text/html" href="http://kaihatsu.mikagamikobo.com/2008/11/symfony-pear.html" />
    <id>tag:kaihatsu.mikagamikobo.com,2008://1.22</id>

    <published>2008-11-11T17:19:47Z</published>
    <updated>2008-12-09T06:12:01Z</updated>

    <summary>symfony をインストールする手順。PEAR を使う方法と SVN を使う方...</summary>
    <author>
        <name>りっぷる</name>
        
    </author>
    
        <category term="symfony" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="symfony" label="symfony" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://kaihatsu.mikagamikobo.com/">
        <![CDATA[symfony をインストールする手順。<br />PEAR を使う方法と SVN を使う方法がある。<br /><br />PEAR を使う場合、インストールが簡単だが、複数のバージョンを同時に運用することができない。<br />過去のプロジェクトをその当時の symfony バージョンで利用しつつ、新しいプロジェクトは別のバージョンで利用する場合、SVN からのインストールが必要になる。<br /><br />ここでは、PEAR を利用する方法を書いておく。<br />環境は RHEL5。<br /><br />まず PEAR をアップデートする。<br /><br /><blockquote>$ pear upgrade PEAR<br /></blockquote><br />symfony プロジェクトの PEAR チャネルを登録する。<br /><br /><blockquote>$ pear channel-discover pear.symfony-project.com<br /></blockquote><br />symfony をインストールする。<br /><br /><blockquote>$ pear install symfony/symfony<br /></blockquote><br />ここで<br /><br /><blockquote>symfony/symfony requires PHP extension "dom"<br />No valid packages found<br />install failed<br /></blockquote><br />というエラーがでた。<br />php-xml をインストールする。<br /><br /><blockquote># yum install php-xml<br /></blockquote><br />そして、再度インストールをトライ。<br /><br /><blockquote>$ pear install symfony/symfony<br /></blockquote>
<br />正常にインストールされた。<br />インストールされたかどうか確認する。<br /><br />
<blockquote>$ symfony -V<br /></blockquote><br />で<br /><br /><blockquote>symfony version 1.1.4 (/usr/share/pear/symfony)<br /></blockquote><br />と表示される。<br /><br /><br /><b>2008/12/9 追記</b><br /><br />バージョンを指定してインストールする場合はこのように。<br /><br /><blockquote>$ pear install symfony/symfony-1.1.4<br /></blockquote>
symfony のバージョンと 対応する php のバージョンは、<br />symfony 1.0 : php 5.0 以降<br />
symfony 1.1 : php 5.1 以降<br />
symfony 1.2 : php 5.2.4 以降<br />
<br /><br /><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>sfMail を日本語対応に拡張</title>
    <link rel="alternate" type="text/html" href="http://kaihatsu.mikagamikobo.com/2008/10/sfmail.html" />
    <id>tag:kaihatsu.mikagamikobo.com,2008://1.21</id>

    <published>2008-10-17T05:02:29Z</published>
    <updated>2008-10-17T05:12:34Z</updated>

    <summary>日本語のメールを送信する場合。適宜、文字コードを jis に変換しするように、s...</summary>
    <author>
        <name>りっぷる</name>
        
    </author>
    
        <category term="symfony" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="php" label="php" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sfmail" label="sfMail" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="symfony" label="symfony" 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://kaihatsu.mikagamikobo.com/">
        <![CDATA[日本語のメールを送信する場合。<br />適宜、文字コードを jis に変換しするように、sfMail を拡張。<br />クラス jisMail を作る。<br /><br /><blockquote>class jisMail extends sfMail<br />{<br />&nbsp; public function __construct()<br />&nbsp; {<br />&nbsp;&nbsp;&nbsp; parent::__construct();<br />&nbsp;&nbsp;&nbsp; parent::setCharset('iso-2022-jp');<br />&nbsp;&nbsp;&nbsp; parent::setEncoding('7bit');<br />&nbsp; }<br /><br />&nbsp; public function setSubject($str)<br />&nbsp; {<br />&nbsp;&nbsp;&nbsp; return parent::setSubject(mb_convert_encoding($str, 'iso-2022-jp', 'UTF-8'));<br />&nbsp; }<br />&nbsp; <br />&nbsp; public function setBody($str)<br />&nbsp; {<br />&nbsp;&nbsp;&nbsp; return parent::setBody(mb_convert_encoding($str, 'iso-2022-jp', 'UTF-8'));<br />&nbsp; }<br />&nbsp; <br />&nbsp; public function setFrom($address, $name = null)<br />&nbsp; {<br />&nbsp;&nbsp;&nbsp; if ($name == null)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (preg_match('/([^&lt;]*)&lt;([^&gt;]*)&gt;/u', $address, $ms) == 1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $name = $ms[1];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $address = $ms[2];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; parent::setFrom($address, mb_encode_mimeheader(mb_convert_encoding($name,'iso-2022-jp','UTF-8'),'iso-2022-jp','B'));<br />&nbsp; }<br /><br />&nbsp; public function setSender($address, $name = null)<br />&nbsp; {<br />&nbsp;&nbsp;&nbsp; if ($name == null)<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (preg_match('/([^&lt;]*)&lt;([^&gt;]*)&gt;/u', $address, $ms) == 1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $name = $ms[1];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $address = $ms[2];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; parent::setSender($address, mb_encode_mimeheader(mb_convert_encoding($name,'iso-2022-jp','UTF-8'),'iso-2022-jp','B'));<br />&nbsp; }<br />}<br /></blockquote>setFrom と setSender では、<br /><i>田中&lt;tanaka@hoge.com&gt;</i><br />というフォーマットも解釈してくれるオマケつき。<br /> ]]>
        
    </content>
</entry>

</feed>
