HTML::EscapeEvilで掲示板的なHTMLプリプロセッサを作るときの注意

たとえば、掲示板で、textareaに入力してもらい、表示するときにあるHTMLタグは生かし、あるHTMLタグは死んでもらうときに利用すると便利なのが、HTML::EscapeEvilモジュールです。

しかし、HTML::EscapeEvilで、HTMLタグの全く無い文字列を入れると、空っぽになって返ってくる。しょうがないので、にくるんでやってみるとうまくいったよ。でも、あとで除去しないとダメ。

sub _preprocess_text {
  $_ = shift;
  my $escapeevil = HTML::EscapeEvil->new;
  $escapeevil->add_allow_tags( qw( a pre blockquote strong em ) );
  $escapeevil->parse("<body>$_</body>");
  $_ = $escapeevil->filtered_html;
  $escapeevil->clear;               
  s|&lt;body&gt;(.+?)&lt;/body&gt;|$1|so;
  s|<a(.*?)>|<a$1 target="_blank">|sgo;
  s|<pre(.*?)>|<pre$1 class="prettyprint">|sgo;
  s|\n|<br />|sgo;
  return $_;
}

BOXERBLOG powered by TypePadがTypePad.jpに移管になったので対応表など

1年間は昔のURLでそのまま投稿やAPI操作ができるんだけれども、1年後には、それができなくなるんですよね。そうなったときにたいてい対応表などないわけで、ネットに出しておけば役立つかと思いました。

管理ページの入り口:
https://cms.boxerblog.com/t/app

https://www.typepad.jp/t/app

XML-RPCインターフェース
http://cms.boxerblog.com/t/api

http://www.typepad.jp/t/api

となっております。blog_idは変わりませんでした。もともとTypePad.jpのほうの通し番号を使っていたんだね。

手っ取り早くGoogleの検索結果のタイトルだけをテキストにする

FirebugGoogleの検索結果のタイトルをDOM操作で取ってきて、Googleの検索ボックスに出力します。コピペするのめんどくさくて作った。

var elm = document.getElementsByTagName('a');
var text='';
for (var i = 0; i < elm.length; i++) {
  var item = elm[i];
  if (item.className == 'l') {
    text += item.innerHTML + "\t";
  }
}
document.forms['gs'].q.value=text;

EDGE Now! Hacks

ええと、EDGE Now!の内部で使っているAPIがいろいろあるので調べた結果みたいなものを、

EDGE Now! Hacksとしてまとめてみました。

EDGE Now!はブラウザ側でXMLを受信して描画展開しているので、そのXMLを横取りしちゃえば、情報を利用できるわけですね。

XML処理練習のソースとしていいんじゃないかなーと思います。

CGIでカレントディレクトリの絶対パスわかるの用意しておくと便利

レンサバ選定の時に、カレントディレクトリの絶対パスを探索する必要ってあるよね。shell使えないこと多いし。しかも、レンサバ業者のヘルプページには明確に書いていないことが多い。

Filename: pwd.cgi

#!/usr/bin/perl
print "Content-type: text/plain\n\n";
print `pwd`;

つうのがそらで出てくるように、僕もなったよ!

PDFフォント○×チェッカー公開

PDFをセットしてチェックを押すとWebに送ってフォント埋め込み状態をチェックするオンラインサービス「PDFフォント○×チェッカー」が公開されました。

PDFフォント○×チェッカー

Adobe EDGE Now!オープンしてた

Adobe : EDGE Now! ウェブの今、更新中。

EDGE Now! とは

「デザインがイケテル!」

「この企画はヤラレタ!」

など、あなたが、どこかで見つけ、ブログに書いた、クリエイティブ性の高い素敵なウェブサイトの情報を集めて紹介する、ウェブ・ポータルサイト、それが“EDGE Now!”。

ブログに書かれたウェブサイトの記事は、随時“EDGE Now!” にアップされ、毎日、毎週、毎月、優秀サイトが決定する仕組みになっており、より多くの人のブログに書かれた注目度の高いウェブサイトほど、優秀サイトとして発表される可能性が高まります。

“EDGE Now!” は、みんなで世の中の良いサイトを決定していく場所。自分にとって参考になるウェブサイト探しができる、便利な場所として成長していきます。

つまりRSSを集計するタイプの、ソーシャルブックマークサービス。同じようなのに「ザッピング - 受動系ソーシャルブックマーキング -」ていうのもあるよね。

thatspingは、運営側が用意したスクリプトをblogに埋め込むことで集計対象になるのに対し、EDGE now!は、ブロガー登録と同時にblog(正確にはRSS)を登録することで集計対象になります。

また、thatspingは、集計のトリガーが検索エンジンから来訪したユーザの滞在時間確定時(だと思われる)なのに対し、EDGE Now!は、あらかじめEDGE Now!の集計対象になるようにblogエントリを書いておいて、それのRSSをEDGE Now!のクローラがクロールしに来るのだと思う(あとでfeedburnerでEDGE Now!のUser-Agent調べよう)。

というわけで、これtwitterRSSなどをAuto-Discoveryに設定したhtmlのURLを登録するといいんじゃね!とか思ったけれども、一回登録したblogのURLが変更できないのですよね。