かたつむりくんのWWW

データベースも静的ファイルも丸ごとバックアップする Perl スクリプト all-backup.pl

この記事は、「Movable Type Advent Calendar 2012」の6日目の記事です。

みなさま、今日で僕は 36 歳になりました。たくさんのお祝いの言葉をいただき、ありがとうございます。36 歳の 1 年も「Update me, everyday!!」をモットーに日々精進していきたいと思います。

いやー、思い返せば 36 年間色々なことがありました。色々な、本当に色々な、、、あれ?思い出せない。。。思い出せないぞ、過去の記憶が〜〜〜!

ええ、過去の記憶はとても大事です。なくさないようにバックアップしておきましょう。

ということで、データベースも静的ファイルも丸ごとバックアップして、FTP で別のサーバーに転送までしてくれる「 all-backup.pl 」という Perl スクリプトを書きました。

続きを読む

Sublime Text 2 用 Movable Type テンプレートタグのスニペット集

今夜の Coda2 + Sublime Text 2 特集の「CPI x CSS Nite「After Dark」(5)」に参加するということもあるので、自分で使っている Sublime Text 2 用の MT タグの補完ファイル(スニペット)を公開します。多分、MT5.2 までの全部の MT タグが入っていると思います。

ファイルを展開して、Sublime Text 2 の Packages のディレクトリに突っ込めば良いかと思います。

インストールしたら「mt」と打って「ctrl + space」で補完リストが表示されます。素敵!(SublimeCodeIntel 使っても自動では表示されませんでした。なんでだろう?)。

もう少し自分好みにカスタマイズしたら、まじめに公開しようと思いますw

さくらのクラウドのサーバーを変えてみた

このブログは、さくらのクラウドを利用しているのですが、先ほど、色々トラブルのあった旧ストレージから新ストレージに変更してみました。この記事は、新サーバーのIPアドレスを打って書いているので、この記事が見えるということは新サーバーということになります。

旧ストレージから新ストレージに変更する際に、Webサーバーの方はメモリを3Gから2Gに落としたので、少しだけスペックダウンです。それ以外はほぼ同じ構成とし、その状態で全ブログ記事を再構築(Movable Type)したところ、旧ストレージのときよりも再構築時間が 5 分短くなっていました。

11月から、新規受付も再開したさくらのクラウド。これから巻き返しに期待したいですね。

Movable Type でカスタムフィールド foo の値が bar なブログ記事のカテゴリを hoge に一括で変更したい

なんかクイズのようなタイトルですね…

例えば、basename が「birthday_year」(誕生日の年)のカスタムフィールドの値が、1810年代に該当するブログ記事が属するカテゴリのうち、カテゴリIDが120のカテゴリを、一括でカテゴリIDが121のカテゴリに変更したいとき、以下の SQL を実行すれば OK です(妙に具体的w)。

UPDATE `mt_placement`
INNER JOIN `mt_entry_meta`
ON `mt_placement`.`placement_entry_id` = `mt_entry_meta`.`entry_meta_entry_id`
SET `mt_placement`.`placement_category_id` = 121
WHERE `mt_placement`.`placement_category_id` = 120
AND `mt_entry_meta`.`entry_meta_type` LIKE 'field.birthday_year'
AND `mt_entry_meta`.`entry_meta_vchar_idx` REGEXP '^181.*';

直接データベースをいじるので、バックアップは忘れずに!ご利用は自己責任で。

Movable Type で出力するテンプレートから空行を削除したい

Movable Type で出力されるページって、どうしても空行がいっぱいになっちゃいますよね。でも、空行を少なくするようにテンプレートを組むっていうのは、テンプレートも読みにくくなるし、無駄な労力になってしまいます。

そんなときは、以下のようなタグで、空行を削除したい場所を挟んであげればOKです。

<mt:Unless name="compress" regex_replace="/^\s*\n/gm","">

</mt:Unless>

ここでは compress という変数名にしていますが、これは存在しない変数名であれば何でもOKです。僕は分かりやすく(かっこつけて)compress ってすることが多いです。

Movable Type のカテゴリ一覧で、カテゴリをまとめて削除したい

Movable Type のカテゴリ一覧で、カテゴリをまとめて削除したいときってありません?

僕はありました、今。で、いちいちクリックするのは面倒なので、JavaScript コンソールで以下の jQuery を実行すれば OK。確認のダイアログが表示されるので安心です。

jQuery('#root span.delete').each(function(){
jQuery(this).click();
});

確認が不要な場合は、以下で OK です。

jQuery('#root div.sortable-item:visible').remove();
jQuery('#actions-bar-top button.save').click();

ご利用は自己責任で。

Mac OS X Mountain Lion + VMware Fusion 5 + CentOS 6.3 + Apache + mod_proxy + PSGI + Movable Type 5.2 のローカル環境を構築した

タイトルのままですが、次のような組み合わせのローカル環境を構築しました。

  • Mac OS X Mountain Lion
  • VMware Fusion 5
  • CentOS 6.3
  • Apache
  • mod_proxy
  • PSGI
  • Movable Type 5.2

この環境を構築したときの作業手順を、備忘録として残しておこうと思います。

※スクリーンショットは乗せるとページの表示が重くなりそうですし、無くても十分分かると思いますのでテキストリンクにしました。

続きを読む

Custom Field GUI Utility 3.2.7 リリース

WordPress のカスタムフィールドを使いやすくするプラグイン「Custom Field GUI Utility 3.2.7」をリリースしました。

get_attachment_object() を the_content() よりも前に書くと、the_content() で何も表示されなくなるバグを修正しました。

なお、the_content() 意外でも同様の状態になる可能性がありますので、当プラグインをご使用中の方は、以下のページからダウンロードして、cfg-utility.php を差し替えて下さい。

EC CUBE で作ったサイトの copyright の年数を自動で更新する

Smarty を知っていれば簡単な話なんですが、自分はまったく分からないのでメモメモ・・・。

EC CUBE で作ったページのフッターのコピーライト(著作権表示)の年数が更新されてなかったので、自動で更新されるようにしました。

  • data/Smarty/templates/default/footer.tpl

このファイルの年数のところを、

<!--{$smarty.now|date_format:"%Y"}-->

とすればいいっぽい。

カテゴリの階層の深さを出力する Movable Type プラグイン - CategoryDepth

まーしーさんに言われたんで CategoryDepth というプラグインを作ってみました。

カテゴリコンテキストでは <$mt:CategoryDepth$> タグを、ブログ記事コンテキストでは <$mt:EntryCategoryDepth$> を使います。

ブログ記事がカテゴリに属していないときは空文字を返します。

ごめんなさい、今はスタティックの方しか対応してないです。あとでダイナミックにも対応させます。

【2012年9月6日午後2時33分追記】

藤本さんがダイナミックにも対応させてくれたので取り込みました!

【2012年9月6日午前12時05分追記】

CategoryDepth という名前のプラグインはすでに2008年に「エムロジック放課後プロジェクト」で公開されていました。名前がかぶってしまってすいません!(>_<)

以上です。

MTDDC Tokyo 2012 に参加しました & LT しました

2012年8月4日に開催された MTDDC Tokyo 2012 に参加しました。

今回の MTDDC も色々と参考になることが多くて勉強になりました。さらに、今回は LT(Lightning Talk)が15組もいました。それぞれが5分に凝縮されたおもしろい内容で、こちらも勉強になりました。

MTDDC の後のビアガーデンでの懇親会、さらにその後の2次会へも参加し、とても楽しい時間を過ごせました。みなさん、ありがとうございました。Six Apart の皆様、お疲れ様でした。

関係者以外のみなさん、MT のコミュニティ、いいですよ−。

さて、MTDDC で LT するのが趣味になりつつある僕ですが、今回ももれなくしゃべらせていただきました。

スライドは大したこと書いてないですが一応アップしておきます。

そして、肝心の mt-plug.in.cgi は Github に上げておきました。ざっとですが、README ファイルに説明書いたし、設定を編集するところにもコメント入れておいたので、少しは使えるかと思います。

こちらの CGI は、今後もう少し自分で使いやすいようにカスタマイズしていく予定です。

さてさて、次の MTDDC はどこで開催されるのでしょうか。できれば地方の MTDDC にも参加してみたいと思います。

ローカルでプラグインを開発してインストールとテストをするときはシンボリックリンクを使えば楽じゃん...

今まで気がつかなかった…

ローカル環境で Movable Type のプラグインを開発するとき、Dropbox にフォルダ作って開発し、テストするときにいちいち MAMP 内の MT にファイルをコピペしてやってました。更新する度に毎回…。

で、ふとさっき思いついたんだけど、ファイルをコピペしないで MT のフォルダ内にシンボリックリンクを作っちゃえば楽じゃん。

ln -s  /Users/tinybeans/Dropbox/plugins/MTAppjQuery /Applications/MAMP/htdocs/mt/plugins

これで更新する度にいちいちコピペしなくて良くなりました。感動!(何か弊害あるのかな?)

MT タグの拡張を簡単にする Movable Type プラグイン - EasyMTML

Movablet Type では、プラグインを作って自由に MT タグを拡張することができます。しかし、ちょっとした MT タグを追加するにしても、MT プラグインのお作法にのっとって、config.yaml を書き、決まったディレクトリ構造で色々なファイルを作り、と少々面倒です。

そんな時は、アルファサードさんの Github で公開されている EasyMTML というプラグインを使うと、新規の MT タグの登録が少し便利になります。

 

続きを読む

Path Finder で複数ファイルのファイル名を一括置換できることを知った

愛用しているつもりの Path Finder で、複数ファイルのファイル名を一括で置換できるのを初めて知りました。置換だけでは(ToT)、文字列の追加だとか、連番の追加だとかもできました。

pathfinder_replace

今までは複数ファイルの置換には shupapan を使っていましたが、ある程度のファイル名の操作は Path Finder で事足りそうです。正規表現の置換もできるので嬉しいですね。

使い方は、Path Finder で複数のファイルを選択して「command + return」です(ファイルを削除しようとして「Command + delete」しようとしたら打ち間違えて発見したのでした)。

便利で高機能な Path Finder、知らない機能がまだまだいっぱいあるんだろうな〜。

MT タグを MTML タグに変換する Coda 2 プラグイン - アップデート

先日「MT タグを MTML タグに変換する Coda 2 プラグイン」というのを公開してみましたが、あれから少し機能を追加したのでアップしておきます。

追加した機能は以下の通り。

  • 加工処理
    • MT を mt: に変換(選択した文字列中の MT を mt: に変換)
    • mt: を MT に変換(選択した文字列中の mt: を MT に変換)
    • MT タグを除去(選択した文字列中にあるMTタグを除去)
  • コメントアウト
    • MTIgnore(選択した文字列を MTIgnore タグで囲む)
    • MTTemplateNote(選択した文字列を MTTemplateNote でコメントアウト)

また、これまでのだと <mt:Loop name="hoge" glue="<br />"> のように、MT タグの中に <> があるとうまく動作しなかったのを修正しました。

続きを読む

Custom Field GUI Utility 3 の imagefield でアップロードした画像の各要素を取り出す方法

久しぶりに WordPress の記事です。ちょっと聞かれたので記事にしておきます。

Custom Field GUI Utility 3 で、imagefield でアップロードした画像の各要素(アップロード画面で入力できる要素)の取り出し方を紹介します。

なお、「imagefield・filefield の使い方(ver 3.1 以降)」を前提知識とさせていただきます。

続きを読む

ユーザーが自由に編集できる Movable Type のダッシュボードウィジェットを作ってみた

Movable Type の管理画面にログインしたときに最初に表示されるユーザーダッシュボード。そこに、ユーザーが自由に編集できるダッシュボードウィジェットを作ってみました。

ユーザーのタスクリストに、備忘録に、自分のエントリー一覧に、ご自由にお使いください!という感じです。

続きを読む

ちょっと知っておくといいかもしれないDynamicMTMLで実行するPHPのパス関係

例えば、DynamicMTML 適用ファイル内に書いてある PHP で file_get_contents() とかしようとしたときに、うまく取得できなくてハマったことありませんか?(無いか…)

これって、自分が思っていたのと実行されている PHP でのパスが違うのが原因だったりします。

続きを読む

MT タグを MTML タグに変換する Coda 2 プラグイン

ようやく、App Store の Coda 2 のアップデートが来ましたね。

日本語化もされましたし、クリップ機能周りにバグ(?)があったのか、新機能の複数設置のプレースホルダーが使えなかったり、クリップの新規作成のダイアログが画面の外側に出てしまったりしてすごく困っていましたが、これらは解決されていました。うれしい!

ということで、なんとなくですけど、MT タグを MTML タグに変換する Coda 2 のプラグインを書いてみました。

続きを読む

カンマ区切りの文字列をプラグインなしで配列のようにループで取り出すTips

Movable Type でテンプレートを書いているとき、カンマ区切りの文字列があって、これを配列にしてループさせたいってことは多々あるかと思います。

そんな時は、荒木さんの Split プラグイン(小粋空間)を使ったりしますが、プラグインを使えない環境もあるかもしれません。

そこで、今回はプラグインを使わないで、カンマ区切りの文字列を配列のようにループする方法を紹介します。

続きを読む