メイン

プログラミング アーカイブ

2008年04月14日

REALbasicでXML-RPCクライアントとかMTのAssetブラウザとか妄想してみる。

よくMovable Type (に限らないけど) のどこが面倒って話で画像とかファイルのアップロードがブラウザベースで1つずつってのは面倒だよねって話になるのだけど。

で、結局作っちゃえばいいじゃん、っていう話になるんですけど何でもかんでもJavaScriptとかAjaxとかでやるんじゃなくて、Adobe AIRでやるとか色々考えられるんだけど (それでもブラウザ上にこだわるならAdobe - Flexでやるとか)、ちょっと思い立ってREALbasic落としてきて触ってみた。昔結構使い込んでいたツールだし、手っ取り早いかなって(iPod touch / iPhoneのアプリ吐けるようにならないかなぁ...)。

1時間ほど使いながらリファレンスとか使い方をググってみたりしたけど(メーリングリストの過去ログとかでサンプル探したり)、一時は結構日本のコミュニティも勢いあったんだけどなぁ、という感想。特に日本語で新しい情報がない。

HTTPSocketまわりは昔使っていた頃からかなり変わっていて(もちろん充実していて)、とりあえずサーバーのcgiにユーザー名とパスワードをポストするだけのスクリプトを書いたらちゃんと動いた。

ウィンドウにURLFieldって名前でテキストフィールド作り、Movable Typeのcgiのパスを入力。プッシュボタンに以下のスクリプトを書いてクリック。


Dim form as Dictionary

form = New Dictionary
form.value("username") = "test"
form.value("password") = "test"
  
MTSocket.setFormData form
MTSocket.post URLField.text

ただそれだけ。ちゃんとMTにログインできた。別にMTでなくともXML-RPCクライアントくらいなら簡単に作れそうな気がする。

で、Assetにアイテム放り込むには添付ファイル? を付ける必要があるわけだが、情報としてはこのあたりか。何とかなりそうか?

受け取る側はプラグイン書くかBootstrapでアプリ作って受け取るとか、ファイルブラウザとかも定義してxmlでAssetのデータリストを返してREALbasic側でインターフェイス作るとか...半分くらいやる気になった。とりあえずライセンスアップグレードしておこうか。

2008年04月01日

Movable Type on Leopard - AppleScript から制御する。

Mac OS X Leopard のAppleScriptが密かに面白い。
単なるOS Xネイティブなアプリケーションだけでなく例えば Movable Type 4.1 のようなソフトウェアを扱えるようになっているようだ(用語辞書、誰が書いたんだろう?)。

エントリーをブログに登録して再構築するスクリプトの例


tell application "Movable Type 4.1"
    activate
    set obj to new entry with property
        { title : "Welcome to Movable Type4!",
          text : "New design launched using Movable Type.",
          status : 2,
          author : 1 }
    set blog to item 1 of mt_blog
    set result to save obj in blog
    rebuild result without index archive
end tell

まぁ、ここまでなら素直にPerlで書けよ! ってなことになるけれど、以下の例なんかどうだ?

Excelと連携させる


tell application "Movable Type 4.1"
    activate
    set blog to item 1 of mt_blog
    set entries to get entries of blog
    set i to 1
    repeat with entry in entries
        tell application "Microsoft Excel"
            tell document 1
                set cell1 to "A" & i
                set cell2 to "B" & i
                set text of range cell1 to (title of entry)
                set text of range cell2 to (permalink of entry)
                set i to i + 1
            end tell
        end tell
    end repeat
end tell

エントリーのタイトルとURLをExcelにそのまま渡してセルにセットしている。Excelからエントリーをインポートの方がニーズはありそうだけど。





嘘! 嘘です。すいません、もうしませんって言ったのに...一年に一度だし...また書いてしまいました。あんまり覚えてないや、AppleScript。(てかLeopardのマシンないし!)

それでも、


do shell script "./tools/run-periodic-tasks"

ってのは普通に使えるかもね。Excelから値をひっぱってシェル経由でPerlスクリプトに渡せばいいわけか。いや、できんことないよな。意味があるかどうかわからんけど。

WordPressのプラグインをDrag & DropでMovable Typeのプラグインに変換するREALbasic製アプリケーション(Mac/Win/Ubuntsu対応)。

最近、MacのみならずiPod touchとかiPhoneとかApple製品が面白いんだが、昔僕が良く使い捨てアプリを作っていたREALbasicとか、最近どうなんだろう。iPod touch / iPhoneのアプリが作れるとかなったら再び注目を浴びるんじゃないかなと思っていて、久しぶりに触ってみようかと。

で、本格的なデスクトップアプリを作るほどの暇は年度末のこの次期にはないし、ちょっと以前から思っていたアイデアを少し。

WordPressのプラグインをDrag & Dropすると、Movable Typeのプラグインに変換してくれます。β版。

Drag & Drop すると表示されるウィザードに従って必要な情報を入力していくと変換されます。

やっぱり何でも間でもウェブアプリではなくてたまにはこういうデスクトップアプリとかも作ってみたいよね。



















ごめんなさいごめんなさい。忙しかったのでネタをブラッシュアップする暇がなかったんです!

来年こそはもう少しゆとりを持って面白いネタ考えます。

2007年11月08日

Movable Type Open Source Project を活用しよう @ 関西オープンソース2007。

MTOSの姿はまだ見えませんが...そろそろ直前になってきましたので、内容について触れておきます。

日時:11月10日土曜日 16:00〜 (50分) [会場: 南港ATC ITM棟 9F-H6]

内容について

これまでは割とWeb屋さん向けの場所で話すことが多かったのですが、今回はOSS関係のイベントなので、これまでしゃべって来たことやこのブログに書いて来たものも含めて、方向性としては「Webアプリの開発にMTが便利!」という面を中心に話そうと思います。

  • Inside MT (MTの構成)
  • MT Perl APIの基礎
  • データベースアクセスとMT::Objectのサブクラス作成
  • MTのテンプレートエンジン
  • Perlプラグインによる拡張
  • Bootstrap.pmを利用したアプリ開発
  • PHPによるダイナミックパブリッシング
  • オープンソースならではの活用方法を考えよう

*内容は変更になる可能性があります。

特に、テンプレートエンジンについては、MT4になってMTにCMSテンプレートがMTのテンプレートエンジンを使うようになっていることもあり(3.3まではHTML::Template)、管理画面の拡張やWebアプリ開発でも多いに活用できることから、今回はその辺も強調してみたいと思います。

関西で行われる数少ないOSS系のイベントですから、他のセッションもチェックしていただいて、面白そうなものがあれば是非覗いてみてください。

それでは当日、会場でお会いしましょう。

2007年10月10日

検索? タグ? カテゴリー? 関連性, 体系付け。

まだやってるし...もうちょっと続くかもしれないけど、皆さんもう飽きました?

ブログ内検索




  

実は検索だけじゃないのだ

ブログにおけるエントリーの関連性や体系付けを行うしくみとして、カテゴリーやタグというものがある。一方、読者が欲しい情報を探す一つの手段として「検索」がある。

カテゴリーもタグも発信者の主観で付けられるものだ。ソーシャルブックマーク等のタグはそうではないけれども。

高速なタグ・アーカイブが欲しい

発信者が主観で付けられるものゆえ、検索語の選択が無限であるのに対してカテゴリーやタグは有限だ。であるならばこれらのアーカイブは静的アーカイブにすることが可能で、MTのカテゴリーアーカイブが静的生成できるのは良いとして、タグ・アーカイブも静的生成できるのが望ましいのではないかと思う。

できないのか? と思ってググってみると、同じようなことを考えて既に行っている方がいらっしゃるわけですね(静的生成ではないけど)...

現在作成中のダイナミックパブリッシングを利用した検索ページではタグ検索ができるようになっている。MT4のデフォルトテンプレートでは、タグ検索はmt-searchに渡される動的ページだから、mt-searchが高速動作できる環境でないと遅い(その仕組み上キーワード検索程遅くはないが)。また、CGIによって動的生成されるページへのリンクには nofollowを付けたいところ。でないとGooglebotが (に限らずロボットが) mt-searchを叩くのだ。MTインストール済みレンタルサーバーとかで、ロボットが多くのmt-search を叩いている状況ってのは何だか恐い。ただでさえスパマーがtrackbackやcommentのCGIを叩きまくっているのだし。

モジュール版PHPで動作しているサーバーの場合、CGI(Not FastCGI)の起動よりも早くレスポンスを返せるからこの(PHP)ダイナミック版タグ検索は一つの選択肢になると思う。但し、MTのダイナミックパブリッシングではパラメータ付きのページをキャッシュしてくれない。ここが何とかなるといんだけど。もう少しダイナミック版のソースを追いかけてみよう。

さすがにキーワード検索は動的生成じゃないと、ってかそれでいいと思うし

話がそれた。一方「検索」は発信者ではなく読者が自由に設定するものだ。一部の読者は発信者の意図しないカテゴリの情報を求めているかもしれない。なので基本的に動的生成で良い。問題はMTのデフォルトテンプレートで「検索結果」フィードへのリンクが表示される点だ。確かに検索結果のフィードがとれるってのは便利かと思う。

それでもやっぱり読者がRSSリーダーに mt-search が生成する動的ページのフィードを登録するってのもやっぱり勇気がいるなぁ (サーバーへの負担という点で)。パワーに余裕の無いサーバーではRSSリーダーが取得に失敗するってことも多いのではないだろうか。

ということで、高速・軽量な検索ってのは単なる検索ではなくて、タグ・アーカイブや検索結果のフィード配信の代替プログラムでもあり、カテゴリ+タグでの絞り込みとか、カテゴリ+キーワードの絞り込みとかを実現するためのものなのです。 キーワードはともかく、このあたりを柔軟に指定できて且つ静的に吐き出すことができれば、関連性, 体系付けの選択肢も広がるのではないかな?

分かち書き+MySQL FULLTEXTインデックス検索 VS LIKE検索

両方とも実装してみたのだが、400エントリー弱(実際にはテスト用ブログ等でDBにはその倍くらいが登録されている)のこのブログで、現状のサーバーでは2倍程度の差が出ている。とはいえ20件表示であれば0.08秒前後と0.16秒前後、体感速度に大して差はない。

フィードの生成はもっと高速。各々約半分くらいの時間で検索と構築が終わる。これは検索結果ページではトータルヒット件数を取得してページ送りを実現するためにSQLを2回発行しているからだ(まず全てのヒット件数をカウントしてからoffset, limitを指定して表示すべきエントリーを得ている)。フィードではページ送りが不要だからこの分のSQLが不要。

FULLTEXTインデックス検索には速度以外にもメリットがあって、関連性の高い順に表示することができることだ。また、インデックス作成の際に画像のALTを展開した上でHTMLタグを削除しているから、「タグの中」がひっかからない。
LIKE検索ではたとえば「HTML」について書かれたエントリーを検索したい場合に、アンカータグの中の foo.html とかにもマッチしてしまう。

逆にこれを逆手に取れば、特定のエントリーにリンクしているエントリーの検索とかにはLIKE検索使えるね。例えば、「音声ブラウザと相性の良いHTMLを作る(1)。」にリンクしているエントリーはページのパスをクエリーとして指定してやれば良いわけだ。

ということでね、色々活用法が考えられて 夢がひろがりんぐ でしょ?

以下, タイトルのみを表示します。

2007年08月31日

Excelで作ったリストをMovable Typeに放り込むとっても簡単な方法。

2007年08月18日

Nakedがじわじわ?来てるので。

2007年07月19日

ウェブコンテンツ・テキストバージョン・ジェネレーター(Naked Beta)。

2007年07月05日

TrackBackをなかったことにしてGoogleに買われるまで頑張ってみたりして。

2007年06月27日

静的生成と動的生成, Webページをビルドするコストは最初の訪問者に支払ってもらいましょう(完結編!?)。

2007年06月26日

静的生成と動的生成, Webページをビルドするコストは最初の訪問者に支払ってもらいましょう(さらに続き)。

静的生成と動的生成, Webページをビルドするコストは最初の訪問者に支払ってもらいましょう(続き)。

2007年06月25日

静的生成と動的生成, Webページをビルドするコストは最初の訪問者に支払ってもらいましょう。

2007年05月25日

MeCab (和布蕪)でルビ振り。

2007年05月21日

Naked(beta)のこれから。

2007年05月13日

音声ブラウザができるだけ読み上げやすいページに変換しようと試みるゲートウェイ(αβ)。

2007年05月10日

誰(どこ)? がサーバーの負担を負うべきか。

2007年05月04日

MovableType用ファイルマネージャーの設計と実装(1)。

2007年05月03日

503を返すとか返さないとか言う前に。

2007年05月01日

SQLite(メモ)。

2007年04月28日

CMSと静的ファイル管理に関する考察の続き。

MovableType Background Rebuilder Plugin(1.0RC2).

2007年04月25日

DeleteFilesAtRebuildの半端さ加減。

2007年04月24日

受信トラックバックの junk, moderate, publish ステータスの保存のされ方。

2007年04月23日

MovableType Background Rebuilder Plugin(1.0RC2)(1.0RC1).

2007年04月22日

MovableType を開発プラットフォームとして使う (Part2)。

2007年04月20日

なるほどTrackbackスパムが多いわけだ。

2007年04月19日

Unicode::Normalizeプラグイン(MT)。

2007年04月18日

ページ分割のアルゴリズム。

2007年04月14日

モブログ一通り完成。

2007年04月06日

プロジェクト「MobileType」。

2007年03月27日

abs2relプラグインというのを作って相対パスにしてみた。

2007年03月19日

MovableTypeのプレビュー機能を改良する(StylePreviewプラグイン)。

2007年03月17日

MovableTypeの出力されたエントリーページから編集画面へ移動するプラグイン+Bookmarklet。

2007年03月16日

MT3.34, FastCGI+BackgroundRebuilderプラグイン。

2007年03月12日

MovableTypeでカテゴリーアーカイブを出力“しない”プラグイン。

2007年03月08日

MovableTypeを開発プラットフォームとして使う。

2007年02月21日

2001年の僕を見つけた。

2007年02月10日

MT plugin Jaccessibility (書き直し版).

2007年02月09日

MovableType Background Rebuilder Plugin((元)最新版).

2007年01月31日

Hyper Estraierの「文書ドラフト」をMTから生成して検索する。

2007年01月25日

mt-search.cgiの代替プログラム。

2007年01月14日

MovableType Background Rebuilder Plugin(beta6).

2007年01月11日

MovableTypeの体感速度を上げる(続き)。(MovableType Background Rebuilder Plugin(β5)).

2007年01月05日

MovableTypeの体感速度を上げる。

2007年01月03日

MovableType Background Rebuilder Plugin(2).

2006年12月31日

MovableType Background Rebuilder Plugin.

2006年12月03日

[KOF2006] MTプラグインサンプル及びドキュメント公開します。

2006年11月17日

MovableTypeのプラグイン開発。

2006年04月10日

Color Quest 英語版。

2004年12月04日

プログラミング。

トップページ | アーカイブ(このブログの全てのエントリーの一覧)

最近のエントリー

このブログのフィードを取得
[フィードとは]