phpMyAdmin 2.11.6をインストール

Mac OS X (Leopard)に、phpMyAdmin 2.1.16をインストールしました。

普段は、ターミナルからコマンドラインで、DBは扱うのですが、
データのインポート、エクスポートは、phpMyAdminが楽だと思っているので。
たまに、alterコマンドで、カラムの型変換等のコマンドラインを忘れますが、
phpMyAdminがあれば、ど忘れしたときでも平気です。

簡単にインストールできたので、開発環境構築時についでに
インストールしておいて損はないと思います。

参考にさせていただいたページはこちらです。
http://www.kadoppe.net/2007/12/mac-os-xleopardphpmyadmin.html

VirtualHost設定

作成するサイトのURLを決め、hosts、VirtualHostにサーバ名を追加して、Apache再起動。

今回は、3つのVirrualHostを設定したのですが、この3つのドメイン名を打ち込んでも、
一番最初に記述してあるVirtualHostのDocumentRootを見にいってしまっている。

なんでだろう?30分くらい調べてたけど、よくわからなかったのです。
さきほど、再度調べていたら、もしかしたら NameVirtualHost の記述忘れな気がしてきました。

<VirtualHost xx>~</VirtualHost>の部分ばかり調べてて、頭から抜けてました。
そして、多分これ基本ですよね。自分のサーバ周りの知識のなさが浮き彫りに。。

早速、時間が取れたときに試してみます。

==== 追記 2008/05/03 ===
NameVirrualHostの記述を追記して、Apache再起動したら正常に動作しました。

環境構築一区切り

Apache2.0.61、mysql-5.1.23-rc、php-5.2.4のインストール終了。
http://localhost/でphpinfo();を表示できるところまで確認。
mysqlもターミナルからコマンドラインでなら接続可能なことも確認。

次は、phpプログラムからmysqlに接続できることを確認しよう。
あんまり理解は深まってはいないけど、前に進んでいる感じがうれしい。
configureのオプションって、迷いますね。

参考にさせていただいたのは、このあたりです。
http://www.kadoppe.net/2007/12/mac-os-xleopardxcode.html
http://www.kadoppe.net/2007/12/mac-os-xmysql5051.html
http://www.kadoppe.net/2007/12/mac-os-xleopardapache-2061-1.html
http://www.kadoppe.net/2007/12/mac-os-xleopardphp-512.html
http://hivelogic.com/articles/2007/11/installing-mysql-on-mac-os-x
http://d.hatena.ne.jp/heavenshell/20071114

configureは以下のとおりです

【mysql】

CC=gcc CFLAGS=”-O3 -fno-omit-frame-pointer” CXX=gcc CXXFLAGS=”-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti” ./configure –prefix=/opt/local/mysql –enable-assembler –with-mysqld-ldflags=-all-static -with-charset=utf8 –with-extra-charsets=complex –enable-thread-safe-client –enable-local-infile –disable-shared

【apache】

./configure –prefix=/opt/local/apache2 –enable-force-cgi-redirect –with-gd –enable-ftp –enable-memory-limit –with-ttf –enable-track-vars –enable-trans-sid –enable-zend-multibyte –enable-mbstring –enable-mbstr-enc-trans –enable-mbregex –enable-exif –with-curl –enable-soap –enable-so –enable-rewrite=shared

【php】

./configure –prefix=/opt/local/php –with-apxs2=/opt/local/apache2/bin/apxs –with-zlib=/opt/local –enable-calendar –enable-exif –enable-zend-multibyte –enable-mbstring –enable-mbregex –with-libxml-dir=/opt/local –with-mysql=/opt/local/mysql –with-jpeg-dir=/opt/local –with-png-dir=/opt/local –with-t1lib=/opt/local –with-iconv –with-iconv-dir=/usr –with-mcrypt=/opt/local –with-curl=/opt/local –with-freetype-dir=/opt/local –with-gettext=/opt/local –with-xmlrpc –with-pear –enable-soap –with-pdo-mysql=/opt/local/mysql –enable-cli

Mac Book Pro買いました

今までデスクトップのみでやってきましたが、
ノートが必要になってきて、どうせならってことで、Mac Book Proを買いました。

今、MySQLをインストールしたりしています。
今回、ソースからコンパイルしてインストールしようとしてますが、
今のところ、エラーが出てうまくいっていません。

これから、やったことを少しずつまとめていきます。自分で忘れないためにも。

無線LANも今回初めて導入したのですが、ケーブルがないことが
こんなに快適だってことに、驚いています。

そして、電源ケーブルのプラスチックのキャップを初日になくしました。
こういうところは相変わらずです。がさつなのです。

iTuneで曲のデータが消えた

ちょっと前に、Windows XP 64bit版から、Windows XP 32bit版に、OSを入れなおしたのです。

音楽データは、外付けHDDに入れていたので、特に面倒はなかったのですが、
iTuneをインストールして、iTuneフォルダを読み込んだら・・・
wavエンコーダで取り込んだCDのデータが、曲名しかわからなくなっていました。
誰の曲かも、アルバム名も、ジャンルも、全部わからなくなってました。

これは困る。。。さすがに曲名だけでは判別できません。CDもうないですし。
アルバム情報とかが残っていたファイルを見たら、m4a(AACエンコード)、
aif(AIFFエンコード)の2種類でした。
Macだとmp3の代わりにm4a、wavの代わりにaifを推奨してますよね。
もしかしたら、AIFFエンコードだとOKなのかな?という予測のもと、
まだ持っていたCDから、AIFFで取り込みなおしています。

私のPCでは、aifファイルは音楽CDとして焼けないので、
CDにするときは、wavに変換する必要があるのですが、アーティスト情報が大事です。
分類するキーですからね。

XP 64bit版で取り込んでたからNGだったのかな?原因はよくわかりません。

スパム

先週からいきなりスパムっぽいコメントが突き出した。
認証せずに無条件に公開するようにしてから、早かった。

画像の文字列で認証する機能をつけよう。
hetemlだと、できたはずだから。必要なモジュールが入っていたはず。

Zend_Mailで日本語のFrom情報を扱う

以前の記事で、Fromの名前の部分が化けてしまうということを書きましたが、
解決方法がわかったので、ここに残しておきます。

参考になったのは http://iandeth.dyndns.org/mt/ian/archives/000628.html です。
ここに、日本語のヘッダーを扱うためには、ISO-2022-JPに文字コードを変換して、
さらにbase64でエンコードして、さらに “=?ISO-2022-JP?B?”と”?=”で囲む必要があると。
今まで、mb_encode_mimeheaderを何も考えずに使っていましたが、
内部では上記のbase64エンコード以降のことをやってくれていたんですね。

ここまでを踏まえて、Zend_Mailのソースを見たところ、メールヘッダーはすべて、
base64ではなく、printableでエンコードされていました。
文字化けの原因はここでした。日本語に対応した処理でなかったとうことです。

しかし、printableでエンコードしている部分( _encodeHeaderメソッド)を、
base64でエンコードするようにしてしまうと、送信日時等の日本語が入ることがない
ヘッダーが受信側で正確にデコードされなくなってしまいます。

base64でエンコードしないとおかしくなるのは、Fromです。(場合によっては、Subjectも)
なので、setFromメソッドで、_encodeHeaderメソッドを呼び出している部分を、
mb_encode_mimeheaderを使ってエンコードするように変更したらOKです。

$this->_encodeHeader(‘”‘.$name.'”‘)

  ↓

mb_encode_mimeheader(‘”‘.$name.'”‘, ‘ISO-2022-JP’)

mb_encode_mimeheaderについては、下記をご参照ください。
http://phpspot.net/php/man/php/function.mb-encode-mimeheader.html

プログラムを設置しているサーバからZend_Mailだけを使って送信する場合は、
必ず文字化けするようなので、この対応は必須です。
メールサーバにSMTP認証して送信する場合(Zend_Mail_Transport_Smtp利用)は、
上記対応をしなくても、文字化けしていない場合もありました。
メールサーバ側で、うまいことやってくれているのかもしれません。

instanceof って便利

Zendを使うようになってから、同時に利用するようになったもの。
if 文での instanceof 判定。判定対象のオブジェクトの型を判定してくれる。

Dbから値を取得した際の処理に便利。

if ($rows instanceof Zend_Db_Table_Row)  の場合、
if ($rows instanceof Zend_Db_Table_RowSet) の場合。両方の処理を準備する。

Zend_Db_Table_Rowsetの場合は、Zend_Db_Table_Rowの場合の処理を
再帰的に呼び出すことでOKな場合も多々あります。

感覚でいうと1次元配列、2次元配列を気にせずに処理できるメソッドができる。
1次元配列と2次元配列を簡単に判定する方法を知らないから、とても便利に感じる。
たとえば、Dbから取得したカラム毎の合計値を取得するなら、
下記のように処理すればOKです。

public function getSumList($rows, $sumList=null)
{
 if (is_null($sumList)) $sumList = $this->getInitial();

 if (!is_null($rows)){
  if ($rows instanceof Zend_Db_Table_Row){
   $list = $rows->toArray();
   foreach ($list as $key => $value) $sumList[$key] += $value;
  }else if ($rows instanceof Zend_Db_Table_Rowset){
   foreach ($rows as $row) $sumList = $this->getSumList($row, $sumList);
  }
 }

 return $sumList;
}

$this->getInitial()は、$sumListに初期値を設定する関数です。
+= するためにnullだと気持ちが悪いので、0を設定しているだけの処理です。
カラム名は、Zend_Db_Table_Abstractクラスのinfo()関数で簡単にとってこれます。

カラム名の取得については、
http://framework.zend.com/manual/ja/zend.db.table.html#zend.db.table.info
10.5.10. テーブルのメタデータ情報の取得 を見てみてください。

JUGEMの管理画面リニューアル

このブログを書き始める前、DJのことを中心にJUGEMでブログ書いてました。
JUGEMがわからないって方は、JUGEMのページをご覧ください。

自分でサーバ借りて、Movable Typeを触ってみようってところから始まったこのブログ。
デザインとか、相変わらずさっぱりいじってませんが、ぼちぼち続けれています。
そんな中、久々にJUGEMの管理者画面にログインしてみたら、右上に
【新管理者ページに変更】ってリンクができてました。
クリックしてみると、今までの管理画面がとてもシンプルに見えるくらい、
ぱっと明るくて、今までポータル(http://jugem.jp)に行かないと
見れなかったような情報も多少みることができます。

まだ使っていないので、使い心地はわかりませんが、
パッと見は新しい管理画面の方がいいなーと感じました。

このブログとはまた別に、何か書いてみようという気になるくらい。
なんについて書きたくなるか、まだ分からないけれど。

Windows開発環境

http://gigazine.net/index.php?/news/comments/20080324_vertrigoserv/

XAMPPみたいなものだけど、より使いやすいように見える。
全部、同じ設定画面内でいじれるってのは便利そう。

セパレーターがWindowsとサーバ(Linux)で異なるのが嫌で、VMWareを立ち上げたのだけど、
パスの設定をほぼいじることのない開発の時期になると、
これでもいいのかなと思ったりもします。

とりあえず、インストールして触ってみよう。