HTML::Tidyについて追試

先日、
【MovableType】Tidy を使って HTML を整形するプラグイン | blog.delphinus.dev
を書いたが、littlebuddhaさんからうまくインストールできないという話を受けてこちらでも追試。

すると……、あれ?こけた?

$ make test

~省略~

Test Summary Report
-------------------
t/ignore-text.t    (Wstat: 256 Tests: 3 Failed: 1)
  Failed test:  3
  Non-zero exit status: 1
t/ignore.t         (Wstat: 256 Tests: 7 Failed: 1)
  Failed test:  3
  Non-zero exit status: 1
t/levels.t         (Wstat: 256 Tests: 3 Failed: 1)
  Failed test:  3
  Non-zero exit status: 1
Files=20, Tests=80,  1 wallclock secs ( 0.09 usr  0.08 sys +  0.65 cusr  0.16 csys =  0.98 CPU)
Result: FAIL
Failed 3/20 test programs. 3/80 subtests failed.
make: *** [test_dynamic] Error 255

前に試したときはうまくいったと思ったが、どうやら気のせいだったらしい。エラーも訳がわからないので放置していたところ、littlebuddhaさんから更に情報があった

Bug #29593 for HTML-Tidy: [PATCH] fixing coredumps in 1.08

http://rt.cpan.org/Public/Bug/Display.html?id=29593

このパッチを当てると上記のエラーも消え、すんなりインストールが完了した。

【MovableType】Tidy を使って HTML を整形するプラグイン

以前、「外部リンクを明示するMovableTypeプラグイン | blog.delphinus.dev」で紹介したプラグインで、MovableType で生成する HTML をちょっとだけ整形してみた。今度は本格的なツールを使ってみよう。

HTML Tidy による整形

HTML Tidy は整形ツールとしては一番著名で強力なツールだ。歴史も古く、最初のバージョンは前世紀まで遡る。

HTML Tidy Project Page
http://tidy.sourceforge.net/

現バージョンの `HTML::Tidy` では tidyp というツールが推奨されているようだ。tidyp を使うならば、後述の `HTML::Tidy` のバージョン違いによるエラーは起こらない。詳しくはこちら。
【Perl】HTML / XML の 整形には tidy“p”? | blog.delphinus.dev

そしてそれを Perl から利用するためのモジュールが HTML::Tidy

HTML::Tidy – search.cpan.org
http://search.cpan.org/~petdance/HTML-Tidy-1.50/lib/HTML/Tidy.pm

更に HTML::Tidy を利用して、MovableType で生成する HTML の整形を行ってくれるのがこれ。

Movable Type Monday: Etelos Partnership, Plugin Development, HTML Tidy, and More | The Blog Herald
http://www.blogherald.com/2009/04/07/movable-type-monday-etelos-partnership-plugin-development-html-tidy-and-more/

3つもインストールしなければならない上、一つ一つがかなり曲者だった(Mac OS X を使っていることが主因なんだけれども)。

Continue reading

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

IEがpタグにinnerHTMLできないのはバグ?

<p> タグの中に innerHTML プロパティを使って文字列を挿入するときに、それが不正なHTMLだとIEは無視してしまう。

Pieces Of Rakesh: IE’s Unknown Runtime Error When Using innerHTML

http://piecesofrakesh.blogspot.com/2007/02/ies-unknown-runtime-error-when-using.html

IE で innerHTML に変な HTML を入れるとエラーになる件 – *Trace Output*

http://d.hatena.ne.jp/miyamuko/20060320/p1

単純な文字列ならば問題ない。例えば次の文はちゃんと動くが、

document.getElementById( "some-id" ).innerHTML = "あいう<br />えお";

次の文はエラーになってしまう。なんというわかりにくさ。

document.getElementById( "some-id" ).innerHTML = "<div>あいうえお</div>";

もっとも、<p> タグの中にブロックレベル要素を入れてはいけない」というのは HTML の解説書には必ず書いてある決まり事ではある。Firefox や Google Chrome では問題ないのに、IE だけが規則に厳格なんて珍しいこともあるものだ。

以下はおまけ。

Continue reading

コメントできなくなってましたorz

スパム避けのための Captcha 画像が表示されず、コメントしようにもできなくなってました。コメントできなかった方、ごめんなさい。今は可能になっているはずです。Captcha 画像が表示されない方はリロードしてみてください。

Captcha 画像が表示されなかった原因は以下の 2 つ。

  1. mt-config.cgiCaptchaSourceImageBase が間違ってた
  2. <p> タグに関する innerHTML プロパティのバグ(IE 限定。仕様なのかな?)

1 番はどうしようもないミスなので論外だけど、2 番は初めて知ったので別記事にでも。

外部リンクを明示する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

リニューアルしました

before

before.png

after

after.png

なんだかもっさりしたMTデフォルトのテーマを離れてmt.Vicunaを導入してみた。MT5に対応した暫定版mt.Vicuna Theme 2.2.1bis2をしばらくいじった後で、最新版の2.3に気づいたのだが時已に遅し。テーマのエクスポートが正確にできない不具合はあるものの、一応使えてるみたいだからしばらくは2.2.1bis2でいいかな……?

mt.VicunaをMT5テーマ化 – WolaWola

http://www.zelazny.mydns.jp/pub/plugins/mtvicuna-for-mt5.php

SyntaxHighlighter

100225-0003.png

SyntaxHighlighterの色合いもテーマに応じて変えてみた。これで少しはカコヨクなっただろうか。

後は、過去の記事でレイアウトがおかしくなってるものを直さないといけない。それができたら最新版の導入を考えよう。

しかしホント、これだけカッコ良くて動作も軽い、完成度の高いテーマを無料で配布してくれるのだから頭が下がる。いくら感謝してもしきれません。