【メモ】 ウィジェットテンプレートのキャッシュで嵌る

このブログのはてなブックマークまとめエントリは、毎朝、前日のはてなブックマークをまとめてエントリという形で投稿しているのですけど、リニューアルしてバッチ処理を設定してみたらなんだかきちんと投稿されない。具体的に言うと、メニューの「Recent Entries」に、カテゴリが空の状態で投稿されてしまう。 バッチ処理が悪いのか、XML-RPC叩くライブラリが悪いのかと色々やってみたけどわからなくて、最終的には「Recent Entries」テンプレートのキャッシュが更新されていないことが判明。キャッシュ更新のタイミングを「ブログ記事」に設定していたのですけど、どうやら再構築時にウィジェットテンプレートのキャッシュが更新されないみたい。 XML-RPC叩いてカテゴリ付きでエントリを投稿する場合の経過はこんな感じなのですけど、

  1. XML-RPC経由でエントリ内容を投稿
  2. 返ってきたエントリIDを使ってカテゴリを登録
  3. エントリIDを使ってブログ記事を再構築
本来こうなって欲しいところ、
  1. XML-RPC経由でエントリ内容を投稿 ← キャッシュ更新
  2. 返ってきたエントリIDを使ってカテゴリを登録
  3. エントリIDを使ってブログ記事を再構築 ← キャッシュ更新
こうなってしまうという。
  1. XML-RPC経由でエントリ内容を投稿 ← キャッシュ更新
  2. 返ってきたエントリIDを使ってカテゴリを登録
  3. エントリIDを使ってブログ記事を再構築
考えてみれば当然で、再構築というのはブログ記事の内容に変更はないわけだから、キャッシュ更新タイミングである「ブログ記事を作成または更新後」には該当しないのですよね。 そうかー。 というわけで、該当ウィジェットのキャッシュを解除したらば無事、再構築に含まれるようになりました。 良かった良かった。

続きを読む

【メモ】 XML-RPC経由でカスタムフィールドの値を渡す(MT5.1)

検索してみるとこんなことが書いてありました(強調は僕)。

PythonでMovableTypeのXML-RPCインターフェースを叩く « taichino.com

ウェブサービスパスワードを確認したら記事を投稿してみます。ここで注意するべきなのはblog_idが文字列である事と、mt_text_moreで「キー名=値」とするとカスタムフィールドデータを渡せる事です。

「mt_text_more」ってのは「追記」、つまり「エントリの続き」のことです。 そんなところにデータ預けちゃって良いのかよ、ていうかそんなことして「追記」はちゃんと投稿できるのかよ、と思ったのですが改行を挟むことできちんと判別できるようです。 コードイメージとしてはこんな感じ。
$text_more = '追記に挿入する文章';
$custom_field = 'フィールド名=値';
$mt_text_more = $text_more . "\n" . $custom_field;
「フィールド名」はというのはカスタムフィールドの「ベースネーム」というやつです。 複数登録したいときには、改行で区切って追加していってやれば大丈夫。 こんな感じで。
$text_more = '追記に挿入する文章';
$custom_field1 = 'フィールド名1=値';
$custom_field2 = 'フィールド名2=値';
$mt_text_more = $text_more . "\n" . $custom_field1 . "\n" . $custom_field2;
なるほど。 場当たり的な対応だなぁと言う気もするけれど、XML-RPCの仕様を変えるわけにはいかないし、これならラッパーさえ変えずに投げるデータを変えるだけで運用を変更できるから楽って言えば楽。気持ちは悪いけれども。 ともあれ、無事に出来たので良しとする。 ちなみに、相変わらずXML-RPC経由で日時指定投稿というのは出来ないのね。 publishが真偽値だからそれはもう仕方のないことかな… NoPublishMeansDraftを1にして下書きで投稿→別途日時指定という今までのやり方で行くしかないか。 NoPublishMeansDraft | 環境変数リファレンス

続きを読む

【Movable Type】 5.0 → 5.1にアップグレード

movabletype.png

アップデートの流れ

基本的な流れはここを参考にしました。まぁどのバージョンでも大体同じなのですが。 Movable Type 5.0から5.1へアップグレード|Blog|Skyward Design 上書きアップグレードするのではなくて、違うディレクトリにアップデートしてリネーム。 面倒ですがより安全です。 もちろん、データベースのdumpはお忘れなく。 ここのブログではない他の場所で使用しているMTOS(オープンソース版)の方は、 これだけで問題なくアップグレードできました。

アップデート中に起きた問題点と解決方法

次にここのブログの場合。 サーバが色んな意味で一杯一杯なのでいろいろとエラーを出すのですが、これには参りました。
アップグレード中にエラーが発生しました failed to execute statement CREATE INDEX mt_blog_meta_type_vint ON mt_blog_meta (blog_meta_type,blog_meta_vinteger_idx): Duplicate key name ‘mt_blog_meta_type_vint’ at lib/MT/Upgrade.pm line 835.
簡単に言うと「データベースのINDEXがかぶってて新しいINDEX作れないよ」。 INDEXならと思って削除をしてみるのだけどphpMyAdminから削除できないでやんの。 「削除しました」って出るのに削除できてない。 仕方がないので「mt_blog_meta_type_vint」というindexを「mt_blog_meta_type_vint.old」にリネームしたらばちゃんと通るけど、また違う場所で引っかかってやり直し。面倒。なので、もうこのエラー自体無視することに。参考にしたのはこのページ。 くらこしLB::|s|e|r|v|e|r|r|o|o|m|: MT5.1 発進! 続いてUNIQUEキーでも躓いたけどこれもUNIQUEキーをリネームでなんとか。 最終的に、アップグレードが終わって、何も問題なく動いています。 やったー

続きを読む

【メモ】 MovableTypeの記事投稿画面でリストボタンを押したときのインデントを削除する

特に需要はないと思いますが自分向けメモ。

mt-static/js/common/Editor/Textarea.js 118行目

list[ i ] = "\t
  • " + list[ i ] + "
  • ";
    list[ i ] = "
  • " + list[ i ] + "
  • ";
    他のボタンについても処理のカスタマイズはこのファイルを変更することで行えます。 (リンクに「target=”_blank”」を追加するとか)

    続きを読む

    【メモ】 Movable Type 5で指定日投稿する時の注意

    指定日投稿の設定はこちらを確認してください。 指定日投稿 – さくらインターネットでの設定 これで大体出来るのですが、Movable Type 5ではもう1点。 このまま指定日投稿しようとしても失敗してしまい、以下のログがシステムログに残ります。

    タスクを実行するために必要なロックを獲得できませんでした。TempDir(/tmp)に書き込みできるかどうか確認してください。
    これを回避するには、mt-config.cgiにTempDirの設定を行う必要があります。

    設定例:

    TempDir /web/htdocs/mt5/tmp
    設定したディレクトリを作成し書き込み権限を付与しておきます。これでOK。 Movable Type 4まではそんなことする必要なかったんですけどねーまぁよくあることです。はい。

    続きを読む

    Movable Type 5とMovable Type 4を同じDB(MySQL)にインストールする

    ちょっとMovable Type 5を試してみたいなと思ったのだけど、使用できるデータベース数に厳しい制限がある共用サーバでは「試す」のはちょっと難しい。なんでって、Movable Type 5の場合、作成するテーブルの名前を変更できない(Wordpressなら任意の文字列を頭に使用できる)ので複数インストールしようとするとテーブル名がかぶってしまって失敗してしまいます。 もし問題なく行けば移行も考えているので、SQLiteなどでの運用は2度手間だし…ということで、テーブル名をなんとか変更する方法はないかと探したら、ありました。ソースの編集という大技(昔のMovable Typeならともかく今はあんまり流行らないっぽい。その手のは全部プラグインでやるから)ですが、確かに上手く行ったのでメモ。

    実行環境:

    • MySQL 5.1.51
    • Movable Type 5.0.4

    続きを読む

    ブログからはてなブックマークへの投稿方法を変更。

    自分のブログのエントリをはてなブックマークへ投稿する方法については、過去、様々な試行錯誤と紆余曲折を辿ってきました。 AddToHatenaBookmark Pluginを入れてみる。 【メモ】MobableType → はてなブックマークでタイトルがURLになってしまう件 ブログからはてなブックマークへの自動投稿を再開しています。 Twitter経由でエントリをはなブックマークに投稿するときにタグも含める どれもその時点では問題なしだったのですが、仕様変更?や環境の変化で上手く動かなくなったり、改善したい点が出てきたりして今まで満足のいく実装はありませんでした。最近のTwitter→はてなブックマークの投稿にしても結局は、僕のブクマスタイルに合っているとは言えず。 これはもう自分で何とかするしかないのかな、と思っていたのですが面倒で放置していたところ、PEAR::Services_Hatenaを発見して非常に楽に実装できることが解ったのでさっくりと作ってみました。 【PHP】PEAR::Services_Hatena_Bookmarkを使う

    続きを読む

    【メモ】MobableType → はてなブックマークでタイトルがURLになってしまう件

    MovableTypeプラグイン「Hatena Bookmarker」でブクマ出来たり出来なかったり。 – nplll: Mutter これの続き。 新規投稿したエントリをHatena Bookmarkerを使って投稿したとき、タイトルが抜け落ちてしまうことがあるのだけど、「タイトルの編集が出来ていない」ということを考えるとすんなり理解できた。

    続きを読む