投稿

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($sStrin

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

Zend Framework の Zend_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') {

【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 "$DAEM

【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タグで設定した値を

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

イメージ
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"   

【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.conf htmldir    /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.

【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 socket lamppの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.sock mysql.default_socket =/tmp/mysql.sock mysqli.default_socket =/tmp/mysql.sock 3カ所修正してlamppのリロード # /etc/rc.d/init.d/lampp reload