<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Apelog &#187; Howto</title>
	<atom:link href="http://blog.apecell.com/category/howto/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.apecell.com</link>
	<description>Apecell's blog by Design</description>
	<lastBuildDate>Tue, 22 Jun 2010 07:08:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>SSL証明書の取得から設定まで＋α</title>
		<link>http://blog.apecell.com/2008/10/21/id/47</link>
		<comments>http://blog.apecell.com/2008/10/21/id/47#comments</comments>
		<pubDate>Mon, 20 Oct 2008 16:40:07 +0000</pubDate>
		<dc:creator>design</dc:creator>
				<category><![CDATA[Howto]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blog.apecell.com/?p=47</guid>
		<description><![CDATA[ApacheでSSL(mod_ssl)を使用する場合の一連の流れ。
署名入り証明書の取得（購入）から設定までの一連の流れのまとめです。
自己署名証明書での解説ページが多いので、初めて証明書を購入してSSLの導入をする場合を想定して書いています。
サーバー環境はCentOS 5.1。環境が変わっても一連の流れと作業はほぼ同じです。
SSLで暗号化された通信の簡単な説明

サイトにアクセスするとサーバーから証明書と鍵(A)を受信
証明書が安全な場合、鍵(A)を利用して通信データを暗号化
暗号化したデータをサーバーに送信
サーバーは鍵(A)に対応した鍵(B)でデータを復元

上記の「証明書が安全な場合」の安全かどうかはどうやって判別すればいいのか？
証明書の安全を保証する為に認証局と呼ばれる第3者によって証明書に署名を付けてもらいます。その署名が無いものは安全性が確認出来ない為、オレオレ証明書などと呼ばれています。
署名付き証明書を手に入れるには
署名付き証明書を取得する為に証明書署名リクエスト(CSR: Certificate Signing Request)と呼ばれるものが必要になります。CSRには証明書の保有者の情報(名前・有効期限・FQDNなど)が含まれており、それを認証局に送り保有者情報の確認がおこなわれた後に署名付き証明書が手に入ります。
CSRの作成
CSRはOpenSSLのコマンドによる作成が一般的です（一部Webインターフェイスを提供しているところもあります）。
ここではコマンドラインによる作成を以下に挙げます。
# cd /etc/pki/tls/certs/
# openssl req -new -nodes -keyout myserver.key -out server.csr
上記コマンドを実行するとCSR作成の為に必要な情報の入力待ち状態になるので、情報を入力します。特別な理由が無ければWhoisの情報と同じものを入れた方がいいです。違う場合、署名してもらえない場合や人力確認で時間が掛かる事が多いです。()内はコメントです。
Generating a 1024 bit RSA private key
.++++++
......++++++
writing new private key to 'myserver.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a [...]]]></description>
			<content:encoded><![CDATA[<p>ApacheでSSL(mod_ssl)を使用する場合の一連の流れ。</p>
<p>署名入り証明書の取得（購入）から設定までの一連の流れのまとめです。</p>
<p>自己署名証明書での解説ページが多いので、初めて証明書を購入してSSLの導入をする場合を想定して書いています。</p>
<p>サーバー環境はCentOS 5.1。環境が変わっても一連の流れと作業はほぼ同じです。</p>
<h3>SSLで暗号化された通信の簡単な説明</h3>
<ol>
<li>サイトにアクセスするとサーバーから証明書と鍵(A)を受信</li>
<li><em class="notice">証明書が安全な場合</em>、鍵(A)を利用して通信データを暗号化</li>
<li>暗号化したデータをサーバーに送信</li>
<li>サーバーは鍵(A)に対応した鍵(B)でデータを復元</li>
</ol>
<p>上記の「証明書が安全な場合」の安全かどうかはどうやって判別すればいいのか？</p>
<p>証明書の安全を保証する為に認証局と呼ばれる第3者によって証明書に署名を付けてもらいます。その署名が無いものは安全性が確認出来ない為、<a href="http://d.hatena.ne.jp/keyword/%A5%AA%A5%EC%A5%AA%A5%EC%BE%DA%CC%C0%BD%F1">オレオレ証明書</a>などと呼ばれています。</p>
<h3>署名付き証明書を手に入れるには</h3>
<p>署名付き証明書を取得する為に<em>証明書署名リクエスト(CSR: Certificate Signing Request)</em>と呼ばれるものが必要になります。CSRには証明書の保有者の情報(名前・有効期限・FQDNなど)が含まれており、それを認証局に送り保有者情報の確認がおこなわれた後に署名付き証明書が手に入ります。</p>
<h3>CSRの作成</h3>
<p>CSRはOpenSSLのコマンドによる作成が一般的です（一部Webインターフェイスを提供しているところもあります）。</p>
<p>ここではコマンドラインによる作成を以下に挙げます。</p>
<pre># cd /etc/pki/tls/certs/
# openssl req -new -nodes -keyout myserver.key -out server.csr</pre>
<p>上記コマンドを実行するとCSR作成の為に必要な情報の入力待ち状態になるので、情報を入力します。特別な理由が無ければWhoisの情報と同じものを入れた方がいいです。違う場合、署名してもらえない場合や人力確認で時間が掛かる事が多いです。()内はコメントです。</p>
<pre>Generating a 1024 bit RSA private key
.++++++
......++++++
writing new private key to 'myserver.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:<em>JP(国)</em>
State or Province Name (full name) [Berkshire]:<em>Tokyo(都道府県)</em>
Locality Name (eg, city) [Newbury]:<em>Shinjuku(市区町村)</em>
Organization Name (eg, company) [My Company Ltd]:<em>apecell(組織名)</em>
Organizational Unit Name (eg, section) []:<em>IT(部署名・グループ名)</em>
Common Name (eg, your name or your server's hostname) []:<em>apecell.com(サーバーホスト名)</em>
Email Address []:<em>info@apecell.com(管理メールアドレス)</em> <em class="notice">※1</em>

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:<em>(パスワード)</em> <em class="notice">※1 ※2</em>
An optional company name []:<em>(組織名略称)</em> <em class="notice">※1</em></pre>
<p>※1 &#8211; 認証局によって空白指定がされているので、申請する認証局のサイトなどで要確認。<br />
※2 &#8211; 入力するとApache起動時にパスワードが必要。SSLを失効させたりする場合などにも使用。</p>
<p>上記のコマンドを実行するとCSR(server.csr)と秘密鍵(myserver.key)の2種類のファイルが作成されます。</p>
<h3>署名付き証明書の取得</h3>
<p>認証局のサイトで申込を行い証明書を発行してもらいます。</p>
<p>基本的に1ホスト名1証明書ですが用途によりサブドメイン全てをカバーしたワイルドカード証明書など、各社のサービスと値段は様々です。</p>
<p>特に携帯と負荷分散環境でのSSLについて詳しくは以下のサイトが参考になります。<br />
<a href="http://www.goodpic.com/mt/archives2/2008/10/ssl.html">携帯対応、負荷分散環境で最適な、SSL証明書選び：Goodpic</a></p>
<p>発行までの手順も各社に違いがあり、郵送で書面記入が必要なものからWhoisに登録されているメールアドレスに確認メールが送信されるだけというものまであり、発行まで即日〜2週間程度になります。</p>
<h3>Apacheの設定</h3>
<p>証明書を取得したら <em>/etc/pki/tls/certs/server.crt</em> に保存しておきます。</p>
<pre># yum -y install mod_ssl
# vi /etc/httpd/conf.d/ssl.conf

Edit >>
SSLCertificateFile /etc/pki/tls/certs/server.crt <em>(証明書指定)</em>
SSLCertificateKeyFile /etc/pki/tls/certs/server.key <em>(秘密鍵指定)</em>
<< Edit

# /etc/rc.d/init.d/httpd restart</pre>
<p>以上が一般的に言われる「SSLを買って設定する」になります。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.apecell.com/2008/10/21/id/47/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>複数ユーザーでディレクトリ管理</title>
		<link>http://blog.apecell.com/2008/06/20/id/40</link>
		<comments>http://blog.apecell.com/2008/06/20/id/40#comments</comments>
		<pubDate>Fri, 20 Jun 2008 04:48:34 +0000</pubDate>
		<dc:creator>design</dc:creator>
				<category><![CDATA[Develop]]></category>
		<category><![CDATA[Howto]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[centos]]></category>

		<guid isPermaLink="false">http://blog.apecell.com/?p=40</guid>
		<description><![CDATA[Web開発では複数ユーザーでディレクトリを共有管理したいケースが良くある、そういった場合の設定方法。
/var/www/html を foo, bar, apacheの3ユーザーで管理するとする、設定環境はCentOS5。
設定方法
管理用グループ(webadmin)を作成
# /usr/sbin/groupadd webadmin
管理用グループ(webadmin)に3ユーザー追加。追加時に他のグループにも所属させる場合は同時に指定する事。特にwheelユーザーからしかrootになれない状態で間違ってwheelから外してしまうと悲惨な事に。
# /usr/sbin/usermod -G webadmin foo
# /usr/sbin/usermod -G webadmin bar
# /usr/sbin/usermod -G webadmin,apache apache
対象ディレクトリをwebadminが操作できるようにグループを指定し書き込み権限を与える。
# chgrp webadmin /var/www/html
# chmod g+w /var/www/html
このままだとファイルを生成した際に所有権がそれぞれのユーザーになってしまうので、グループ権限でファイルを作成するようにする。
# chmod g+s /var/www/html
以上でグループで管理出来る環境になる。
複数設定する場合はfindでディレクトリだけ検索した結果に対して変更すると楽。
find . -type d -print &#124; xargs chmod g+w
]]></description>
			<content:encoded><![CDATA[<p>Web開発では複数ユーザーでディレクトリを共有管理したいケースが良くある、そういった場合の設定方法。</p>
<p><em>/var/www/html</em> を <em>foo, bar, apache</em>の3ユーザーで管理するとする、設定環境はCentOS5。</p>
<h3>設定方法</h3>
<p>管理用グループ(webadmin)を作成</p>
<pre># /usr/sbin/groupadd webadmin</pre>
<p>管理用グループ(webadmin)に3ユーザー追加。<em class="notice">追加時に他のグループにも所属させる場合は同時に指定する事。</em>特にwheelユーザーからしかrootになれない状態で間違ってwheelから外してしまうと悲惨な事に。</p>
<pre># /usr/sbin/usermod -G webadmin foo
# /usr/sbin/usermod -G webadmin bar
# /usr/sbin/usermod -G webadmin,apache apache</pre>
<p>対象ディレクトリをwebadminが操作できるようにグループを指定し書き込み権限を与える。</p>
<pre># chgrp webadmin /var/www/html
# chmod g+w /var/www/html</pre>
<p>このままだとファイルを生成した際に所有権がそれぞれのユーザーになってしまうので、グループ権限でファイルを作成するようにする。</p>
<pre># chmod g+s /var/www/html</pre>
<p>以上でグループで管理出来る環境になる。</p>
<p>複数設定する場合はfindでディレクトリだけ検索した結果に対して変更すると楽。</p>
<pre>find . -type d -print | xargs chmod g+w</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.apecell.com/2008/06/20/id/40/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS5にRedmineをインストール</title>
		<link>http://blog.apecell.com/2008/04/02/id/38</link>
		<comments>http://blog.apecell.com/2008/04/02/id/38#comments</comments>
		<pubDate>Tue, 01 Apr 2008 15:00:00 +0000</pubDate>
		<dc:creator>design</dc:creator>
				<category><![CDATA[Howto]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[management]]></category>

		<guid isPermaLink="false">http://blog.apecell.com/1970/01/01/38</guid>
		<description><![CDATA[Ruby製のプロジェクト管理ソフトウェアRedmineのインストール手順。
Redmineの特徴

Ruby(Rails) + (MySQL &#124; PostgreSQL &#124; SQLite)
複数プロジェクト管理
プロジェクト毎のWiki、リポジトリ、フォーラムなど
ユーザー認証、マイページ

など。
よくTracと比較され、Tracはプラグインで拡張しないと使いにくいと言われている、個人的にもデフォルトだとRedmineの方が圧倒的に使いやすかった。
インストール環境

CentOS 5
Ruby 1.8.5
RubyGems 1.1.0
Ruby on Rails 2.0.2
Mongrel 1.1.4
MySQL 5.0.22
Redmine Rev:1319

インストール手順
パッケージ管理で必要なものをインストール（Rootで作業）

$ yum install -y ruby rdoc ruby-devel mysql-server

Ruby用パッケージ管理RubyGrmsをインストール。最新版はここから確認

$ wget wget http://rubyforge.org/frs/download.php/34638/rubygems-1.1.0.tgz
$ tar -zxvf rubygems-1.1.0.tgz
$ ruby rubygems-1.1.0/setup.rb
$ rm -Rf rubygems-1.1.0&#42;

Ruby on Railsインストール

$ gem install rails --include-dependencies

Mongrelインストール

$ gem install mongrel

MySQLにデータベースを用意

$ mysql -u root
&#62; create database redmine;

インストールディレクトリを準備

$ mkdir -p /home/redmine

Redmineインストール from SVN

$ cd [...]]]></description>
			<content:encoded><![CDATA[<p>Ruby製のプロジェクト管理ソフトウェア<a href="http://www.redmine.org/" target="_blank">Redmine</a>のインストール手順。</p>
<h4>Redmineの特徴</h4>
<ul>
<li>Ruby(Rails) + (MySQL | PostgreSQL | SQLite)</li>
<li>複数プロジェクト管理</li>
<li>プロジェクト毎のWiki、リポジトリ、フォーラムなど</li>
<li>ユーザー認証、マイページ</li>
</ul>
<p>など。</p>
<p>よく<a href="http://trac.edgewall.org/" target="_blank">Trac</a>と比較され、Tracはプラグインで拡張しないと使いにくいと言われている、個人的にもデフォルトだとRedmineの方が圧倒的に使いやすかった。</p>
<h4>インストール環境</h4>
<ul>
<li>CentOS 5</li>
<li>Ruby 1.8.5</li>
<li>RubyGems 1.1.0</li>
<li>Ruby on Rails 2.0.2</li>
<li>Mongrel 1.1.4</li>
<li>MySQL 5.0.22</li>
<li>Redmine Rev:1319</li>
</ul>
<h4>インストール手順</h4>
<p>パッケージ管理で必要なものをインストール（Rootで作業）</p>
<pre>
$ yum install -y ruby rdoc ruby-devel mysql-server
</pre>
<p>Ruby用パッケージ管理RubyGrmsをインストール。<a href="http://rubyforge.org/projects/rubygems" target="_blank">最新版はここから確認</a></p>
<pre>
$ wget wget http://rubyforge.org/frs/download.php/34638/rubygems-1.1.0.tgz
$ tar -zxvf rubygems-1.1.0.tgz
$ ruby rubygems-1.1.0/setup.rb
$ rm -Rf rubygems-1.1.0&#42;
</pre>
<p>Ruby on Railsインストール</p>
<pre>
$ gem install rails --include-dependencies
</pre>
<p>Mongrelインストール<span class="footnote"></p>
<pre>
$ gem install mongrel
</pre>
<p>MySQLにデータベースを用意</p>
<pre>
$ mysql -u root
&#62; create database redmine;
</pre>
<p>インストールディレクトリを準備</p>
<pre>
$ mkdir -p /home/redmine
</pre>
<p>Redmineインストール from SVN</p>
<pre>
$ cd /home/redmine
$ svn checkout http://redmine.rubyforge.org/svn/trunk/ .
</pre>
<p>DBコンフィグを編集</p>
<pre>
$ cp config/database.yml.example config/database.yml

$ vi config/database.yml

# デフォルトだとsocketの場所が違うので合わせて指定する
# &#91;production]のにsocket項目を追加

production:
adapter: mysql
database: redmine
host: localhost
username: root
password:
socket: /var/lib/mysql/mysql.sock
</pre>
<p>メールコンフィグを編集</p>
<pre>
$ vi config/environment.rb

# メール機能を使用する場合(SMTP)
# SMTP server configurationの項目を使用するSMTPサーバーの情報に変更

# 使用しない場合
config.action_mailer.perform_deliveries = false
</pre>
<p>データベースに初期データをセットアップ</p>
<pre>
$ rake db:migrate RAILS_ENV=&#34;production&#34;
</pre>
<p>使用言語を登録</p>
<pre>
$ rake load_default_data RAILS_ENV=&#34;production&#34;
&#62; ja
</pre>
<p>Mongrel起動</p>
<pre>
mongrel_rails start -d -e production

# デフォルトで3000番ポートで起動
# 変更する場合は -p 8080 の様に -p オプションで指定
</pre>
<p>確認</p>
<p>設置したサーバーの3000番ポート(<a href="http://yourdomain:3000/" target="_blank">http://yourdomain:3000/</a>)へアクセス</p>
<h4>Apacheとの連携</h4>
<p>今回は必要無かったのでそのまま動かせている。</p>
<p>ReverseProxyやSCGIを利用した方法があるらしいのでSSL使いたいとかでApacheにした場合は別途書きます。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.apecell.com/2008/04/02/id/38/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SELinux無効化</title>
		<link>http://blog.apecell.com/2008/03/30/id/36</link>
		<comments>http://blog.apecell.com/2008/03/30/id/36#comments</comments>
		<pubDate>Sat, 29 Mar 2008 15:00:00 +0000</pubDate>
		<dc:creator>design</dc:creator>
				<category><![CDATA[Howto]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[conf]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blog.apecell.com/1970/01/01/36</guid>
		<description><![CDATA[CentOSでSELinuxを無効化するメモ

# getenforce // 確認
Enforcing #有効

# setenforce 0 // 無効化

# getenforce // 確認
Permissive // 無効

// 起動時に無効化
# vi /etc/sysconfig/selinux
SELINUX=enforcing
↓
SELINUX=disabled

]]></description>
			<content:encoded><![CDATA[<p>CentOSでSELinuxを無効化するメモ</p>
<pre>
# getenforce // 確認
Enforcing #有効

# setenforce 0 // 無効化

# getenforce // 確認
Permissive // 無効

// 起動時に無効化
# vi /etc/sysconfig/selinux
SELINUX=enforcing
↓
SELINUX=disabled
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.apecell.com/2008/03/30/id/36/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WubiでUbuntu7.10とWindowsXPのデュアルブート環境</title>
		<link>http://blog.apecell.com/2007/11/25/id/25</link>
		<comments>http://blog.apecell.com/2007/11/25/id/25#comments</comments>
		<pubDate>Sat, 24 Nov 2007 15:00:00 +0000</pubDate>
		<dc:creator>design</dc:creator>
				<category><![CDATA[Howto]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.apecell.com/1970/01/01/25</guid>
		<description><![CDATA[Windows Installer形式でUbuntu(jp)をインストールでき自動的にデュアルブート環境にしてくれるWubiにてインストールしてみた。
最終的な目的はWindowsXPとUbuntuのデュアルブート環境構築、Ubuntu日本語環境、３Dデスクトップの導入
Wubiの原理はVMのようにNTFS上に大きなファイルを作りそれを使用する。メリットは手軽、Windowsドライブのマウントが楽。デメリットはNative Ubuntuに比べると若干遅い、パーティション切れない。速度的面は以下のスペックでは全く問題無し。Native Ubuntuが何とか動くスペックでは厳しいらしい。

CPU： AMD Turion(tm) 64 X2 Mobile Technology TL-50 （1.6GHz）
メモリ： 2G
HDD： 80G （Ubuntu割り当て15G）
グラフィック： ATI Radeon Xpress 1100

OSの環境は以下。

WindowsXP SP2
Ubuntu 7.10

WindowsからUbuntuをインストール
WubiのBetaはUbuntu7.04用なので7.10をインストールするためにWubi/develから最新のものを使う。今回使用したものはWubi-7.10-alpha-rev386。
起動させれば自動的にCDイメージのダウンロードが始まる。ダウンロードは遅い場合が多いので、先にダウンロードしておいても可。その場合はWubiと同一ディレクトリにisoを置けば良いらしい（未確認）、DaemonToolで仮想CDとしてマウントすればそこから読んでくる。ローカライズ版isoだと途中でインストールが止まったのでダウンロードするisoはWubiが落としてくるものを推奨。インストール言語は日本語。
用意が出来て再起動すれば、WindowsとUbuntuの起動選択画面になるのでUbuntu-linuxを選択。あとは自動的にインストールが進んで再起動するので、もう一度Ubuntu起動させればログインできる。インストールはこれで完了。インストール後は日本語入力が出来いが無視（SCIM未起動）。
Ubuntuを日本語環境に
[システム]→[設定]→[キーボード]→[レイアウト]で使用するキーボードの型式を選択。レイアウトにJapanを追加しデフォルトに設定。
Ubuntuの日本語ローカライズ版であるubuntu-desktop-jaを入れる。Japanese Teamによる追加パッケージの利用方法

$ sudo vi /etc/apt/sources.list

以下２行を追加

deb http://archive.ubuntulinux.jp/ubuntu-ja gutsy/
deb http://archive.ubuntulinux.jp/ubuntu-ja gutsy-ja/


$ sudo apt-get update
$ sudo apt-get install ubuntu-ja-keyring
$ sudo apt-get update

上記だけだと色々パッケージが見付からないと言われるので、とりあえずリポジトリのコメントアウトを除去する。

$ sudo vi /etc/apt/sources.list

#deb http://jp.archive.ubuntu.com/...
↓
deb http://jp.archive.ubuntu.com/...

#deb-src http://jp.archive.ubuntu.com/...
↓
deb-src http://jp.archive.ubuntu.com/...

ローカライズパッケージインストール

$ sudo apt-get update
$ sudo apt-get install ubuntu-desktop-ja

[システム]→[設定]→[SCIM入力メソッド設定]→[全体設定]のキーボード配列を「日本語」に変更。
再起動後、日本語入力出来る事を確認（Shift-Spaceで切替）、出来なければSCIMが立ち上がってないので端末から起動させて確認する（自動起動は後で設定）。

$ scim

これで日本語環境の設定は完了。必要なら[システム]→[システム管理]→[アップデート・マネージャ]でアップデートしておく。
2007-11-25 22:45追記GUIでファイル名変更時にキー入力を受け付けないので、以下の方法で入力方法を変更。

ファイルクリック [...]]]></description>
			<content:encoded><![CDATA[<p>Windows Installer形式で<a href="http://www.ubuntu.com/" target="_blank">Ubuntu</a>(<a href="http://www.ubuntulinux.jp/" target="_blank">jp</a>)をインストールでき自動的にデュアルブート環境にしてくれる<a href="http://wubi-installer.org/" target="_blank">Wubi</a>にてインストールしてみた。</p>
<p>最終的な目的は<em>WindowsXPとUbuntuのデュアルブート環境構築、Ubuntu日本語環境、３Dデスクトップの導入</em></p>
<p>Wubiの原理はVMのようにNTFS上に大きなファイルを作りそれを使用する。メリットは手軽、Windowsドライブのマウントが楽。デメリットはNative Ubuntuに比べると若干遅い、パーティション切れない。速度的面は以下のスペックでは全く問題無し。Native Ubuntuが何とか動くスペックでは厳しいらしい。</p>
<ul>
<li>CPU： AMD Turion(tm) 64 X2 Mobile Technology TL-50 （1.6GHz）</li>
<li>メモリ： 2G</li>
<li>HDD： 80G （Ubuntu割り当て15G）</li>
<li>グラフィック： ATI Radeon Xpress 1100</li>
</ul>
<p>OSの環境は以下。</p>
<ul>
<li>WindowsXP SP2</li>
<li>Ubuntu 7.10</li>
</ul>
<h4>WindowsからUbuntuをインストール</h4>
<p>WubiのBetaはUbuntu7.04用なので7.10をインストールするために<a href="http://wubi-installer.org/devel/minefield/">Wubi/devel</a>から最新のものを使う。今回使用したものはWubi-7.10-alpha-rev386。</p>
<p>起動させれば自動的にCDイメージのダウンロードが始まる。ダウンロードは遅い場合が多いので、先にダウンロードしておいても可。その場合はWubiと同一ディレクトリにisoを置けば良いらしい（未確認）、DaemonToolで仮想CDとしてマウントすればそこから読んでくる。<em>ローカライズ版isoだと途中でインストールが止まった</em>のでダウンロードするisoはWubiが落としてくるものを推奨。インストール言語は日本語。</p>
<p>用意が出来て再起動すれば、WindowsとUbuntuの起動選択画面になるのでUbuntu-linuxを選択。あとは自動的にインストールが進んで再起動するので、もう一度Ubuntu起動させればログインできる。インストールはこれで完了。インストール後は日本語入力が出来いが無視（SCIM未起動）。</p>
<h4>Ubuntuを日本語環境に</h4>
<p><em>[システム]→[設定]→[キーボード]→[レイアウト]</em>で使用するキーボードの型式を選択。レイアウトにJapanを追加しデフォルトに設定。</p>
<p>Ubuntuの日本語ローカライズ版であるubuntu-desktop-jaを入れる。<br /><a href="http://www.ubuntulinux.jp/products/JA-Localized" target="_blank">Japanese Teamによる追加パッケージの利用方法</a></p>
<pre>
$ sudo vi /etc/apt/sources.list
</pre>
<p>以下２行を追加</p>
<pre>
deb http://archive.ubuntulinux.jp/ubuntu-ja gutsy/
deb http://archive.ubuntulinux.jp/ubuntu-ja gutsy-ja/
</pre>
<pre>
$ sudo apt-get update
$ sudo apt-get install ubuntu-ja-keyring
$ sudo apt-get update
</pre>
<p>上記だけだと色々パッケージが見付からないと言われるので、とりあえずリポジトリのコメントアウトを除去する。</p>
<pre>
$ sudo vi /etc/apt/sources.list

#deb http://jp.archive.ubuntu.com/...
↓
deb http://jp.archive.ubuntu.com/...

#deb-src http://jp.archive.ubuntu.com/...
↓
deb-src http://jp.archive.ubuntu.com/...
</pre>
<p>ローカライズパッケージインストール</p>
<pre>
$ sudo apt-get update
$ sudo apt-get install ubuntu-desktop-ja
</pre>
<p><em>[システム]→[設定]→[SCIM入力メソッド設定]→[全体設定]</em>のキーボード配列を「日本語」に変更。</p>
<p>再起動後、日本語入力出来る事を確認（Shift-Spaceで切替）、出来なければSCIMが立ち上がってないので端末から起動させて確認する（自動起動は後で設定）。</p>
<pre>
$ scim
</pre>
<p>これで日本語環境の設定は完了。必要なら<em>[システム]→[システム管理]→[アップデート・マネージャ]</em>でアップデートしておく。</p>
<p><em class="add">2007-11-25 22:45追記</em>GUIでファイル名変更時にキー入力を受け付けないので、以下の方法で入力方法を変更。</p>
<ol>
<li>ファイルクリック → F2</li>
<li>名前欄右クリック</li>
<li>入力メソッド → SCIM Input Methodを選択</li>
</ol>
<h4>3Dデスクトップ環境「Compiz Fusion」を設定</h4>
<blockquote title="Ubuntu 7.10 Gusty の Compiz Fusion で 3Dデスクトップ" cite="http://retujyou.com/2007/11/06/ubuntu-710-gusty-compiz-fusion/">
<p>Ubuntu 7.10 Gusty には標準で Compiz Fusion が入ってるので Beryl はいりません。Compiz Fusionってのは Compiz に Beryl を統合させたものだそうなので。</p>
<p><cite><a href="http://retujyou.com/2007/11/06/ubuntu-710-gusty-compiz-fusion/">Ubuntu 7.10 Gusty の Compiz Fusion で 3Dデスクトップ</a></cite></p></blockquote>
<p>上記引用元の解説の通り<em>[システム] → [システム管理] → [制限つきドライバの管理] → [ATIの高性能グラフィックドライバ]→有効にする</em>でドライバを入れる。リポジトリのコメントアウトを元に戻しておくとパッケージが見付からないと言われたので解除しておく。</p>
<p>設定変更用パッケージを入れる</p>
<pre>
$ sudo apt-get install compizconfig-settings-manager emerald
</pre>
<p><em>[システム] → [設定] → [外観の設定] → [視覚効果] → [設定変更]</em>で必要に応じた設定に変更。</p>
<p>ここで「<em>The Composite extension is not available</em>」というエラーが出たので、以下をインストール後再起動で解決。</p>
<pre>
$ sudo apt-get install xserver-xgl
</pre>
<p><a href="http://forum.ubuntulinux.jp/viewtopic.php?pid=6089" target="_blank">Ubuntu日本語フォーラム / The Composite extension is not availableとでてしまいます。</a></p>
<h4>SCIM自動起動</h4>
<p>ローカライズパッケージインストール時にSCIMが自動起動するようになっていたはずが、Compiz Fusion動かすと何故か無効になっていた。</p>
<p><em>[システム] → [設定] → [セッション]→[自動起動するプログラム</em>から追加をクリックし、名前・コマンドに「scim」、説明に「input method」と入力し追加。</p>
<p>再起動し立ち上がっている事を確認。</p>
<h4>日本語入力ONにするとなにかとクラッシュ問題</h4>
<p><em>[システム]→[設定]→[SCIM入力メソッド設定]→[全体設定]</em>の「全てのアプリケーションで同一入力メソッドを使用」のチェックを外すか、$GTK_IM_MODULEをscim-bridgeに変更する。</p>
<pre>
$ export GTK_IM_MODULE=scim-bridge
</pre>
<pre>
$ echo $GTK_IM_MODULE
scim-bridge
</pre>
<p><a href="http://forum.ubuntulinux.jp/viewtopic.php?id=847" target="_blank">Ubuntu日本語フォーラム / Firefox クラッシュ on 7.10</a></p>
<p>これで当初の目的は完了。今のところ問題なく使用できているのでしばらく様子見。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.apecell.com/2007/11/25/id/25/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>上書き出来ないphp.iniの設定方法</title>
		<link>http://blog.apecell.com/2007/10/10/id/15</link>
		<comments>http://blog.apecell.com/2007/10/10/id/15#comments</comments>
		<pubDate>Tue, 09 Oct 2007 15:00:00 +0000</pubDate>
		<dc:creator>design</dc:creator>
				<category><![CDATA[Develop]]></category>
		<category><![CDATA[Howto]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[conf]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.apecell.com/1970/01/01/15</guid>
		<description><![CDATA[PHPの設定はphp.ini、 httpd.conf、 .htaccessの順に読み込まれ変更可能なら新しい値で上書きされる。
どのレベルで上書き出来ないかはマニュアルのphp.iniディレクティブ参照。
php.iniディレクティブで書かれているものはPHPで決められているもので、別途httpd.confレベルで変更の可否が指定出来る(.htaccessで変更出来ない)。
httpd.confのphp.ini設定で使用出来る値は以下の4つ。

php_value
php_flag
php_admin_value
php_admin_flag

php_adminが付いた方で指定する事で.htaccessでの変更を制限する。


 php_admin_value name value
指定した設定オプションに値を設定します。このディレクティブは、.htaccess  ファイルでは利用できません。また、 php_admin_value  で設定された設定オプションの値は、.htaccess では上書きできません。 セット済みの値をクリアしたい場合は、none を 値として使用してください。
php_admin_flag name on&#124;off
設定オプションに論理値を設定するために使用します。 このディレクティブは、.htaccess ファイルでは利用できません。 php_admin_value で設定された設定オプションの値は、.htaccess  では上書きできません。

PHP: 設定を変更するには &#8211; Manual
専用サーバーだと設定する事は少なそうなもののインフラとシステムの構築が分かれたりする場合、この方法で制限を掛けれるので(もちろんApache経由での実行に限る)覚えておくと良いかも
]]></description>
			<content:encoded><![CDATA[<p>PHPの設定は<em>php.ini、 httpd.conf、 .htaccess</em>の順に読み込まれ変更可能なら新しい値で上書きされる。</p>
<p>どのレベルで上書き出来ないかはマニュアルの<a href="http://www.php.net/manual/ja/ini.php" target="_blank">php.iniディレクティブ</a>参照。</p>
<p>php.iniディレクティブで書かれているものはPHPで決められているもので、別途httpd.confレベルで変更の可否が指定出来る(.htaccessで変更出来ない)。</p>
<p>httpd.confのphp.ini設定で使用出来る値は以下の4つ。</p>
<ul>
<li>php_value</li>
<li>php_flag</li>
<li>php_admin_value</li>
<li>php_admin_flag</li>
</ul>
<p>php_adminが付いた方で指定する事で.htaccessでの変更を制限する。</p>
<blockquote title="PHP: 設定を変更するには - Manual" cite="http://www.php.net/manual/ja/configuration.changes.php">
<dl>
<dt><em> php_admin_value <var>name</var> <var>value</var></em></dt>
<dd>指定した設定オプションに値を設定します。このディレクティブは、.htaccess  ファイルでは利用できません。また、 php_admin_value  で設定された設定オプションの値は、.htaccess では上書きできません。 セット済みの値をクリアしたい場合は、none を 値として使用してください。</dd>
<dt><em>php_admin_flag <var>name</var> <var>on|off</var></em></dt>
<dd>設定オプションに論理値を設定するために使用します。 このディレクティブは、.htaccess ファイルでは利用できません。 php_admin_value で設定された設定オプションの値は、.htaccess  では上書きできません。</dd>
</dl>
<p><cite><a href="http://www.php.net/manual/ja/configuration.changes.php">PHP: 設定を変更するには &#8211; Manual</a></cite></p></blockquote>
<p>専用サーバーだと設定する事は少なそうなもののインフラとシステムの構築が分かれたりする場合、この方法で制限を掛けれるので(もちろんApache経由での実行に限る)覚えておくと良いかも</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.apecell.com/2007/10/10/id/15/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DebianへQmailをインストールするには</title>
		<link>http://blog.apecell.com/2007/10/09/id/14</link>
		<comments>http://blog.apecell.com/2007/10/09/id/14#comments</comments>
		<pubDate>Mon, 08 Oct 2007 15:00:00 +0000</pubDate>
		<dc:creator>design</dc:creator>
				<category><![CDATA[Howto]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[qmail]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://blog.apecell.com/1970/01/01/14</guid>
		<description><![CDATA[Debianは標準でEximというMTAが入っているが、日本では余り馴染みが無くPostfixやQmailを使う事が多い。
DebianはQmailのバイナリパッケージが用意されていないのでソースパッケージからインストールを行う（DebianのポリシーにQmaiのライセンス形態が合わなかったらしく用意されていない）。
以下Debian4.0にQmailのインストール方法
eximアンインストール

# apt-get remove --purge exim4 exim4-base exim4-config

ソースパッケージ取得用にapt-getの設定に追記

# vi /etc/apt/sources.list
deb, deb-src の行末に non-free 追記

パッケージの取得・インストール

# apt-get update
# apt-get install qmail-src ucspi-tcp-src
# build-ucspi-tcp
# build-qmail

設定追記・テストメール送信

# echo &#34;your.domain&#34; &#62;&#62; /var/qmail/control/me
# echo &#34;your.domain&#34; &#62;&#62; /var/qmail/control/rcpthosts
# echo &#34;your.domain&#34; &#62;&#62; /var/qmail/control/locals

# echo &#34;test&#34; &#124; mail &#34;your@mailaddress&#34;

で、テストメールを確認して完了。
Postfixの場合はバイナリパッケージが用意されているのでapt-getで入れれば自動的にEximもアンインストールされる。
]]></description>
			<content:encoded><![CDATA[<p>Debianは標準で<a href="http://www.exim.org/" target="_blank">Exim</a>というMTAが入っているが、日本では余り馴染みが無く<a href="http://www.postfix.org/" target="_blank">Postfix</a>や<a href="http://cr.yp.to/qmail.html" target="_blank">Qmail</a>を使う事が多い。</p>
<p>DebianはQmailのバイナリパッケージが用意されていないのでソースパッケージからインストールを行う（DebianのポリシーにQmaiのライセンス形態が合わなかったらしく用意されていない）。</p>
<h4>以下Debian4.0にQmailのインストール方法</h4>
<p>eximアンインストール</p>
<pre>
# apt-get remove --purge exim4 exim4-base exim4-config
</pre>
<p>ソースパッケージ取得用にapt-getの設定に追記</p>
<pre>
# vi /etc/apt/sources.list
deb, deb-src の行末に non-free 追記
</pre>
<p>パッケージの取得・インストール</p>
<pre>
# apt-get update
# apt-get install qmail-src ucspi-tcp-src
# build-ucspi-tcp
# build-qmail
</pre>
<p>設定追記・テストメール送信</p>
<pre>
# echo &#34;your.domain&#34; &#62;&#62; /var/qmail/control/me
# echo &#34;your.domain&#34; &#62;&#62; /var/qmail/control/rcpthosts
# echo &#34;your.domain&#34; &#62;&#62; /var/qmail/control/locals

# echo &#34;test&#34; | mail &#34;your@mailaddress&#34;
</pre>
<p>で、テストメールを確認して完了。</p>
<p>Postfixの場合はバイナリパッケージが用意されているのでapt-getで入れれば自動的にEximもアンインストールされる。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.apecell.com/2007/10/09/id/14/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend FrameworkのViewをSmartyに変更するには</title>
		<link>http://blog.apecell.com/2007/09/26/id/10</link>
		<comments>http://blog.apecell.com/2007/09/26/id/10#comments</comments>
		<pubDate>Tue, 25 Sep 2007 15:00:00 +0000</pubDate>
		<dc:creator>design</dc:creator>
				<category><![CDATA[Develop]]></category>
		<category><![CDATA[Howto]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[zendframework]]></category>

		<guid isPermaLink="false">http://blog.apecell.com/1970/01/01/10</guid>
		<description><![CDATA[
標準のZend Viewより使い慣れたSmartyを使いたかったので差し替えてみることに。
Zend Framework: Document &#8211; 35.3.2. 別のテンプレートシステムの使用の項目だけだとSmartyは呼び出せても実際どうやってControllerに組み込むの？となってしまう。
とりあえずControllerのViewを差し替えてみるかと思いZend_Controller_Actionを継承してinit()でSmartyを差し替えた。

&#60;?php
class Sample_Controller_Action extends Zend_Controller_Action {
    /**
     * @var Zend_Config
     */
    protected $_config;

    public function init() {
        // コンフィグの読み込み
        [...]]]></description>
			<content:encoded><![CDATA[<div class="section">
<p>標準のZend Viewより使い慣れたSmartyを使いたかったので差し替えてみることに。</p>
<p><a href="http://framework.zend.com/manual/ja/zend.view.scripts.html#zend.view.scripts.templates" target="_blank">Zend Framework: Document &#8211; 35.3.2. 別のテンプレートシステムの使用</a>の項目だけだとSmartyは呼び出せても実際どうやってControllerに組み込むの？となってしまう。</p>
<p>とりあえずControllerのViewを差し替えてみるかと思いZend_Controller_Actionを継承してinit()でSmartyを差し替えた。</p>
<pre name="code" class="php">
&lt;?php
class Sample_Controller_Action extends Zend_Controller_Action {
    /**
     * @var Zend_Config
     */
    protected $_config;

    public function init() {
        // コンフィグの読み込み
        $this-&gt;_config = Zend_Registry::get('config');

        $extraParams = array(
            'compile_dir' =&gt; $config-&gt;smarty-&gt;compile_dir,
        );
        $this-&gt;view = new Sample_View_Smarty(null, $extraParams);
        $this-&gt;viewSuffix = 'tpl';
    }
}
</pre>
<p>が、上記だと上手くいかなかったわけで。</p>
<p>続いてActionHelperのViewRendererとしてSmartyを登録する方法で挑戦。</p>
<pre name="class" class="php">
<?php
$config = new Zend_Config_Ini('/path/to/config.ini', 'production');

$extraParams = array(
    'compile_dir' => $config->smarty->compile_dir,
);

// マニュアルに書かれているSmarty用View
$view = new Sample_View_Smarty(null, $extraParams);

$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view);
$viewRenderer->setViewBasePathSpec($config->smarty->template_dir)
    ->setViewScriptPathSpec(':controller/:action.:suffix')
    ->setViewScriptPathNoControllerSpec(':action.:suffix')
    ->setViewSuffix('tpl');

Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
</pre>
<p>上記方法で変更出来た。</p>
<p>これは継承したinit()では書かず、Controllerが呼ばれる前に書いた（Zend_Controller_Front::run()の前）。複数のテンプレートエンジン使い分ける事はほとんど無いと思われるのでこれで大丈夫かなと。</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.apecell.com/2007/09/26/id/10/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ほぼ年齢の計算式</title>
		<link>http://blog.apecell.com/2007/09/16/id/7</link>
		<comments>http://blog.apecell.com/2007/09/16/id/7#comments</comments>
		<pubDate>Sat, 15 Sep 2007 15:00:00 +0000</pubDate>
		<dc:creator>design</dc:creator>
				<category><![CDATA[Develop]]></category>
		<category><![CDATA[Howto]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.apecell.com/1970/01/01/7</guid>
		<description><![CDATA[年齢の計算式は良く使う。
MySQLはマニュアルにも書いてあるけど。
SELECT (YEAR(CURDATE())-YEAR(`birth`)) - (RIGHT(CURDATE(), 5) &#62; RIGHT(`birth`, 5)) AS `age`
プログラムで書く場合
((現在日時-生年月日）/10000)切り上げ
$birth = 19830221;
echo (int) ((date('Ymd') - $birth) /10000);

となる。が「ほぼ」年齢の計算式と書いたのは正確には「誕生日の前日が終了する瞬間」に年齢が加算されるので前日には年齢が上がっている。
利用する業務によってはその1日で大きな違いにもなる。以下のリンクに具体的な問題点などの指摘があるので留意。

ある地方公務員電算担当のナヤミ
「生年月日から年齢を計算する簡単な計算式」は使えるとは限らない


]]></description>
			<content:encoded><![CDATA[<p>年齢の計算式は良く使う。</p>
<p>MySQLは<a href="http://dev.mysql.com/doc/refman/4.1/ja/date-calculations.html" target="_blank">マニュアル</a>にも書いてあるけど。</p>
<pre class="syntax-highlight"><span class="synStatement">SELECT</span> (YEAR(CURDATE())-YEAR(`birth`)) - (RIGHT(CURDATE(), <span class="synConstant">5</span>) &gt; RIGHT(`birth`, <span class="synConstant">5</span>)) <span class="synSpecial">AS</span> `age`</pre>
<p>プログラムで書く場合</p>
<pre>((現在日時-生年月日）/10000)切り上げ</pre>
<pre class="syntax-highlight"><span class="synSpecial"><span class="synStatement">$</span><span class="synIdentifier">birth</span> <span class="synStatement">=</span> <span class="synConstant">19830221</span>;
<span class="synPreProc">echo</span> <span class="synSpecial">(</span><span class="synType">int</span><span class="synSpecial">)</span> <span class="synSpecial">((</span><span class="synIdentifier">date</span><span class="synSpecial">(</span>'<span class="synConstant">Ymd</span>'<span class="synSpecial">)</span> <span class="synStatement">-</span> <span class="synStatement">$</span><span class="synIdentifier">birth</span><span class="synSpecial">)</span> <span class="synStatement">/</span><span class="synConstant">10000</span><span class="synSpecial">)</span>;
</span></pre>
<p>となる。が「ほぼ」年齢の計算式と書いたのは正確には「誕生日の前日が終了する瞬間」に年齢が加算されるので前日には年齢が上がっている。</p>
<p>利用する業務によってはその1日で大きな違いにもなる。以下のリンクに具体的な問題点などの指摘があるので留意。</p>
<dl>
<dt>ある地方公務員電算担当のナヤミ</dt>
<dd><a href="http://d.hatena.ne.jp/alittlething/20070827/p1" target="_blank">「生年月日から年齢を計算する簡単な計算式」は使えるとは限らない</a></dd>
</dl>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.apecell.com/2007/09/16/id/7/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
