アーカイブ: 2008年10月
Zend_Mailで文字化けするので、ラッパーを作ってみた。
2008年10月28日
最近Zend Frameworkを使用してプログラム中なんですが、メール送信で文字化けしちゃうので、ラッパーを軽く作ってみました。
文字コードをISO-2022-JP指定時に勝手にエンコード変更する形です。
※多言語管理するなら、呼び出し側での切り替えの仕組みちょっと考えないといけません:-(
<?php
/**
* Chaos-Portal-Project
*
* @category Chaos
* @package Chaos_Mail
* @copyright 2008 CPMSTAFF
* @author eitaro
* @version 1.0.0
* @since File available since Release 1.0.0
*/
// ロードクラス指定
Zend_Loader::loadClass('Zend_Mail');
class Chaos_Mail extends Zend_Mail
{
/**
* Constructor
*
* @return void
*/
public function __construct($charset)
{
parent::__construct($charset);
}
/**
* Sets the text body for the message.
*
* @param string $txt
* @param string $charset
* @param string $encoding
* @return Zend_Mail Provides fluent interface
*/
public function setBodyText($txt, $charset = null, $encoding = Zend_Mime::ENCODING_QUOTEDPRINTABLE)
{
if ('ISO-2022-JP' == $this->_charset) {
$txt = mb_convert_encoding($txt, 'ISO-2022-JP', mb_detect_encoding($txt));
}
return parent::setBodyText($txt , $charset , $encoding);
}
/**
* Sets the subject of the message
*
* @param string $subject
* @return Zend_Mail Provides fluent interface
*/
public function setSubject($txt)
{
if ('ISO-2022-JP' == $this->_charset) {
$txt = mb_convert_encoding($txt, 'ISO-2022-JP', mb_detect_encoding($txt));
}
return parent::setSubject($txt);
}
/**
* Sets From-header and sender of the message
*
* @param string $email
* @param string $name
* @return Zend_Mail Provides fluent interface
*/
public function setFrom($email, $name = '')
{
if ('ISO-2022-JP' == $this->_charset) {
$name = mb_convert_encoding($name, 'ISO-2022-JP', mb_detect_encoding($name));
}
return parent::setFrom($email, $name);
}
/**
* Adds To-header and recipient
*
* @param string $email
* @param string $name
* @return Zend_Mail Provides fluent interface
*/
public function addTo($email, $name = '')
{
if ('ISO-2022-JP' == $this->_charset) {
$name = mb_convert_encoding($name, 'ISO-2022-JP', mb_detect_encoding($name));
}
return parent::addTo($email, $name);
}
/**
* Adds Cc-header and recipient
*
* @param string $email
* @param string $name
* @return Zend_Mail Provides fluent interface
*/
public function addCc($email, $name='')
{
if ('ISO-2022-JP' == $this->_charset) {
$name = mb_convert_encoding($name, 'ISO-2022-JP', mb_detect_encoding($name));
}
return parent::addCc($email, $name);
}
}
呼び出すとき、
$mail = new Chaos_Mail(’ISO-2022-JP’);
とするだけ、後はオリジナルと同じ形で扱えるはずです。
2008年10月28日 | コメント&トラックバック(0) | トラックバックURL |
カテゴリ: 010Zend Framework
XenのDomUのドライブ復旧
2008年10月21日
Xenで運用しているDomUのドライブがエラーを吐いていたので、復旧作業のメモ
※DomUのドライブをマウントするにあたり、LVMのVGがかぶって無いことを前提に話を進めます。もしVGネームがかぶっているところで作業すると大変なことになりますので、ご注意ください。(責任はとれません)
- まず対象のDomUを終了させます。
- 作業用DomU(Dom0でもVGネームがかぶっていなければOK)上で、対象のドライブを読める状態にします。
- ループバックデバイスの設定をします。
- 上記ループバックデバイスにドライブを割り当てます。
- kpartx で認識させます。
- VG、LVを確認します。
- LVイメージを有効にします。
- LVイメージのジャーナリングを無効にします。(注意:通常のfsckが通らない場合だけにしましょう。)
- fsckします。
- ジャーナリングを有効に戻します。
- ここまでうまくいけば、ドライブのデータがちゃんと読み書きできるはずです。mountなどで確認できます。
- LVイメージを無効にします。
- 有効にしたループバックイメージを開放します。
# losetup -f
/dev/loop0
# losetup /dev/loop0 /driveimage/imagename.img
# kpartx -a /dev/loop0
# vgscan
Reading all physical volumes. This may take a while…
Found volume group “VolGroup00″ using metadata type lvm2# lvscan
inactive ‘/dev/VolGroup00/LogVol00′ [2.34 GB] inherit
inactive ‘/dev/VolGroup00/LogVol01′ [544.00 MB] inherit
# lvchange -ay /dev/VolGroup00/LogVol00
# tune2fs -O^has_journal /dev/VolGroup00/LogVol00
tune2fs 1.39 (29-May-2006)
# fsck -y /dev/VolGroup00/LogVol00
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
/dev/VolGroup00/LogVol00 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
…
# tune2fs -j /dev/VolGroup00/LogVol00
tune2fs 1.39 (29-May-2006)
Creating journal inode: done
This filesystem will be automatically checked every -1 mounts or
0 days, whichever comes first. Use tune2fs -c or -i to override.
# lvchange -an /dev/VolGroup00/LogVol00
# kpartx -d /dev/loop0
# losetup -d /dev/loop0
以上で作業は終了です。改めてDomUを起動させてみて、確認してみてください。
※DomUのドライブイメージはLVM上にEXT3ファイルシステムがある前提です。それ以外の場合は作業内容が変わりますので、注意してください。
2008年10月21日 | コメント&トラックバック(0) | トラックバックURL |
カテゴリ: 001鯖缶