投稿

9月, 2009の投稿を表示しています

【PHP】Zend_Mailを使ってメールを送信する(SMTP)(日本語対応)

Zend_Mailを使ってメールを受信する方法。今度はメールを送信してみたときのメモ。Zend Frameworkのバージョンは1.9.2サンプルコードは次のような感じ。そのまま貼り付けているので、各メソッドに渡すパラメータは適宜書き換える必要有り。基本は公式ドキュメントを参考に。require_once('Zend/Mail.php'); $objMail = new Zend_Mail('ISO-2022-JP'); $objMail->setFrom($aMail['from']['address']); $objMail->addTo($aMail['to']['address']); foreach ($aMail['cc'] as $aItem) { $objMail->addCc($aItem['address']); } foreach ($aMail['bcc'] as $aItem) { $objMail->addBcc($aItem['address']); } $objMail->setSubject(MailUtil::getEncodeString($aMail['subject'])); $objMail->setBodyText(MailUtil::getEncodeString($aMail['body'])); $objMail->send(); class MailUtil { /** * メール送信用にISO-2022-JPエンコードする * * @param string $sString エンコード文字列 * @param string $sFromEncode 元の文字コード * @return string エンコードした結果 */ public static function getEncodeString($sString, $sFromEncode=…

【PHP】Zend_Mailを使ってメールを受信する(POP3)(日本語対応)

Zend FrameworkZend_Mailを使って、メールの受信を実装したときのメモ。Zend_MailはGoogle先生に聞いてみると、ソースをいじらないと日本語に対応できないというお答えが返ってくるので、ちょっと嫌な感じはしたけど、実際やってみたらソースに手を加えずに受信も送信もできた。Zend Frameworkのバージョンは1.9.2メール受信するサンプルコードは次のような感じ。$mail = new Zend_Mail_Storage_Pop3(array('host' => 'localhost', 'user' => 'test', 'password' => 'test')); echo $mail->countMessages() . " messages found\n"; foreach ($mail as $message) { echo "Mail from '{$message->from}': {$message->subject}\n"; } この辺は公式マニュアルを読んだ方が分かりやすい。件名が文字化けするのは内部エンコードに問題があるらしいので、次のような感じでデコードする。 /** * メールの件名をdecodeする * * @param string $sSubject エンコードされた件名 * @param string $sEncode 最後にエンコードする文字コード * @return string デコードした件名 */ public static function decodeSubject($sSubject, $sEncode = 'UTF-8') { $sReturn = '';…

【Icecast】別ポートでIcecastサーバーを複数起動する

Icecastを複数起動して、管理画面も別のアドレスで参照したかったので設定したメモ。icecastのインストールの仕方は前の記事を参考に。以下は既にicecastのコンパイルとインストールが終わっている前提。ポート8001用のicecastにする場合は次のようにする。プログラムをコピーする
# cp /usr/local/bin/icecast /usr/local/bin/icecast8001起動スクリプトをicecast8001用に書き換える#!/bin/sh # # icecast This shell script takes care of starting and stopping # the icecast multimedia streaming systen. # # chkconfig: - 85 15 # description: icecast is a multimedia streaming daemon. It is used to \ # relay and offer multimedia streaming content. # processname: icecast # pidfile: /var/run/icecast/icecast.pid DAEMON=/usr/local/bin/icecast8001 CONFIGFILE="/usr/local/etc/icecast8001.xml" LOCKFILE="/var/lock/subsys/icecast8001" PIDNAME=icecast8001 # Source function library. . /etc/rc.d/init.d/functions [ -x $DAEMON ] || exit 0 # See how we were called. case "$1" in start) # Start daemon. echo -n $"Starting $PIDNAME streaming daemon: " daemon "$DAEMON -b -c $CONFIG…

【Icecast】出力されるstream_startのフォーマットを変更する

Icecastの管理画面を見やすくしようとxsltをいじっていたときのメモ。Icecastのコンパイルとインストールは前の記事を参照。ストリーミングが開始された時間はstream_startという属性にもっているのだけど、これが「Sun, 23 Sep 2009 08:01:01 +8000」というような表示なので見やすくない。これをxsltでうまいこと表示させようと思ったけど大変そうだったので、ソースを変更することにした。変更するのは、icecast-2.3.2/src/stats.cの586行目あたり //strftime (buffer, sizeof (buffer), "%a, %d %b %Y %H:%M:%S %z", &local); strftime (buffer, sizeof (buffer), "%Y/%m/%d %H:%M:%S", &local); 編集したら再コンパイルとインストールする。icecast.xmlは上書きされない。これで「2009/09/23 08:01:01」という感じで表示されるようになる。strftimeの詳細はこちらを参考に。関連リンク【Linux】Icecast serverのクライアントIceSをコンパイル、インストールIcecast + winamp + edcastで音声のストリーミング(ラジオ局)Icecastのコンパイルとインストール

円とスリランカ ルピーを両替する

調べたときのメモ。時間と両替する場所によって変わるけど、目安として知っておくと便利。YAHOO! FINANCEのページが分かりやすい(計算しやすい)。

.htaccessで特定のファイルだけ参照不可(禁止)にする

XMLファイルに設定情報を記述すると読みやすいけど、ファイルのアドレスを指定されると外部から参照できてしまうので、どうしようかなと思ったときのメモ。.htaccessが使えるなら特定のファイルだけ参照できないように設定が可能。xmlだけ参照不可にする場合は次のように記述する<Files ~ "\.xml$">
  deny from all
</Files>詳しくはここのサイトを参考に。.htaccessはほとんどのレンタルサーバーで使えると思うけど、自前のサーバーの場合はAllowOverride Allの設定を忘れずにAlias /site /opt/www/
<Directory "/opt/www/">
   AllowOverride All
   Order allow,deny
   Allow from all
</Directory>前の記事も参考に。.htaccessと.htpasswdで簡易ユーザ認証Googleカレンダーにicalを読み込ませるapacheの設定を前に書いたので、そっちも参考になるかも。GoogleカレンダーにだけiCal形式のファイル参照を許可する

【Linux】Icecast serverのクライアントIceSをコンパイル、インストール

イメージ
前の記事で音楽(mp3など)ファイルをストリーミング配信(インターネットラジオ)するIcecastのコンパイルとインストールを書いたけど、そのIcecast Serverに接続してストリーミング配信の設定するクライアントユーティリティIceSをコンパイル、インストールしてみた。環境はCentOS 5.3ちなみにWindows環境でwinampからIcecast Serverに接続する方法はこちらの記事を参考に。ソースをここからダウンロード→解凍→コンパイル→インストール。コンパイルに必要なソフトはicecast serverをインストールした記事を参考に。# tar xzvf ices-2.0.1.tar.gz
# cd ices-2.0.1
# ./configure
# make
# make install/usr/local/bin/icesと/usr/local/share/iceができる。/usr/local/share/iceに簡単なマニュアルと設定サンプルXMLが配置される。例えば/opt/musicディレクトリに配信したい音楽ファイルを置いてストリーミング配信したい場合は次のような感じ。プレイリストを作成
# find /opt/music/ -iname "*.mp3" > /opt/music/playlist.txt/usr/local/share/ices/ices-playlist.xmlを編集
# vi /usr/local/share/ices/ices-playlist.xml<input>
    <param name="file">/opt/music/playlist.txt</param>
</input><instance>
    <password>password</password>
</instance> パスワードはicecast.xmlのsource-passwordタグで設定した値を記述。ログファイル置き場を作ってなかったら作成
# mkdir /var/log/icesこ…

オンラインストレージをネットワークドライブとしてマウントする

イメージ
Gladinet Cloud Desktopというソフトを使うと無料でSkyDriveなどのオンラインストレージをネットワークドライブとしてマウントできることを知った。ダウンロードはここから。フリーのstarterをダウンロード→インストールする。英語だけど直感的に分かる。ローカルのファイルと変わらずに操作できるので便利。日本語も文字化けせずに表示できる。今まで使いこなせてなかったGoogle DocsとSkyDriveをフル活用できそうな予感。簡易的なバックアップツールとして役に立ってくれそう。

Webページを高速化するためのメモ

便利なライブラリや動画に潜むWebデザインの3つの罠」を読んで有用な情報があったのでメモ。便利に使っているjQueryも記述の仕方で速度が変わってくるので、普段から意識してプログラミングしなければならない。jQuery を高速に使う CSS セレクタの書き方あと、CSSはソースコードの上部に記述する JavaScriptはソースコードの下部に記述する など、おもしろい記事があったので一度読んでおくといいかも。Webページを速く見せるための5つのちょっとした工夫

ラオウを愛するすべての人へ

何となく北斗の拳が見たくなって検索してみると劇場版やOVAでいろんなエピソードが制作されていることを知った。特にラオウを愛する私としては見なければならないのはこれ。北斗の拳 ラオウ外伝 天の覇王真救世主伝説 北斗の拳 ラオウ伝 激闘の章ラオウ外伝は第1話からラオウの絶大な強さに感動する。「己の道は曲げぬ。曲げれば天が笑う。」それでこそラオウ。覇道を貫くその生き様に惚れる。明日からの合宿でゴウショウハを練習してきます。

GoogleカレンダーにだけiCal形式のファイル参照を許可する

webdavで管理しているicalファイルを外から見えないようにしたいけど、Googleカレンダーには許可したかっので調べたメモ。文字化けする問題は前の記事を参照。Google カレンダー(の「URLで追加」)は認証に対応してないので、Googleからのアクセスだけサーバーの設定で許可するように設定。ちなみにGoogleカレンダーでicalを指定する場合は「URLで追加」からicalへのURLを指定する。次がapacheのconfファイル例。webdavの設定は前の記事を参考に。  Alias /ical "/opt/ical"
  DavLockDB "/tmp/DavLock"   <Directory "/opt/ical">
    Dav On
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1 192.168.0 google.com googlebot.com
  </Directory>「googlebot.com」ドメインからのアクセスを許可すればo.k.apacheの設定をする前に「追加」をやってしまうと、次からはキャッシュを参照するようになるので、同じアドレスで指定しても、しばらくは「URLが無効です。」みたいなエラーメッセージが表示され登録できない。そんなときはだいたい1時間後ぐらいにもう一度やってみるとうまくいく。<2009/12/8 追記>
Googleカレンダーにだけは公開して、他のical形式は認証をつけるために設定を変えたのでメモ。  <Directory "/opt/webdav">
    Dav On
    <Files ~ "\.ics$">
      AuthType Basic
      AuthName "Exbridge ical Secret Zone"
      AuthUserFile /opt/lampp/etc/conf.d/.htpass…

【Linux】マシンの負荷やトラフィックをグラフ化する「Munin」をインストール

イメージ
マシンが使用しているネットワークの帯域を知りたくて、簡単に表示できるソフトがないかなと探していたら辿りついた「Munin(ムニン)」。本家グラフ化できるのは、ディスクの使用量、CPU使用率、メモリ使用率など。さらにプラグインで簡単に拡張できるのでいろんな情報をグラフ化してWebで参照できる。[Gigazine]MRTGよりお手軽に負荷やトラフィックをグラフ化できる「Munin」デモサイトこれをPHPとうまいこと連携できないかなと思い、とりあえずインストールしてみた。環境はCentOS5.3インストールは簡単でyum経由でできる。今回は監視サーバーと対象クライアントが同じなので両方インストール。
# yum install munin munin-node依存関係で結構多くのパッケージがインストールされる。/etc/munin/munin.confを編集してhtmlデータ格納ディレクトリを変更。この辺は環境に合わせて設定。
# vi /etc/munin/munin.confhtmldir    /opt/muninコピーして権限の設定
# /bin/cp -fr /var/www/munin/* /opt/munin/
# chown -R munin. /opt/munin/インストールすると自動でcronに登録されるので、実行される間隔などを変更したい場合は/etc/cron.d/muninを変更。情報を収集するクライアントの起動
# /etc/rc.d/init.d/munin-node start自動起動の登録
# chkconfig munin-node on次はapacheの設定。インストールすると/etc/httpd/conf.d/munin.confにファイルが生成されるけど、私の環境はlamppで構成されているので、このファイルを参考に設定。#
# munin
#
ScriptAlias /munin/cgi/ /opt/munin/cgi/
Alias /munin/ /opt/munin/lamppのリロード。
# /etc/rc.d/init.d/lampp reloadこれで設定したaliasにブラウザでアクセスすれば見れるはず。監視クライアントを増…

【Xampp】MySQLのsocketの場所を変更

Xampp for linux(lampp)を利用していて、lamppで動いているMySQLのsocketの場所を変更したときのメモ。socketの場所はmy.confで設定。lamppの場合は/opt/lampp/etc/my.cnf#socket        = /opt/lampp/var/mysql/mysql.sock
socket        = /tmp/mysql.sockこれでlamppを再起動
# /etc/rc.d/init.d/lampp restartちなみにソケットの場所を確認する場合は
# mysqladmin variables | grep socketlamppのphpMyAdminが次のエラーで動かなくなるので#2002 - サーバが応答しません (あるいはローカルの MySQL サーバのソケットが正しく設定されていません) 設定ファイルを修正する# vi  /opt/lampp/phpmyadmin/config.inc.php$cfg['Servers'][$i]['connect_type'] = 'socket';
$cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock';を追記する。サービスの再起動は必要なし。さらに他のMySQLを使うシステムも動かなくなるので、php.iniに記述されているMySQLのsocketの場所を指定する必要あり。pdo_mysql.default_socket=/tmp/mysql.sockmysql.default_socket =/tmp/mysql.sockmysqli.default_socket =/tmp/mysql.sock3カ所修正してlamppのリロード
# /etc/rc.d/init.d/lampp reload