Googleが技術者を募集中らしいので。
Googleが技術者を募集中らしいので、腕に自慢の方はぜひGoogleに応募して広告の質を判定してAdWords広告の事前審査を行うアルゴリズムを開発してください!

でも70万円くらいならAdSenseで稼げるらしいのでGoogleに応募するよりAdSenseで稼いだ方が賢いかも :-P
で、このページに表示される広告は何でしょうね? 教えて! Googleさん。
カテゴリー: 駄文・雑文
« 2007年07月 | メイン | 2007年09月 »
Googleが技術者を募集中らしいので、腕に自慢の方はぜひGoogleに応募して広告の質を判定してAdWords広告の事前審査を行うアルゴリズムを開発してください!

でも70万円くらいならAdSenseで稼げるらしいのでGoogleに応募するよりAdSenseで稼いだ方が賢いかも :-P
で、このページに表示される広告は何でしょうね? 教えて! Googleさん。
カテゴリー: 駄文・雑文
ウチの会社で作成したサイトは全部MTで作ってんじゃねぇの? と思われているかもしれませんが、もちろんそんなこたぁありません。
但し昔っからCMS的なサイトの制作を行っていて、「よくこんな小世帯でこんだけのボリュームのサイト作ってんね!?」と言われる答えの一つは「自動化」なわけです。徹夜でガシガシHTMLコーディングってのがWeb屋のイメージなのかもしれませんが、ウチは徹夜はしません。
面接の際に意外によく聞かれるんですけど「徹夜はありますか?」って、世間のWeb屋はどんなんやねん、って思いますよ。
あ、一応答えは「年2回」って答えてます。実際は2回ないけどね。まぁ1回あるかないか。ただ、徹夜になるってことは誰かが何かミスした時しかあり得ないですが、まぁ人間だもの、ミスもあるさっ。
のっけから話それまくりですが、来月こんなイベントがあるそうなのでちょっと前フリというか、ウチでよくやる方法についてちょっと晒してみる(わりと普通なのかなぁ)。
まぁ実際はMTのAPIでもって詳細なカテゴリの関連づけとかブログの切り分けとかテンプレートのインポートとか色々やるわけですが、MT4でエクスポート/インポート形式がちょっとだけ進化したので(ファイル名なんかを引き継げるようになった)、Excelで作成したデータをもとにMTのエクスポート形式のファイルを生成して読み込むって方法が簡単なので紹介したい(もちろん、MT4のバックアップのフォーマットのXMLを気合いを入れて作るって方法もあるよ)。
まず、ExcelとかOpenOfficeとか何でもいいけれどスプレッドシートを作成できるソフトウェアでマスターデータを作る。構造は何でもいいけど、この例ではページのタイトル, カテゴリ, ファイル名, テキスト, 追記なんかを各セルに入力。

保存形式を「テキスト(タブ区切り)」にして保存。
スクリプトはこんな感じ
#!/usr/bin/perl -w
$fp = $ARGV[0];
open(FH, $fp);
while(<FH>){
my $line = $_;
my @datas = split(/¥t/, $line);
my $html = &_read_tmpl($datas[0], $datas[1], $datas[2], $datas[3], $datas[3]);
print $html;
}
close(FH);
sub _read_tmpl {
my ($title, $cat, $basename, $excerpt, $text, $text_more) = @_;
return <<"MT_TMPL_HTML";
--------
AUTHOR: junnama
TITLE: $title
BASENAME: $basename
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: __default__
ALLOW PINGS: 0
PRIMARY CATEGORY: $cat
CATEGORY: $cat
DATE: 08/30/2007 00:00:00 PM
-----
BODY:
$text
-----
EXTENDED BODY:
$text_more
-----
EXCERPT:
-----
KEYWORDS:
-----
MT_TMPL_HTML
}
Macだったらターミナルから引数にマスタ、出力をファイルに指定して実行。WindowsだとActivePerlを入れておく必要があるけど。
perl ./tsv2mt.pl master.tsv > mt_html.txt
生成されたテキストをMTからインポートすればOK。ね、簡単でしょ? コツ、という程じゃないけど、カテゴリは英数文字で指定しておくとカテゴリーのbasenameがこれになってくれる(インポートした後にカテゴリー名とbasenameの関連づけを行う必要があるのだけど、これこそMTのAPIを使えばチョチョイと作れる)。
つまり、ここで書いたことのひとつの具体的な事例ね。
ということで、このエントリーをよく読んでから、以下のエントリーを読むと幸せになれるかも(笑)。
カテゴリー: MovableType, Web制作・ビジネス, プログラミング
先日来のProNetミーティングや開発者向けカンファレンスで 上ノ郷谷さんがしきりに「ハイブリッド・パブリッシング」と言っていたのでRebuildAt1stViewをハイブリッド・パブリッシングに対応させてみた。これで、テンプレート毎に「インデックス等、頻繁にアクセスされるページは静的生成」その他のページは「最初のリクエストがあった時点で再構築」という使い分けが可能になります。さぁ、再構築の新しい選択肢を今すぐキミも体験してみよう! とかなんとか。

以下、プラグインがどうこうというよりもMT4のお作法で書き直しつつ新しいフィーチャーを取り入れてみたいということでメモ的なエントリーになりますが。
MT4ではデータベースのテーブルの拡張がとても簡単になっています。Hack-a-thonの時にFujimotoさんが「簡単だよ!」って言っていたので (早速公開された「カテゴリーとフォルダを並べ替えるプラグイン(MT4専用)」でも使われています。
今回はmt_templateテーブルを拡張してテンプレート毎に静的再構築、RebuildAt1stView対象を設定できるようにするフラグ「template_rebuild_at」フィールドを追加しました。
拡張の仕方は本当に簡単。Pluginを->newする時に「schema_version」を指定して「init_registry」で拡張するテーブル名、フィールド名とタイプを指定するだけです。
コールバックのところもこれまでは、
MT->add_callback('MT::App::CMS::AppTemplateSource.edit_template',9 ,$plugin, ¥&_ rebuld_option);
とか書いていましたがMT4では「init_registry」の中で指定します。
この他に、タグの追加や__modeの追加も「init_registry」。init_registryがMT4対応プラグイン作成のキモ? かもしれません。
ということで、RebuildAt1StViewのinit_registryはこんな感じ。
sub init_registry {
my $plugin = shift;
$plugin->registry({
object_types => {
'template' => {
'rebuild_at' => 'integer',
},
},
callbacks => {
'build_file_filter'
=> ¥&_build_file_filter,
'MT::App::CMS::template_source.edit_template'
=> ¥&_rebuld_option,
'MT::App::CMS::template_param.edit_template'
=> ¥&_rebuild_flag,
},
});
}
日本語版のドキュメント充実にも期待していますが、当面はここでMT4の新しいお作法? のお勉強が可能です。
カテゴリー: MovableType
本日、国立国会図書館のウェブサイトで「写真の中の明治・大正−国立国会図書館所蔵写真帳から−東京編」が公開されました。国立国会図書館の所蔵する明治・大正期の資料の中から、著名な建築物や観光名所など東京の風景写真約500点を選んで紹介するもので、アルファサードが制作を担当しました。
様々な切り口(カテゴリーや地図)で情報にたどり着けるわけですが、Flashを使った地図からの移動においても出来る限り1ページ1URLの形なるように構成されていること、JavaScriptを用いて現在位置(パンくず)表示を閲覧ルート毎に動的に変化すること、Flashが閲覧できない/JavaScriptがOFFの環境でも閲覧に支障がないように配慮されていること(Flashの地図の代替で通常のイメージマップ、等)、最大幅を指定したリキッドレイアウト等、細かなディテールにもこだわったサイトになっています。
このブログを見ている人は同業の制作業界の人が多いと思いますが、そのあたりのディテールにもぜひ注目してもらえればと思います。
カテゴリー: Web制作・ビジネス
最新版はこちらから。
ハイブリッド・パブリッシング(アーカイブ毎に設定できるように)に対応しました!
通常の再構築は一切行わず「最初にそのページへのアクセスがあった時」に再構築(静的HTMLファイルを生成)を行います。
ダイナミックパブリッシングによる再構築の負荷軽減と静的生成による閲覧時の負荷軽減の両方のメリットを享受できる方式です。
先日のHack-a-thon の後に話していた中でRebuildAt1stViewの話が出ていたのとOgawaさんにも釣られて? いただいたので、ちょっとやってみる。
さて、junnamaさんの再構築に関するエフォートの中で一番示唆に富んでいる(と私が思う)のは、実はRebuildAt1stViewである。
但しTheSchwartz::Jobのみをバックグラウンドかcronジョブで実行するような仕組み
のところとか排他処理のところとかはまだやっていない。BackgroundRebuilderをMT4向けの単純なTheSchwartz::Jobのバックグランド処理版で実装したいとは思っていて、このあたりの組み合わせが「再構築」対策の一つの方向性になればと思う。だから、これはまだ途中段階のサンプル。 動作については一切無保証です。改造等はご自由にどうぞ。
今回は、MT4正規版でエラーになっていたらしいのでそのあたりをふまえて全面的に書き直し+全アーカイブ対応とした。以前よりずっとシンプルなものになった。DBの拡張もなし。


Options -Indexes
ErrorDocument 404 /mt/plugins/RebuildAt1stView/RebuildAt1stView.cgi
ErrorDocument 403 /mt/plugins/RebuildAt1stView/RebuildAt1stView.cgi
このプラグインが有効な状態での「再構築」とは即ち「ファイルを削除」することです。 全再構築を行うと生成されているファイルは (設定によりインデックスアーカイブを除いて) すべて削除されます。もちろん見かけ上の再構築処理は非常に軽くて速い。
また新規にエントリーを作成してもファイルは生成されませんし、エントリーを更新したり削除した場合、本来更新されるべきファイルは削除され、最初にそのページへリクエストがあった時点で再構築されファイルシステムに書き出されます。
カテゴリー: MovableType
mixiの擁護をするつもりもないし、なに真面目に反応してんだよオっさんって自分で思わないでもないけれど。
もうちょっと考えて書こうぜってことと、安易にブクマしないでくれ、ということが言いたい。
* ちなみに、こっち↓のエントリーで書かれていることは正論だと思う。
普段から意識して考えていればこれがOvertureのリスティングとかGoogle AdSense広告の種のものであることは直感的にわかると思う。というか僕の頭の中ではそう思った (どうやらこのケースはOvertureらしい)。
問題の本質はOvertureやGoogleが広告の審査をまともにしていないことにある。これまでにも感じるところは何度か書いたが。
* このブログ自身ににAdSense広告貼っておいて何を? というツッコミが来るのは覚悟の上で書くが、少なくとも僕は表示させたくない種類の広告はマメにフィルタリングしている。
Googleは検索で稼いでいるのではなく広告で稼いでいる。ところが検索のスパムには過反応するが広告のスパム (スパムというべきかどうかわからないが、少なくとも明らかに根拠の無い広告、見る人を騙しにかかる広告をそう呼ぶことにする) に対してはまったく寛容である。
フィルタリングをまめにしているとご丁寧にこんな感じでアドバイスをいただける。
システムでお客様のサイトを確認しましたところ、下記の方法を実行することでより多くの収益を獲得いただける可能性があります。
フィルタにより、サイトの収益となる広告が除外される可能性があります。
いや、収益じゃなくて道義的な問題を考えているのだし、僕のエントリーが「不労所得」とマッチングするとGoogleは判断しているのかね? どんなアルゴリズムだよ。
* 今回はOvertureの話でGoogleを引き合いに出して恐縮だが、Google AdSenseで、「アドセンスで○○万円稼ぐ」とかいう広告が平気で出ているわけだ。ちゃんと審査しているの? だいたい「○○万円稼ぐ」方法とか実体験を明らかにしたらその時点で規約違反じゃねぇのか?
本題に戻ると、先のエントリーで (* 太字強調は筆者)
mixiに通報しても消えない情報商材販売業者の謎があきらかに
「あきらかに」の根拠を問いたい。「あきらかに」というにはあまりにお粗末な内容じゃねぇか。これを「釣り」というのか? で、皆釣られていると。
と思っていた矢先、内部からこんな情報が飛び出した。
「内部」って何の内部なのか? 読者は国語のテストだと思って考えていただきたい。
Q.このエントリーの「内部からこんな情報が飛び出した。」における「内部」が何を指していると考えられるか? 以下の3つから選択せよ。
どれも指さないんじゃね? 少なくとも僕なら出題者にケチつけるよ。どれも違ってるぜって。少なくともどれも「根拠」がない。
「mixiに通報しても消えない情報商材販売業者の謎」と言うけれども「mixiに通報しても消えない情報商材販売業者」ってのが本当にあったのかはっきり書かれていないし、通報したという経緯も書かれていないように見える。
この問題の本質はWeb2.0的なネット広告におけるの審査の甘さ、そして「インターネットにおいてはその情報が正しいかどうかを自分自身が考えて判断しなければならない」ってのは「広告」においても同じであって、ネット広告配信者は「検索結果に責任も負わないし、広告の真偽にも責任を負わない」というところにあるのではないのか? そしてそれを誰も問題にしないのは何故か? mixiは怪しいけどOvertureとかGoogleはそんなことないよねってのが君たち (誰に言っているのかわかんねぇけど) の思考なのか?
そして、検証もせずに話題になりそうな「ネタ」を簡単に取り上げる著名ブロガーと著名ブログのエントリーを簡単に鵜呑みにするブックマーカー。そして皮肉にもそのブログとブックマークページ等に表示される「スパム広告」たち。
少なくとも2大検索エンジンのスパム解析・検出技術が「広告審査」に活用されない限り、あるいは「広告」という収益に依存しているからといってどんなスポンサーでも無条件に受入れているような事実があるのだとしたらこのモデルが破綻するのも時間の問題じゃないだろうか? そしてそうならないようにするためにはユーザーが正しい判断をして「そんな広告相手にしない」こと、あるいは「信頼性低くて使い物にならなくね?」という声をあげて行くこと。そして強力な対抗メディアを誰かが作って既存メディアに喧嘩を売って行くことが必要ではない?
だから、mixiに対して言うべきところがあるとしたら、そういったアカウントは規約違反だし削除すべきじゃね? ということと、少なくとも広告で収益を得ているのであれば、規約と矛盾する広告くらいはフィルタリングすべきじゃね? ということくらいである。それは「やっぱりグルだった?」という問題とは根本的に異なる。
ということで、繰り返し言おう。
本質を見よ、思考停止するな、頭使え、流されるな。
カテゴリー: 駄文・雑文
まずはじめに言っておく。
あーいう場[謎]で名刺交換する時の名刺なんやけど、ブログのキャプチャ入れておくといいんじゃないかなぁと思います。もしくは名刺渡すときにブログ名を言いあうのです。
- こんにちは、「Web2.0言うな!」
- あ、こんにちは、「ヒビノアワ」!
あのときこんなコメント入れやがったあいつがこいつか! とかしつこくトラックバック飛ばしやがって重いんだよゴルァとか色んな複雑な感情が微妙な空気を醸し出してくれること間違いなしですって嘘だよ :p
えーなんだかいつもまとまらないブログで恐縮ですが、面白かったので今度大阪でやりませんか Hack-a-thon。ベストプレゼンテーターには特別に串カツのソース二度づけを許可しますとかなんとか。
ちなみに昨日の成果は年度別アーカイブ (Ogawaさんのコード見てお勉強とついでにカッとなって年度の開始月設定できるようにしちゃったよ) とHyper Estraierを使った検索。MTの管理画面から検索のインデックスを更新したりエントリーの追加や削除と連動してインデックスを自動で更新するプラグイン。公開するの? って聞かれたけど...一応メシのタネなんで、、っていうか仕事しないでブログとかプラグインとかばっかり書いてるYo! ウチの社長! って言われないようにしたいのでご興味のある方はウチの会社の方へ問い合わせください。
カテゴリー: MovableType
今日はHack-a-thon。午前中のお題はできたので (っていうかやろうと思ってたのにOgawaさんが書いちゃったのでコード読みながらごにょごにょしてた) 、次は何をやるかなぁ。とりあえずページやエントリーの並べ替えかなぁ。検索かなぁ...
エントリーとかページとかカテゴリーとかブログとかの並べ替えをってのはCMSには必須かと思う訳ですが、とりあえず考え方だけ。
エントリーやページに単純に番号を振るってのでもいいんですが、エントリーやページが複数カテゴリーに属する場合とか、それぞれの中で順番制御できた方がいいなぁということで。
そいうことで、こんな感じのテーブルかなぁ。インターフェースがかなり面倒だな。ってかMT4の場合、バックエンドよりViewの実装の方が大変な気がする。半日じゃできなさそうなので、今日はフロント部の拡張方法について把握するとしよう。
| sortgroup_id | objectのID(一意) | int(11) |
|---|---|---|
| sortgroup_blog_id | ブログのID | int(11) |
| sortgroup_group_name | ソート順グループの名前 | varchar(255) |
| sortgroup_object_type | (blog|category|entry|page) | varchar(25) |
| sourtnum_id | objectのID(一意) | int(11) |
|---|---|---|
| sourtnum_blog_id | ブログのID | int(11) |
| sourtnum_number | ソート順 | int(11) |
| sourtnum_object_type | (blog|category|entry|page) | varchar(25) |
| sourtnum_object_id | オブジェクトのID | int(11) |
カテゴリー: MovableType
カテゴリー: MovableType, モブログ
残念ながらMovableTypeのオープンソース版が出るのは今年の終わり頃になるようだ。
ちょwwwまて! 聞いてねーし! (笑)
気にならないかと言えば嘘になるけど、憶測なのかソースの根拠な記事なのかわからん書き方せんといて欲しいわ。
ということで、MTOSウォッチャーの Junnama Noda です。「開発者向けカンファレンス」でMTOSはいつ出ますか? なんて質問はしない程度に空気読めるヲっさんです。で、恒例? のmovabletype.org/opensource/ ウォッチング。
* 訳には誤りが含まれているかもしれません。
Smitthi
August 17, 2007 2:08 PMHi Byrne,
Would I be able to modify MTOS into other languages such as Chinese or Thai?
and when MTOS will actually come out , next month?
Thanks
SByrne、やぁ。
私が、他の言語(例えば中国語またはタイ語)にMTOSを修正することができますか? MTOSは実際いつリリースなの? 来月かな?
Thanks
S
(中略)
Mike
So does '3Q' mean September 31, 2007? Are you on target? Or is this slipping to some time in 2008?
August 21, 2007 12:26 PM第三クオーターが意味するのは2007年9月31日ですか? (訳者注: 9/31ってありえないし!) 現状狙い通りですか? それとも2008年になりそうですか?
Byrne Reese
August 21, 2007 12:30 PMI really hate committing to dates until I am 100% certain, but I can confidently say that MTOS will be released in 2007. It may not be released by September 2007 however. As of right now, October 2007 seems like a more realistic release date.
100%確信が持てるまで、私は日付に縛られるのが本当に嫌いなんです。しかし私はMTOSが2007年にリリースされると自信をもって言うことができます。但し2007年9月までにリリースされないかもしれません。現状では2007年10月が現実的なリリース日と言えるかもしれません。
ところで「開発者向けカンファレンス」でほんまに「ブログ」っていう言葉聞かなかったな。MTはブログじゃないよ。ブログだと思ってると損するよ。
カテゴリー: MovableType
どんな話だったかというと、こんな話だった。
もしMT4に拡張できない部分があったとしたら、それはバグだ。
by Brad Choate
明日はHack-a-thon!
カテゴリー: MovableType
何をフックにして再構築するか迷ったんですが、結局インターフェイス作るのが面倒ってこともあって、インデックス・アーカイブにタグ<$MTRebuildBusinessYearArchives$>としておくとアーカイブ再構築の際に同時に再構築されるようにしました(直感的じゃねぇですが勘弁してください)。突っ込みとか改造とか歓迎。
plugins/にフォルダごとアップロードして「プラグイン」設定で年度の初めの月(デフォルトは4月)を指定。
「デザイン」→「テンプレート」→「アーカイブテンプレート」(ブログ記事リスト)を作成。名称は「busuiness_year」(名称は固定)。
*このテンプレートは通常は再構築されません。
年度別アーカイブを再構築するには、どこかインデックス・アーカイブに<$MTRebuildBusinessYearArchives$>を指定。このインデックスアーカイブが再構築されるタイミングで年度別アーカイブが生成されます。
カテゴリー: MovableTypeプラグイン
もしこれらの欠点が受け入れられれば、MT4はブログプラットフォームとして生き残っていくことができるだろう。しかし受け入れられなければ、少なくともしばらくの間は、プラットフォームのアプリとしてはワードプレスや別のプラットフォームに太刀打ちすることができないだろう。
なるほど。
どっちにしても、それはもはやブログではないような気が。初めてブログを作るなら、MTもWPもどっちもあり得ない選択肢だよ。はじめてブログを開設する顧客に勧めるのはWPでもMTでもないね。MT4が逆の方向(めちゃめちゃシンプルな方向性)を目指したら面白かったのになぁ、と個人的には思う。
でもね、そんなことはどうでもいいんだな。僕はMTを使う。MTの本質はブログなんかじゃなくて、Webでやりたいことを実現するための「Web application framework」なんだな。WordPressは残念ながらそうじゃない。
僕にとってのWebはビジネスで、彼ら(6A)にとってのWebもビジネスで、それでいいじゃない。結局はプロとして、何ができるかじゃね。
カテゴリー: MovableType
「MovableTypeな夏。」で書いたように、今週末に開発者向けカンファレンス(8月24日)とMovable Type 4 Hack-a-thon(8月25日)があって参加する予定なんだけど、色々忙しくてMT4をいぢくったりソース読む時間がないので、ちょっと助走というか頭の体操がてらに「年度別アーカイブ」が作れないかやってみた (&ProNetミーティングで質問したんだけど「ごにょごにょ...今度開発者向けMtgとかHack-a-thonとかありますので...」ってな回答だったので!)。
使い捨て気味のプログラムですがさらしておきますね。文字通り年度別アーカイブを作れるかどうかやってみよう! ってなことで書いたもの。IR系のウェブサイトなんかだと必須だもの。
「デザイン」→「テンプレート」→「アーカイブテンプレート」→「ブログ記事リスト」で「新しいアーカイブマッピングを作成」、種類「年別」を選択。

コードは以下。エラー処理も最構築(スタティックなファイルの書き出し)も何もないし4月〜3月決めうち! だけど許してね。うまくいったら来週あたりプラグインになってるかも...なってるかな? なってるといいね(誰?)
#!/usr/bin/perl -w
my $MTDIR;
use strict;
BEGIN {
if ( $0 =~ m!(.*[/¥¥])! ) {
$MTDIR = $1;
} else {
$MTDIR = './';
}
unshift @INC, $MTDIR . './lib';
unshift @INC, $MTDIR . './extlib';
}
use MT;
use MT::TemplateMap;
use MT::Template;
my $mt = MT->new(Config => $MTDIR.'./mt-config.cgi');
use CGI;
my $q = new CGI;
my $at = 'Yearly';
my $year = $q->param('year');
my $blog_id = $q->param('blog_id');
my $start = $year.'040100000';
my $end = $year+1;
$end .='0331235959';
my $tmap = MT::TemplateMap->load(
{ blog_id => $blog_id,
archive_type => $at,
is_preferred => 1
},);
my $blog = MT::Blog->load({ id => $blog_id });
my $template = MT::Template->load({id => $tmap->template_id});
my $page_tmpl = $template->text;
my $ctx = MT::Template::Context->new;
$ctx->stash('blog', $blog);
$ctx->stash('blog_id', $blog_id);
$ctx->{current_archive_type} = $at;
$ctx->{archive_type} = $at;
$ctx->{current_timestamp} = $start;
$ctx->{current_timestamp_end} = $end;
my $build = MT::Builder->new;
my $tokens = $build->compile($ctx, $page_tmpl);
my $html = $build->build($ctx, $tokens);
print "content-type: text/html; charset=utf-8¥n¥n";
print $html;
http://localhost/mt/f_year.cgi?blog_id=1&year=2006
ってな具合にアクセスすると...出来てるっぽいな。
うまくいったら来週あたりプラグインになってるかも...なってるかな? なってるといいね(しつこい!?)
カテゴリー: MovableType
つまりMT3からMT4へ移行する時に、データベースのアップグレードじゃなくてエクスポート/インポート機能を使って移行したかったので (だって、せっかくだから「まっさら」にしたいじゃん)。
MT3.xの場合、エクスポート/インポート機能を使ってブログを移行すると エントリーの (カテゴリーも) basename が引き継がれません。つまり「パーマリンク」が変わってしまう。
何のための「パーマリンク」やねん! ってことで basename を引き継いで移行する方法を書いておく(さっきローカルのMT4にこのブログをエクスポート/インポートした。だってテストとかプラグイン開発とかするのにエントリー空っぽじゃなんだかやりにくいし)。
手順は以下の通り。
このブログでは「使っていないフィールド」が無かったので、以下のようなスクリプトを書いた(MTフォルダに置いて実行)。
#!/usr/bin/perl -w
my $MTDIR;
use strict;
BEGIN {
if ( $0 =~ m!(.*[/¥¥])! ) {
$MTDIR = $1;
} else {
$MTDIR = './';
}
unshift @INC, $MTDIR . './lib';
unshift @INC, $MTDIR . './extlib';
}
use MT;
my $mt = MT->new(Config => $MTDIR.'./mt-config.cgi');
my $iter = MT::Entry->load_iter({blog_id=>1});
while (my $entry = $iter->()) {
my $basename = '<!--basename['.$entry->basename.']-->';
my $text = $entry->text.$basename;
$entry->text($text);
$entry->save or die $entry->errstr;
print $basename;
print "¥n";
}
エクスポート/インポート後、以下のスクリプトを走らせる(whileの中身だけ書くね)。
while (my $entry = $iter->()) {
my $text = $entry->text;
my $pick_basename = $1 if {$text=~/<!¥-¥-basename¥[(.*?)¥]¥-¥->/};
$text =~ s/<!¥-¥-basename¥[.*?¥]¥-¥->//;
$entry->text($text);
$entry->basename($pick_basename);
$entry->save or die $entry->errstr;
print $pick_basename;
print "¥n";
}
ついでに、元のブログの方も entry_text フィールドに追加したコメントを削除。
while (my $entry = $iter->()) {
my $text = $entry->text;
$text =~ s/<!¥-¥-basename¥[.*?¥]¥-¥->//;
$entry->text($text);
$entry->save or die $entry->errstr;
}
アーカイブマッピングの関係で、カテゴリーの basename を引き継ぐ必要がある場合は、上記の方法と同時に以下の処理を行えばOK。
あ、一応やる場合はデータベースのバックアップとっておくってのと、自己責任だからね!
カテゴリー: MovableType
この週末に色々? あるので、MT4をローカル環境にインストールした。以前初期不良? で修理に出していたMacBook黒が帰ってきてからずいぶん経っているので、ほぼまっさらの状態からインストールしたのでメモ。
インストールはフォルダごとコピーして起動するだけ。
ローカルのテストでもドメインネーム風? でやりたい。
$sudo vi /etc/hosts
127.0.0.1 mt4local.alfasado.net
Mac標準のWeb共有とぶつかるのでWeb共有はオフにする。
sudo vi /Applications/MAMP/conf/apache/httpd.conf
# 291,351行目
Listen 80
ServerName localhost:80
MAMPを再起動。
とりあえずは、http://mt4local.alfasado.net/mt とする。
ダウンロードしたMT4を /Applications/MAMP/htdocs/mt に設置。このままではmt/以下CGIが有効にならないので、.htaccessを置く。
sudo vi /Applications/MAMP/htdocs/mt/.htaccess
Options -Indexes
Options +ExecCGI
AddType application/x-httpd-cgi .cgi
これで、http://mt4local.alfasado.net/mt/mt-check.cgiで環境設定確認画面が表示されるようになる。
モジュール関係は基本CPANから。ImageMagickはFinkを利用してインストール。
* DBD::mysql のところだけメモしておく。
cpan> install DBD::mysql
エラーが出てそのままではインストールできないので、
cd ~/.cpan/build/DBD-mysql-4.005
sudo perl Makefile.PL --cflags=-I/Applications/MAMP/Library/include/mysql --mysql_config=/Applications/MAMP/Library/bin/mysql_config
sudo perl -pi -e's/MACOSX/env MACOSX/' Makefile
sudo make
sudo make install
MAMPにはPHPMyAdminが含まれているので、とりあえずDBを適当な名前を付けて作成するだけ。
あとは http://mt4local.alfasado.net/mt/mt.cgi を叩いてウィザードから設定。MySQLのポートは8889、ソケットは /Applications/MAMP/tmp/mysql/mysql.sock
まぁ...簡単とは言いがたいですが設定完了。これで開発関係を再開できます!
カテゴリー: MovableType
たまには普通に書評なぞ。といっても古い本だけど(たまたま今日読み返した)。
この本が書かれたのは1996年。既に10年以上前のものである。著者のクリフォード・ストールは天文学者なのだが、ローレンス・バークレー研究所にいた時にハッカー(当時の表現)の追跡のおかげでネットワークセキュリティの専門家と言われるようになる。この時の事件については彼の最初の著書「カッコウはコンピューターに卵を産む(上) (下)」に書かれており、この本は世界的なベストセラーとなった。
エントリーの標題の「インターネットはからっぽの洞窟 (原題 : Silicon Snake Oil -- Second thoughts on the Information Highway)」はストールの2冊目の著書である。
この本(日本語訳 : 倉骨 彰氏)のカバーにはこうある。
インターネットで仕事が変わり、社会が変わり、世界が変わる−でも、本当にそうなんだろうか?
題名からも分かる通り、当時の既に過剰とも言えるインターネットブームに対して負の側面を当時のネットワークの「ヘビーユーザー」であった著者が指摘したものだ。
もちろん10年以上も前のことであるから彼の主張や当時懸念されていたことの多くは現状解消されている。インターネットでのショッピング(決済)や優秀な検索エンジンの登場、書籍を探すのも随分簡単になった。
ところが、ネットワークについて無知な学者が書いたインターネット悲観論ではないがゆえに現在のネット社会について示唆的な記述が多く見られる。
実は何ら解決していないのが現在のインターネット社会じゃないか、という見方もできる(そういう表現が多くある)。
僕はたまたま今日埃っぽい本棚からこれを取り出してそれこそ10年ぶりにぱらぱらと読んでみた。以下少しだけ引用する。
モデムにご主人をとられてしまったジェニーが教えてくれた。(中略)「でも、デービットに比べたらまだましかもね。彼、私の友達なんだけど、毎晩3時間もネットワークするようになっちゃって。奥さんもいい人で夫婦仲も良かったんだけど、彼をネットワークにとられたと感じて離婚しちゃったのよ。」
誰でも意見を自由に発表できるというのは本当だが、ネットワークでは誰もがいっぺんに好き勝手なことを言いはじめるから、真面目な議論などかすんでしまう。
ネットワークユーザーの中には極端な意見を述べる人が多く(中略) まともな議論になかなか発展しなかったりする。
(中略)
まともに始まった対話が、フレイムウォー (侮辱合戦、誹謗中傷合戦) にまで発展してしまう割合は驚くほど高いのだ。
コンピューター自体の演算速度は速くなっているのに、プログラムの実行速度は遅くなっているのも解せない。
その他にもジャンクメールの話とか、メールが増えすぎたがフィルター使うと大切なメールまでフィルタリングされたりしないか気が気じゃない話とか、ネットワークや電子メールをコピー&ペーストした論文に質の高いものがあるのだろうか、とか...
結局のところ、インターネットとはいっても根本のところでは何も進歩してないんじゃないかと思うような指摘が多くあって、楽しめるというのもおかしな話だが、結構考えさせられる。
ことインターネットについて言えば10年前に書かれた未来予測を読む価値はあまりないように僕自身感じるけれど、この本については (特に) 若いIT/Web業界の人は読んでおいて損はあるまい。送料はともかくユーズド (amazon) なら安いものだし。
カテゴリー: 書評など
ただし、最近はアフィリエイト狙いなのか、単にキーワードばかり羅列しただけの「スパムブログ」が多く引っかかって閉口しています。 Technorati による検索結果の方がスパム数は少ないけど、ヒットするエントリが少ないから単純に Technorati の方が優秀という訳にもいかないし。
テクノラティは結構マメにスパムを排除していると思う(感覚的なものですけどね)。どこまで機械化されているのかわからんですが。
テクノラティのブログランクを見ているとそんな感じがする。順位は相対的なものなので上下するのはあたりまえだろうが、リンクされているブログの数やリンクの数がわりとマメに増「減」しているのだ。

いずれにしてもスパムブログ対策ってのは昨今の重要テーマであることは間違いない。検索エンジンのノイズ、トラックバックノイズ、コメントノイズ、ブックマークノイズ、そしてもちろんスパムメール、ウェブ/インターネットは雑音だらけである。
そして、サービス提供者はCaptchaを導入し、視覚障害者はサービスを利用できなく(あるいは極端にしづらく) なっていく。
多分そんなものは無いのだろう。ただ、スパムを解析するアルゴリズムの研究とそれを突破するアルゴリズムの研究とかは置いておいて別の方法も考えてみたらどうか。
例えばGoogleにとって「スパムブログを検索結果から排除する」行為と「スパムブログに貼られたAdSenseのアカウントを剥奪する」行為のどちらが有効な手段だろうか?
*収益とユーザーの批判を気にしたら、まぁ後者の方法はとれないんでしょうけどね。
また、サイトに表示される広告の質も疑問である。
で、あんまり露骨なのは嫌なのでフィルタリングする。するとGoogleからご丁寧にメッセージが来る。
システムでお客様のサイトを確認しましたところ、下記の方法を実行することでより多くの収益を獲得いただける可能性があります。
フィルタにより、サイトの収益となる広告が除外される可能性があります。
Googleは間違いなく各種スパムを排除する優秀なアルゴリズムをもっている企業であろう。ところがGoogle自身の収益源である「広告」においてその真偽性や質によるフィルタリングはかけられていないようだ。
別にスパム云々ではないケースだが、以前広告 (内容は公共的なもの) をGoogle、Overtureに出稿した時、GoogleはノーチェックでパスしたがOvertureのチェックは結構厳しかった。
アフェリエイトにしてもAdWordsにしても、審査を厳しくして違反行為を取り締まることにこそ重点を置くべきでないのだろうか? そっちの方が余程効果がありそうなものだ。
もちろん、Googleが「ミク○ィで毎月○○円稼ぐ」広告をユーザーの利益につながる広告であると本気で思っているのであれば話は別だが。
それとも本当に「自作自演なのだろうか?」
...などというエントリーに広告を貼付けると一体どんな広告が表示されるのだろうかね?
カテゴリー: 駄文・雑文
違う、我々が欲しいのは電源が長持ちして熱くならない携帯電話だ。
「ワンセグ」なんて要らなくね? 重さとか大きさが倍だっていいぜ! これ本音。他にも、
違う、我々が欲しいのは「題名」と「内容」と「投稿ボタン」だけのシンプルなブログソフトだ。
とか、「シンプルさ」を追求するところからヒット商品やサービスが生まれるかもしれない。
カテゴリー: 駄文・雑文
Movable Typeを利用したサイト制作やウェブアプリ開発なんかをこの1年くらいでかなりやってきたのですが、これまでは社内でサイト制作のための色々な独自のプラグインとかCMSテンプレートとかを作って使っていました。MT4がリリースされたこと、当社内に色々なノウハウが蓄積されて来たこと、当面受注済みの案件でMTを使う方針になっているものが少なからずあることから、『MT4をターゲットにした「高機能CMS」を作ろう』プロジェクトが社内で進行中です。
完成したあかつきには、当社内で制作する各案件で使う他、公開しちゃっていいじゃない! 的なものは一部公開するかもしれませんし、ニーズがあればパッケージで販売するかもしれません。MTOSが出た際には、MTOSベースの何かとしてリリースするかもしれません。
で、どうせ作るのだったらいっそ「そのプロセスを公開して、こんなものが欲しいとかそんな意見があれば吸い上げてみたら面白いんじゃね? 僕たちのような制作現場の制作者のニーズを集めてこそ良いものが作れるんやし」という考えで、今社内MLでやりとりしている内容をオープンにしちゃいます。
このやり取りの中で出てくる「PowerCMS」というのが当社の社内で使っていたMT3.3用の(非公開の)プラグインセットです。フィールドの拡張やエントリーの並び順制御、エントリーの複製とかエントリーのひな形を作れたり承認フローが組み込まれています。
以下のエントリーでキャプチャとか一部見られます。
ちなみに、携帯(モブログ)完全対応とか高速全文検索なんかは基本既に出来ているので話題に上がっていません。
>各位
野田です。お疲れさまです。
MTベースで作成するCMS系案件が今後増えて来ます。というか、意図的にそういう営業というか情報発信を行っているせいですけど。
すべてをゴリゴリ開発するのはいかにも効率が悪いよな。
そこで、以前から話していたように、「マークアップエンジニア=MVCのV担当」相当のスキルと知識があればCMSが顧客向けにカスタマイズできるプラグインセット(以前作成していたPowerCMSプラグインのMT4向けさらに強化されたもの)を作りたいと思います。
そこで、
についてまずはアイデアフラッシュをメールベースでやりとりしたいと思います。
PowerCMSにあった機能としては、
今後欲しいもの
できればファイルアップロードや並べ替えはAjaxだけじゃなくてFlexとかを使ってFlashによってすごく使いやすいものにしたらどうかなぁ。
まずは各人が欲しいものをMLベースでやりとりしましょう。
地味な機能ですが
<MTIfPageDirectory directory="foo"></MTIfPageDirectory>
<MTIfPageParentDirectory directory="bar"></MTIfPageDirectory>
のようなタグが欲しいです。
エントリーではなくページを作成するときにカテゴリーが存在しないため、
テンプレートの分岐はタグを使用することになります。
タグはエントリーとも紐付いてしまうので、
できれば特定のディレクトリで分岐できるテンプレートタグがあると便利かと思
います。
また、「親ディレクトリが○○の場合」の分岐もあると便利かと思います。
(Alfasadoのサイトはタグで分岐しています。)
ひとまず一つ希望です。
・簡単なファイルアップロード
に含まれているかもしれませんが、
画像などのファイルアップロードを複数同時にできるとすごく便利だと思います。
それも、一つ一つ「参照」で選ぶのではなくて
がばっと選択してドラッグドロップできるのがいいと思います。
(FTPと同じくらいの使い勝手)
例えば**様の案件などでは「イントラでの知識の蓄積と共有」がテーマとして大きな比重を占めていることもあり、掲示板という路線で行くわけですが、これに関連し、ユーザ個々人が参考になった掲示板の発言をワンクリックでどこかにとっておく機能があれば、少なくともこのテーマ上では役に立つような気がします。
googleの「メモをとる」に相当する機能です。
google上ではクリックミス以外でこの機能に関わったことはありませんが、いちいち掲示板を見に行って、過去に見た発言を探したり、エディタにコピペしてローカルに保存するよりは手間が省けると思います。
もちろん、個々人が判別され、とったメモを閲覧するマイページが存在することが前提となりますが…
PowerCMSでも、「エントリーテンプレート」ってありましたけど、エントリーのひな形を視覚的にサムネイル一覧から選択して新規投稿とかできると良いですよね。
他に、「付箋」や「並び替え順」**さん指摘の「ファイルアップロード」の件で欲しいのは「Drag&Drop」ですよね。
特にファイルのアップロードについては、現実的にブラウザのセキュリティ制限等から難しいところがあります。
そこで、
・アップロードはZipアーカイブ等で一時ディレクトリに一括アップする
・ブラウザ上でエクスプローラーっぽいインターフェイスでDrag&Dropで登録していく
というような発想でできないでしょうか。
ところで、やっぱ、アクセス解析は要るでしょうねぇ...
加えて、検索ログビューアがついていれば
ユーザの挙動の把握については完璧ですね。
**の案件で使っているHyperEstraierのように、**さんの**にログを吐き出させて、検索結果のアンカーにパラメータをつけてクリックログをとるような感じで。
ないとすごく不便とかそういったものではないですが、DreamweaverやFlashのActionscript欄のように、入力しているタグの属性を補完して
くれる機能が欲しいです。
エントリー内容のエディタで<a まで打ったら、<a [href=]のようにツールチップで出てきて、タブやエンターで選択してで補完できるものです。
タグ全部を打つのが、間違ったり面倒くさかったりするので、個人的にあったら便利かなあと思います。
とまぁ、こんな感じでまずは好きなことを言いあっています。一応全員が何らかの役割を担うということで担当割り振りは済んでいます。
さて、もし何か「こんなものがあれば便利なのに!」ってなことがあれば、コメントなりトラックバックなりブクマなりで列挙してもらえればいいかなぁ。もちろんやるかどうかの判断はあくまでウチの都合なんですけど。
カテゴリー: MovableType