メール更新スクリプト
とりあえず、MovableTypeをメールで更新するためのスクリプトを作ったので、ここに放置しておくことにする。
まぁ、例によって、説明不足なので、それなりに技術力が必要なので、わかる人だけ使って欲しい。という感じで放置。
っていうか、Perl5.6以降じゃないと、動かないな。ourなんて使ってるし、、、
« 前のページ | 1ページ目/全4ページ | 次のページ »
1 2 3 4
とりあえず、MovableTypeをメールで更新するためのスクリプトを作ったので、ここに放置しておくことにする。
まぁ、例によって、説明不足なので、それなりに技術力が必要なので、わかる人だけ使って欲しい。という感じで放置。
っていうか、Perl5.6以降じゃないと、動かないな。ourなんて使ってるし、、、
簡単にtrackbackする方法はないのか?そして、ついでに引用したりリンク張ったりもしたいぞ。
という、声が聞こえてきたような気がしたので、いろいろ調べてみる。
MovableTypeのメインメニューから、「Bookmarklet の設定」をクリック。とりあえず、全部チェックして、「CREATE」を押す。「Post to MT Weblog」ちうリンクが出てくるので、それを右クリックして、お気に入りに入れる。
で、誰かのMovableTypeのMainのページが表示されているときに、その「お気に入り」を選ぶ分けです。
そうすると、「Ping するエントリーを選んでください」ってところで、相手のどのエントリにTrackBackするか。が、選べるようになると思います。
以上、すちゃらかCSS素材集: BOOKMARKLETを使ってみようとか、A Beginner's Guide to TrackBack [dh's memoranda]あたりからの受け売り。
ところが、おれのでやろうとすると、「Ping するエントリーを選んでください」ってのが表示されない。なんでだろう……。
ログとか確認して、原因判明。なるほどね~。というわけで、簡単にTrackBackができるようになったのでした。
smashmedia: mt-bk1.pl
にある、mt-bk1.plを使おうかと、いろいろテストしていたら、バグと思われる事象に遭遇したので、一気に改造してしまいました。
改造ポイントは、配布されているものだと、
1.ISBN:の記述の時に「買物カゴへ」が正しく動かない
2.http://cgi.bk1.jp/xml.cgiへの接続がエラーになった場合にエラーでRebuildすらできない
という二点への対応です。
さらに、標準では、<$MTEntryBody bk1="1"$>という形で指定することになっているのですが、これを<$MTEntryBody bk1="99mt-bk1"$>という形でブリーダーIDを指定するように変更しました。これにより、MTに複数のアカウントを作って複数人でべつのblogを作成している場合にも個々のblogに対してブリーダーIDを指定することができるようになりました。
ただ、ブリーダーIDなしで使うことができない。という副作用が出ます。まぁ、せっかくなので、ブリーダーIDを取得してください。という方向で(笑)
bookmarklet を使うと、ping 先を複数の中から選択できること。たとえば、わたしの Main Index page で bookmarklet を使うと、ページ内のエントリーを pull down menu で選択できるのです。便利です。もう知っていました?
というわけで、BOOKMARKLET使うと、簡単にトラックバック出来るなぁ。と、非常に便利に使っていた。
でも、なにか、かゆいところに手が届いていない。TrackBackPingを送る先は選べるようになるんだけど、Entry中のリンク先がMainのURLのままになっている。
気持ち悪い。せっかくping先を選べるんだから、それにあわせてEntry中のURLもpermalinkにしてくれたらいいのに……。
というわけで、改造開始。
<MTDIR>/tmpl/cms/bm_entry.tmplの「function setMenu (f) {」の上あたりに以下を追加
<TMPL_IF NAME=TO_LINK_URL_LOOP>
var entry = new Array('<TMPL_VAR NAME=LINK_HREF>',
<TMPL_LOOP NAME=TO_LINK_URL_LOOP>'<TMPL_VAR NAME=PERMALINK ESCAPE=HTML>',</TMPL_LOOP>'');
var linkto = '<TMPL_VAR NAME=LINK_HREF>';
</TMPL_IF>
function replaceEntry( f ){
var i = f.to_ping_urls.selectedIndex;
var w = f.text.value;
var t = entry[f.to_ping_urls.selectedIndex];
var r = new RegExp(linkto);
w = w.replace(r,t);
f.text.value = w;
linkto = t;
}
また、同じファイルの
<select name="to_ping_urls" class="menu-long" >
<select name="to_ping_urls" class="menu-long" onchange="replaceEntry(this.form)">
あと、
lib/MT/App/CMS.pmの
$param{to_ping_url_loop} = [ grep { $_->{title} = Jcode->new($_->{title})->$charset() } @$items ];$param{to_link_url_loop} = [ grep { $_->{title} = Jcode->new($_->{title})->$charset() } @$items ];
$param{'link_href'} = $url;というか、IEでしか動かないような気がする。JavaScriptのreplaceって、regrepオブジェクト作らないとダメなんだっけ?
とりあえず、ここでいったん寝ます。(06:45)
起きて、さらに変更して、Mozilla Firefox/0.8でも動作することを確認。(13:30)
とりあえず、MovableTypeをメールで更新するためのスクリプトを作ったので、ここに放置しておくことにする。
自分で作ったもののいくつかバグを見つけたので修正する。っていうか、この長野出張で使おうかと思って、更新部分の動きを直前にチェックしてたら、エラーで全然動かなかったんだよね(笑)。
まぁ、そういうモノなので、地雷だと思って踏めるひとだけ。持って行ってください。
最近、かいンさんがブログペットを導入して、そういうのもあるのかー。なんて思っていた。
どうやら、ペット自身がBlogのエントリをすることもあるということを聞いて、へ~、どういうのをエントリするんだろう。と思っていたところ、ノノスケさんのところに、ぺっとのエントリ発見!
ののは、blogするつもりだった。 きょうののは、ここへblogしないです。
*このエントリは、こうさぎの「のの」が書きました。
うわ~、なんか、おもしろそうだ。うちにも、導入しようかな?とか思う。
いや、エントリそのものは、笑っちゃうほどおもしろいわけじゃないんだけど、ペットからの更新頻度がある程度高ければ、トロみたいな感じになるんじゃないかなぁ。という、期待。
でも、これ以上右側あると、うざいな。ニュースの部分減らすか……
考えてみれば、月別のアーカイブは1日から順に並んでないと気持ちが悪いな。と思って、
全体としては古いものが上になるように設定した上で、各種indexテンプレートのMTEntryタグのところに sort_order="descend"を足しておく。
これで、最新版は新しいものが上、それ以外は、古いものが上。になっているはず。
ってのを、出張中に変更してみた。出張万歳。
そういえば、3.0のライセンスって、いろいろ変更されているけれど、結局、Freeで使える範囲はどういうことに落ち着いているのだ?と、気になったので、調べてみたのだった。
日本語のライセンスには、ユーザー登録しないとたどり着けないようので、英語版のページを見てみると、
You can download a fully functional, but unsupported version of Movable Type for free. You're limited to 1 author and 3 weblogs. The paid license benefits below are not available with the free version.
サポートがないバージョンが、1 author, 3 weblogsの範囲内で無償で利用出来る。ということのようだ。でも、なんか、1サーバーという話を見たような気がするな。と、さらに画面を進めて、ライセンスの全文を読んでみる。
うむ、1 Serverの上で、1 Authorが、3つのweblogを利用出来るライセンスを、Six Apartが「私個人」に与えてくれるらしい。
1 Serverってのは、ライセンス上で定義されている雰囲気だと、MovableTypeがインストールされているコンピュータと、データベースがインストールされているサーバのペアを指すような感じがする。
で、ここで、ぼくの疑問は、
1 Serverの上に、限定ライセンスをうけた個人ユーザーがそれぞれMovableTypeをインストールして、それぞれが1 Author、3つのweblogの範囲内で利用することは可能か?
ということだ。
ぶっちゃけ、今使っているこのサーバー上で2.661が複数動いているし、3系もひとつ動いている。この状況で、僕が、今使っている2.661を3系にupgradeできるのか、ということが知りたいわけですよ。
まぁ、SixApart日本法人に聞けばいいんだろうけど……
ひや~んの日記から
私のmixiの日記欄からアクセスすると、我が「ポルスタ」のトップページへ行ってしまう問題。 日記のRDFにある「~」という文字が、mixiの方で何故か「?」に置換されてしまっているのが原因です。
えーと、どうしてこうなるのか。ですが、どこかでUNICODEに変換されているのが原因です。
ひや~んのRDFでは、encoding="Shift_JIS"と指定されています。これを手元に保存し、たとえば、以下のようなperlのプログラムで処理しようと思います。
use XML::RSS;
my $rss = new XML::RSS;
$rss->parsefile("index.rdf");
# print the title and link of each RSS item
foreach my $item (@{$rss->{'items'}}) {
print "title: $item->{'title'}\n";
print "link: $item->{'link'}\n\n";
}
このとき、perlでは、Shift_JISというencodeは利用出来ないので、XML::Parser モジュールをインストールするともれなくついているJapanese_Encodings.msgを読んで、index.rdfのencodeingを変えてやる必要があります。
たとえば、encoding="x-sjis-unicode"と設定した時と、encoding="x-sjis-cp932"と指定した時では、違う結果が出てきます。それこそ、今回問題になっている、チルダのところだと思います
さて、どうして、こういうことが起きるのか。ですが、それこそ、Japanese_Encodings.msgに書いてあったりします。ところが、英語なので読むのが面倒です。河合さんの訳が、河合さんのPerl XMLでencoding='Shift_JIS'や'euc-jp'を使うのページで配布されています。
このあたり、従来の文字コードとUnicodeの対応に関する諸問題にまとめられているのですが、ようするに、半角円記号と半角バックスラッシュの問題が大きくなって帰ってきているわけで、これを技術的に解決するのは容易ではないでしょうね。
さて、回避策ですが
~を%7Eと表記する
の2通りあるように思います。
こういうのってあっちこっちで問題になるように思うんだけど、どうやって解決してるんだろうなぁ。おしえて!>えらいひと。