MovableTypeからSMTP認証+SSLでメール送信

少々回りくどい表題だが、要するに「GmailのアドレスでMovableTypeからメールを送りたい!」という話。このプラグインを使うとできる。

The Tweezer’s Edge: Stories: SMTP Auth Plugin

http://tweezersedge.com/archives/stories/smtp_auth_plugin.html

依存モジュールのインストール

割とたくさんインストールする必要がある。

  • Sys::Hostname
  • Time::Local
  • MIME::Base64
  • Net::SMTP
  • Authen::SASL
  • Net::SMTP::SSL
  • Net::IDN::Encode
  • IO::Socket::SSL
  • Net::SSLeay

太字で書いたNet::IDN::Encodeはマニュアルに記載がないが、これがないとIO::Socket::SSLのインストールがうまく行かなかった。

Continue reading

CentOSでperl 5.10.1 + Catalyst + mod_perl

CentOS 5.4は未だにperl-5.8.8なので、perl-5.10.1をソースからインストールした。この作業は簡単なので詳細は省く。

$ tar jxvf perl-5.10.1.tar.bz2
$ cd perl-5.10.1
$ ./Configure -de
$ make
$ make test
$ sudo make install

しかし標準でインストールされるmod_perlはあくまでperl-5.8.8用にビルドされている。本当ならSRPMを落としてきてリビルドするのがいいのだが、面倒なのでmod_perlのソースからインストールする。

mod_perlのインストールにはapxsが必要だ。これはhttpd-develパッケージに入っている。

$ sudo yum install httpd-devel

後はいつもの手順通り、mod_perlのインストールだ。

Continue reading

外部リンクを明示するMovableTypeプラグイン

MovableType の生成する HTML から余分な空行を除き、ついでに色々整形してくれる便利なプラグイン Source Code Cleanerを導入してみた。

Source Code Cleaner(ソースコード・クリーナー) – Movable Type プラグイン – かたつむりくんのWWW

http://www.tinybeans.net/blog/download/mt-plugin/source-code-cleaner.html

しかし、「外部リンクに class を追加する」機能がうまく働かない。外部どころか全てのリンクに class が追加されてしまうのだ。ソースを読んでみると、外部リンクを判定するときに、頭に「http」が付いたものを全て外部リンク認定していることがわかったので、(勝手に)改良してみますた。href 属性の前後に改行があるとうまく動かなかったので訂正。

差分

*** SourceCodeCleaner.pl.orig   2009-06-23 13:32:20.000000000 +0900
--- SourceCodeCleaner.pl        2010-02-27 04:17:25.000000000 +0900
***************
*** 2,7 ****
--- 2,8 ----

  use strict;
  use base qw( MT::Plugin );
+ use MT::Blog;

  my $plugin = MT::Plugin::SourceCodeCleaner->new({
      id          => 'sourcecodecleaner',
***************
*** 126,134 ****
                }

                # Attribute : external link class
                if ($option_exlink) {
!                       $$content_ref =~ s/<a[^>]*href="http[^"]*"[^>]*>/external_link($&)/ge;
!
                }

                # Element : pre - escape
--- 127,137 ----
                }

                # Attribute : external link class
+         ( my $base = MT::Blog->load( $blog_id )->site_url ) =~ s!https?://!!;
+         $base =~ s!(?=\.)!\\!g;
+         my $a_tag_re = qr+<a[^>]*href\s*=\s*"(?:ht|f)tps?://(?!$base)[^"]*"[^>]*>+;
                if ($option_exlink) {
!                       $$content_ref =~ s/$a_tag_re/external_link($&)/ge;
                }

                # Element : pre - escape

Continue reading

PARでPerlスクリプトをexe化 @ ActivePerl 5.10.1 build 1007

久々に環境を作り直したら、PARの導入が恐ろしく簡単になってた。

まずは、PAR::Packerのインストールの前に、必要モジュールをPPMでインストールしておく1。必要なのは以下の6つだ。

  • Module::ScanDeps
  • Win32::Exe
  • Parse::Binary
  • Getopt::Argvfile
  • PAR
  • PAR::Dist

cpanコマンドでPAR::Packerをインストール

以前はここからが厄介だった。別のリポジトリからインストールしようとしてバージョン違いに泣いたり、以下のリンクなどを参考にしてMinGWやnmakeと格闘したりした。

BdP – PPM Repository
http://www.bribes.org/perl/ppmdir.html

Vista/XPのActivePerl 5.10.0でPAR::Packerをビルド ハードなソフトの話/ウェブリブログ
http://hardsoft.at.webry.info/200801/article_4.html

ところが今や、やることはこれだけである2

C:\>cpan -fi PAR::Packer

これだけでcpanコマンドが勝手にMinGWをダウンロードしてきてPAR::Packerのコンパイル&インストールをやってくれる。

Continue reading

MovableType + Memcached @ Mac OS X

MovableTypeにmemcachedを組み込んでみた日記。次のリンクが参考になる。

Running Movable Type with memcached | MovableType.org – Home of the MT Community

http://www.movabletype.org/documentation/administrator/maintenance/memcached.html

[memcached] memcached導入手順 – Life with IT

http://l-w-i.net/t/memcached/0install_001.txt

memcachedのインストール

リンク先ではソースからコンパイルしてるが、ここはお手軽にMacPortsで行ってみる。

$ sudo port install memcached

するとLaunchdの設定ファイルが/Library/LaunchDaemons/org.macports.memcached.plistに作成される。次のコマンドで自動起動と最初の起動が行われる。

$ sudo launchctl load -w /Library/LaunchDaemons/org.macports.memcached.plist

実際の起動スクリプトは/opt/local/etc/LaunchDaemons/org.macports.memcached/memcached.wrapperにあるようだ。必要ならこのファイルを編集して起動オプションを書き換えよう。

動作確認にはtelnetを使う。statsで統計情報を表示し、quitで終了する。

$ telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
stats
STAT pid 64143
STAT uptime 40868
STAT time 1266977732

~省略~

quit
Connection closed by foreign host.

Continue reading

Webalizerで文字化けを解消する、他

以前の記事「Mac OS XにWebalizerをインストール → DNSCacheでハマる」ではMac OS XにてWebalizerをインストールする方法を書いた。このとき日本語化するオプション(--with-language=japanese)をつけたのだが、これによって用語が日本語化される代わりに、Total Search Strings(検索文字列リスト)が文字化けしてしまう。

100222-0001.png

原因は、検索文字列のエンコーディングにUTF-8が使用されているのに引き替え、HTML自体にはEUC-JPが使われているためだ。しょうがないので、作成したHTMLファイルに細工を加えることにする。

Continue reading

【perl】範囲演算子についての日本語マニュアルの誤訳

スカラーコンテキストでの範囲演算子(所謂フリップフロップ演算子)の使い方がいまいちわからなかったのでググってみたのだが、perldoc.jpの日本語マニュアルがいきなり間違ってたので悪戦苦闘。

http://perldoc.jp/docs/perl/5.10.1/perlop.pod

はじめは、左被演算子が偽である間、演算全体も偽となっています。範囲演算子は、いったん左被演算子が真になると、右被演算子が真である間、真を返すようになります。右被演算子が偽になると、演算子も偽を返すようになります。

ラクダ本を読み返してみたら、太字にした部分が正反対じゃないか!

http://www.oreilly.co.jp/books/4873110963/
Google ブックスで該当頁を開く

120頁 3.15 範囲演算子
左オペランドが偽である限り、状態は「偽」のままである。ひとたび左オペランドが真になれば、右オペランドが真になるまで演算子の状態は「真」のままになる。右オペランドが真になると、その次から状態は再び偽に戻る。

他のバージョンも見てみると、一番古いv5.6.1の時点ですでに誤訳されているようだ。最初から横着せずに原典(或いはperlop.podそのもの)を読めば良かったよ……。