2007/05/23

[技術系]   TinyMCE for Movable TypeのShift_JIS利用時の不具合パッチ

at 02:46JST
TinyMCE for Movable Type Ver1.30 Ja公開しました
http://www.dakiny.com/tinymce/archives/2007/05/tinymce_plugin_for_movable_typ_5.html

をMT1.3[45]でmt-config.cgiを
PublishCharset Shift_JIS

として使用している環境にインストールすると、

20070523mage1.png


てな感じでおかしくなる。Shift_JISを「発明した」企業出身のぼくとしてはこれは耐えきれないので、汚いパッチを書いた。

*** plugins/TinyMCEforMT/TinyMCEforMT.pl.org	Wed May  2 18:30:20 2007 
--- plugins/TinyMCEforMT/TinyMCEforMT.pl Wed May 23 02:38:28 2007
***************
*** 193,199 ****
theme_advanced_resizing_use_cookie : true,
extended_valid_elements : "hr[class|width|size|noshade]",
file_browser_callback : "fileBrowserCallBack",
! language : <TMPL_IF NAME=LANGUAGE_ID>'<TMPL_VAR NAME=LANGUAGE_ID>_<TMPL_VAR NAME=LANGUAGE_ENCODING>'<TMPL_ELSE>'en'</TMPL_IF>.toLowerCase (),
convert_urls : false,
convert_fonts_to_spans : true,
convert_newlines_to_brs : false,
--- 193,199 ----
theme_advanced_resizing_use_cookie : true,
extended_valid_elements : "hr[class|width|size|noshade]",
file_browser_callback : "fileBrowserCallBack",
! language : <TMPL_IF NAME=LANGUAGE_ID>( '<TMPL_VAR NAME=LANGUAGE_ID>_' + '<TMPL_VAR NAME=LANGUAGE_ENCODING>'.replace(/_/,'-') ).toLowerCase ()<TMPL_ELSE>'en'</TMPL_IF>,
convert_urls : false,
convert_fonts_to_spans : true,
convert_newlines_to_brs : false,


1行直してるだけなんだけど。

[技術系]   現実を見ない技術原理主義者への呪詛

at 00:44JST
TinyMCEとかFCKeditorをMovableTypeに埋め込んでWYSIWYG編集できるようにしようとして、Enterでパラグラフが挿入されてしまう件。

まあ、そういう仕様になってる理由は聞かなくても重々わかってる。この業界、もうどこらへんを歩くとどのへんに頭の堅いバカがいるかもうすっかりワンパターンになってて、うんざり。

ただ、ちょっと調べたらTinyMCEにはこれを無効にしてbrによる強制改行に置き換えるオプションがあることがわかった。ほっ。多少は頭の柔らかいヤツがいるのか。

TinyMCE:Configuration/force br newlines - Moxiecode Documentation Wiki
http://wiki.moxiecode.com/index.php/TinyMCE:Configuration/force_br_newlines
This option is set to false by default since paragraphs is a much better concept. You can style P elements to be one row by adding p { margin: 0; padding: 0; } to your CSS


だからエンドユーザーにそれをやらせたくないからWYSIWYGエディタを導入しようとしてるんだろうが!!!! それをやる人間はこんなもん使わないんだよ!!!

もう、オレ、何十年こういう連中とケンカしてんだろ…。いいかげん疲れる。

2007/05/21

[技術系]   MovableTypeでミニ企業サイトをつくる試行錯誤

at 22:40JST
他人には
「やると便利だよ」
と勧めたり、
「やっている」
という事例もちょこちょこ見るのだけれど、実際にやろうとするとけっこうめんどくさいな。

というのは、blogツールの「MovableType」をCMSとして転用したサイトの構築のことだ。ここんところ、それでちょこちょこといろいろ見て回っては「うーん」とうなっている。たいしたことやってるわけじゃないのだが、とりあえず自分用にめも。

中小企業の公式サイト=「ミニ企業サイト」って、
a・あまりページビューが多くない
b・更新頻度は比較的低い
c・でも新着情報などは必要なときにサッと更新したい
d・予算はあまりかけたくない
e・人も張り付けられない
f・デザインリニューアルなどで外注先がころころ変わりやすい
という特性がある。

そうすると、「1からHTMLで組む」というのはcの観点でペケだし、専用のCMSや更新ツールの導入はb, dの点からオーバースペックだ。fの点から見ると、あまり特殊な環境でサイト構築することも勧められない。できる限りデファクトスタンダードにのっとったほうがいい。

そうすると、
「猫も杓子も使ってるMovableTypeをCMSとして転用しよう」
という話になるわけだ。

しかし、これはまたCMSとしてはあまりにも非力なうえ、シェアが高いわりにはローエンドユーザー向けにできていないという弱点があって、実際にやろうとすると細かいところでいろいろ解決しなきゃいけないことが多い。

とりあえず、実際に組み上げてみたサイトの外観はこんな感じになる。デザインはなんにも手を加えていない。要素だけ入ってる状態のトップページ。
20070521mtmage1.png


トップページ
├お知らせ
├企業概要
├実績
├ご連絡・アクセス
├リンク集
└ブログ

という企業にありがちな構成。「お知らせ」が新着情報にあたり、トップページにその最新の何件かがリストアップされるしくみにする。これ自体はMTの
「テンプレート」→「インデックス」→「メインページ」
のテンプレートで、
<MTEntries category="お知らせ" lastn="5"> 
<dt
class="entry-header"
>
<span
class="entry-date"
>
<$MTEntryDate format="%Y/%m/%d %X"$>
</span
class="entry-date"
>
<span
class="entry-title"
>
<a
href="<$MTEntryPermalink$>"
><$MTEntryTitle encode_html="1"$></a>
:
とすればいいだけだ。

しかしこの時点からすでに障壁が立ちふさがっていて、
・MT 3.3ではcategoryに日本語文字列は推奨されない
 (実際に使えようがどうだろうが、技術的に問題がありそうな
  ことは容易に想像がつく。保障されない限り使用しないのが無難だろう)
という問題がある。

しかたないので「お知らせ」は、
・カテゴリー名:news
・説明:お知らせ
と設定して運用することにする。テンプレート中でカテゴリー名を呼び出すときは
<$MTCategoryDescription encode_html="1"$>
を使用する。

しかししかしここでさらに問題があって、MTはカテゴリーの優先順位を指定できない。カテゴリ一覧などの表示をコントロールできないのだ。えー、まじかよ。今どきちょっとしたレンタルblogシステムでもできるのに…とブーたれててもしょうがないので、
・カテゴリー名:000news
のように先頭に数字をつけて逃げるというありがちな方法を取る。…もうこの時点で、クライアントに引き渡しても「なんだかわからない」ということになりそうな印象である。まあいいや。
 #ここらへんはちょっと改造してGUIで操作できるようにしているところが
 #あるようなので、参考にしつつ自前のパッチをあとで書いてみよう

ほかにテンプレートがらみのくふうとしては、「カテゴリー・アーカイブ」ページでの記事表示順が、
・「お知らせ」では新着順
・「お知らせ」以外では旧着順
のほうが直感的なので、
「テンプレート」→「インデックス」→「アーカイブ」
の「カテゴリー・アーカイブ」テンプレートを
<MTIfCategory name="000news"> 
<MTEntries sort_by="created_on" sort_order="descend">
:
</MTEntries>
<MTElse>
<MTEntries sort_by="created_on" sort_order="ascend">
:
</MTEntries>
</MTIfCategory>
というふうにすることか。残りは各自の美意識に従って適宜直せばよい。

次に重要なポイント。引き渡したあとに
「自分でも更新できる!」
という気持ちにするくふう。表示画面の各エントリタイトルのわきに、
「編集画面へのリンクをつけておく」
ということ。まあ、そこここでよく「Hack」(笑。とあえてつけておく)として取り上げられているので今さらだが、たとえばタイトル脇に
20070521mtmage2.png

のように「*」マークをつけておいて、クリックすると
20070521mtmage3.png

と、直接MTの編集画面に入って直せるようにしておく。各ページで共通するフッタやトップページのprefaceも、
20070521mtmage4.png

とリンクをつけておくとよい(これらはすべてモジュールテンプレートで呼び出すことにする)。具体的には、
<$MTCGIPath$>mt.cgi?__mode=view&_type=entry&id=<$MTEntryID$>&blog_id=<$MTBlogID$>

<$MTCGIPath$>mt.cgi?__mode=view&_type=template&id=テンプレートID&blog_id=<$MTBlogID$>
へのリンクを埋め込んでおくことになる。

もちろん、本番環境で誰にでもこのリンクが見えるようではカッコ悪いので、
・すべてのリンクはclass="editCaller"などとしておく
・editCallerはdisplay: none;
・JavaScriptでonLoad時にMTへのログイン状態を取得し、
 ログイン中ならdisplay:inline;に
という手間が必要だろう(まだこのスクリプトは書いてないけど別に難しくはないわな)。


次に、エントリのフィルタやエントリ編集画面へのくふう。この例題サイトでも「リンク集」ページがある。サイトの羅列になるわけだが、MT標準のテキストフィルタでは投稿文中にあるURLが自動的にホットリンクにならない。これで快適に更新し続けられるマゾの顔が見たい。というわけで、
20070521mtmage5.png

てな感じで適当に書いても、リンク集の体裁をなすようにでっち上げた私製テキストフィルターを導入する。

このあいだの

MTで改行の反映とURL自動リンクだけする
テキストフィルタープラグイン「hirosikitextfilter」 : ひろ式めもちょう
http://memo.hirosiki.jp/article/41793651.html

これね。

とはいえ、これだけでもあまり環境は改善されない。
・文字の大小は指定できない
・文字の右詰、センタリングもできない
・画像の埋め込みができない
とないないづくしだ(パンピーに「Wiki」なんて寝言をほざかないように)。

そこで、JavaScriptベースのWYSIWYGエディタコンポーネントを導入する。

FCKeditor
http://www.fckeditor.net/

を埋め込むとWordライクに記事を書けるようになる。ここまでお膳立てしてあげたら誰でも
「ふうむ…更新してやらないこともない」
という気分になるだろう。

ただFCKeditorなどのブラウザ用WYSIWYGエディタには個人的に気にくわないところがあって、

・エンターを打つと必ず勝手にパラグラフ(p)を開く
 →ふつうの人は単に強制改行したいんだよ!
  行間開けたら当惑するだろうが!(スタイルで行間殺せば、という問題ではない)

ってとこ。これをどうにかするには自分でイチからWYSIWYGエディタを書くしかないが、さすがにその体力はない。しかたないので、

・デフォルトでは標準のplainテキスト入力環境
・トグルスイッチでFCKeditorをコールする

というパッチを書くことにした。…ら、なんかあんまり関係ないところでハマったのでまだできてないけど。

あとはコンタクトページ用に
・メールフォームを埋め込む
という課題がある。これは、多くのレンタルサーバ業者は専用のフォームメーラを用意しているので、こちらを使うことをいちど検討するといいかもしれない。ただ、個人的には「MTさえ動けばどこでも使える」環境をいちどくみ上げたいので、自家製のフォームメーラプラグインを作ろうと考えている。

…ということで。

こんくらいの準備をすると、ようやく
「MTをミニ企業サイト用CMSとして使う」
ことができるようになる、と思う。あとは自分でスタイルシートを叩いていろんなデザインにするなり、あるいは本格的に(HTMLコーディングばかり能書き垂れるニセモノではなく)本職のデザイナーさんにデザインしてもらうなりお好きに。

なんかMT使っても全然ラクじゃないぞ!:)

[技術系]   これでDISられてると思うヤツはPHPユーザー失格

at 16:34JST
404 Blog Not Found:そろそろPHPに関して一言いっとくか
http://blog.livedoor.jp/dankogai/archives/50835571.html

なんかコメント欄が荒れてるんだが…。どうして荒れてるのか皆目見当がつかない。

PHPをバージョン2くらいから使ってたら、
「そうそう。そのとおり。
 だからPHPっておもしろいんだよねー」
っていうのがまっとうな反応かと。

そもそもPHP(PHP/FI)の起源は
「Personal Homepage Processor」
で(「“ホームページ”はWebページのことじゃないよプギャー」な人には認めがたい事実だろうが)、
「個人のホームページで簡単にフォームを使っちゃおう」
程度のヘルパーアプリケーションなんだから(おまけにperlで書かれていた)。

Zendの登場や言語仕様の見直しで大規模開発にも耐えうるようになってきたけれど、やっぱりPHPの恩恵にいちばんあずかれるのは
「既存のホームページにちょいちょいと命令を追加したら、
 いろいろできるじゃんー」
という局面だ。それが「Vが得意」(しかできない、はちょっと言い過ぎだけど正直PHPにMVCモデルを真剣に適用したサイトは解析しづらくてしかたない)というゆえんじゃないかね。

だからこそ、MTの出力ファイルを全部.phpにして悦に入ってる人がいるわけで^^; あれは個人的には納得いかないけど、言われてみれば確かに便利だよなあ。

まあ、ひとつだけ言っておくとするならば、
「おまえらPHPもいいけどMason使おうよ」
ってこった。

2007/05/17

[技術系]   IT系ニュース所感

at 02:20JST
WinHECの関係か、IT/PC系のニュースで気になったことが多め。めも。

Windows Mobile用SideShowソフトウェア
http://pc.watch.impress.co.jp/docs/2007/0516/pda59.htm

SideShowデバイス、実はぼくは期待してたのだけれど、
「Windows Mobile端末をSideShowデバイスにする」
このアプローチを見て、なんか「やっぱダメなんじゃないか…」という気がしてきた。

というのも、SideShowデバイスって、いま一部でニーズが育ちかけている「デジカメ写真をスライドショー表示する写真立て」みたいに
・単純
・安価
なデバイスとして普及してこそ成功すると思うから。しかし、WindowsMobile端末をSideShowデバイス化するというのは
・複雑
・高価
と、まったくこれに逆行する。いっぽうで、
「いや、こうした手法で
 WindowsMobile端末をVistaと密に連携させることができるのは
 よいこと」
と評する向きがあるかもしれないが、それはちょっとおかしい。それって、WindowsMobile端末のActiveSync機能とかの能力が不十分だっていうことの表れじゃないのか。つまり、二つの視点から「なんか間違ってる」という印象を受ける。

白黒でいいからすっげーチープな液晶に、ボタンが4つ。筐体はボロいプラスチックでできたもので、値段は3,000〜5,000円くらい。それで簡単なアラートを出したりたまごっちをプレイできる。そんなもんでいいんだよ、SideShowは。無線かつ電池駆動で2週間もてばさらにいい。あんまり詰め込みすぎるとデバイス側のソフトウェアスタックが巨大化してどうしようもなくなる。というかもうなってるのかもしれない。MSらしくない。手始めは欠点だらけで安いものでいいじゃないか。

と思うと、

第10回 組込みシステム開発技術展が開催
http://pc.watch.impress.co.jp/docs/2007/0516/esec.htm

で、CE 6.0の話題が出ていて。デジタルTVへの搭載事例が紹介されているが、この分野でCEはどれくらいのシェアを占められるのだろう。組み込み機器全般で見ると“内なる敵”であるXP embededがけっこう強いんじゃないかと。ネットワークプロトコルも、ビデオ再生も、ムリして開発がめんどくさそうなCE使う必要なくない?

なんかねえ。ムリに組み込みで戦わなくても家庭用ディスクレスシンクライアントとかSTBで、チョー安価な製品をドライブしたほうがいいんじゃないかね。潜在需要は絶対あるんだよ。ワープロとネットしかやらない人向けに、
「絶対壊れないWindowsマシン」
というのを出すにはCEベースがベストソリューションだと思うのだけれど。なぜどこのメーカーも手を出さないんだろう。
・RAM 128MB+800×480ドットのカーナビ転用液晶
・無線LAN
・USBマウス外付け
・1GBフラッシュメモリ
だったら4万円くらいで作れるんじゃないか。で、リードオンリーSDメモリーカードで外部ソフトウェア供給。

燃え尽き症候群のMicrosoft。Vista改善の方向は示さず
http://pc.watch.impress.co.jp/docs/2007/0517/mobile376.htm

Vistaがそんなに悪いとも思わないのだが、MSが過去にないピンチに立たされているという気はする。そのピンチの種類は「ブラウザ戦争」のときとはまったく違う。それは本田氏が指摘しているように、MSの製品ラインが漫然と拡大しすぎていることじゃないか。↑でも書いたが、組み込み向けでもいくつも選択肢があって競合してたり、OrigamiなのかWMなのかよくわかんなかったり、さらに顧客側からするとSKUが無意味にいくつもあってわかりづらかったり、サーバ市場もスモールビジネスからバンキングまでと青天井に参入しすぎていたり…。どこかで集中戦略に戻さないとやばい気がする。あるいはここらへんで外部圧力によって企業分割されるとか。たぶん、今のMSは企業分割されたほうがいい結果を生むと思う。

富士通、重量約580gの超小型PC「LIFEBOOK U」
http://pc.watch.impress.co.jp/docs/2007/0516/fujitsu.htm

これで15万。市場を刺激しそうなのは歓迎するが、9万の工人舎のほうが安いんだよね。電池の保ちも悪いし。

で、そもそもこれもCEベースでゼロスピンドルだったらもっと安く済むんじゃないかという気持ちがあるわけだが。ああ、なんだ。ぜんぶCEがらみの話じゃないか。

[技術系]   QBASICを大いに盛り上げる会

at 00:45JST
QuickBASICのことを思い出して懐かしくなった。

ぼくは長くMSX派だったので(塾講師の教材もMSXで自作したワープロで作ってた時期がある)実際には使ってなかったのだけれど、QuickBASICは魅力的だった。今思い起こしてもステキなIDE環境だと思う。

ということでQuickBASICに触ってみることにした。

といってもそのサブセット版であるQBASICのほうである。あまり知られていないですが、奥さん、QBASICは無料でWindowsに添付されてるんですよ! Windows 95/98だけどね。なぜXPやVistaに添付しない!>MS

ライセンス上グレーだが(真っ黒かも)、Windows 95のCDをもっている人なら今でもQBASICを楽しむことができる。CDの
「other\oldmsdos\」
フォルダに入っている以下のファイル群を、パスの通っているところにコピーすればいい。
20070517mage3.png

ヘルプまで含めて640KBディスクに入ってしまう小ささ! 昨今巨大化するいっぽうのPerlバイナリなどに見せてやりたい。

そんでもってXPのコマンドプロンプトを起動。えーと、QBASICは日本語・空白の入ったファイルパスに弱いので、c:\などに降りて実行してください。そんでもって日本語モードでは動作しない(ことになっている)ので、usコマンドを実行。
20070517mage4.png

その後、qbasicエンターとすると起動します。

20070517mage1.png

かっちょええ! 流れよわが涙。

とりあえずESCを押してダイアログを閉じる。あとは、
・ALTを押すとメニューにフォーカスが移る
・TABでフォーカス移動
というWindowsと同じ操作体系でいじることが可能。ここらへんがMSのすごいところで、バイナリだけでなくUIでも20年近く互換性を維持しているんだよね。

ところでこれで何ができるんだって? なんでも!
QBASICはグラフィック描画にも対応しているので、ゲームもできるよ。

YAMAGAME HOME PAGE
http://www.yamagame.com/MyWeb/QBASIC/QBasGame.html

から、今回は「シューティングシックスティーン」をダウンロードして実行してみよう。

展開したディレクトリでqbasicを起動。ALT-Fでファイル読み込みメニューを呼び出して、SHOT16.BASを指定する。
20070517mage2.png

読み込んだらメニューから「Run」。

全画面でシューティングゲームがはじまる。うおお!(※キャプチャが面倒だったのでサイトから拝借しました_o_)
20070517mage5.png


すばらしいQBASICの世界…。ぼくも何か作ろうかな。

2007/05/16

[技術系]   どうでもいいようなよくないようなツッコミ

at 23:17JST
妄想科學日報 - 「本当は使いにくいMacOSX」を使い易くする
http://d.hatena.ne.jp/DocSeri/20070515/1179190998
善し悪しというよりも初期段階からマウス操作を前提としたMacとキーボードによるコマンド入力インターフェイスから出発しているWindowsの違いと考えるのが妥当


なるほど。
ということはMacOSは、マウスを使えない障害者を排除する反ユニバーサルデザインのOSということでファイナルアンサー? と意地悪なことを言ってみる。

WindowsのUIでアクセラレーションキーが推奨されているのは、別に「コマンド入力インターフェイスが出発点だから」じゃないのよ。マウスが使えない人でも、キーボードがイヤという人でも、
「両方使えるように」
デザインされてるだけ。まあ、いにしえのQuickBasicベースのシステムライクになっているから影響がないとは言わないが。

(個人的にはVistaでこのあたりのWindowsらしさが失われてしまいつつあることに物申したい)

世の中にはキーボードインターフェイスでないと快適に使用できない障害者も多い。くだらない「Webヒョウジュン」とやらのせいで、世の中の障害者は「視覚障害者しかいない」と思いこんでいるエセ進歩主義者が増えてしまったから無視されてるけど。日本人の10分の1は何らかの障害を抱えているが、目が見えないのはそのうちのほんの一部に過ぎない。

しかし、OS 9までならともかくどうしてOS XのUIが優れていると盲目的に信じている人が多いのかなあ。真のMacユーザーなら画面は白黒以外認めないだろ。

MacもWindowsも、Xベースのウィンドウマネージャも、他のOSを参考に切磋琢磨して成長してきたんだから、人類は「何が最も優れている」とかいう小学生並みの議論からもう卒業すべき。

[技術系]   こ、このセキュリティホールはひどい

at 22:40JST
いや、他人をあげつらうほど立派なプログラムは書いてないのだけれど、IBM謹製品でもこんな“初歩的以前”のミスをすることがあるのね、と。

IBM ホームページ・ビルダーのサンプル CGI の脆弱性 - Japan
http://www-06.ibm.com/jp/software/internet/hpb/security/hpbcgifix_20070514/hpbcgifix.html
open(MAIL,"| $mailprog $FORM{'to'}")|| die "Can't open $mailprog!\n";


説明するまでもないけれど、これだとブラウザからtoパラメータに
| /bin/rm -rf /

とするだけでホストサーバのディスク内容が全削除されてしまう可能性がある、と。taintな入力をコマンドラインに落としてはいけない、という好例。

でもねえ…。そもそもこうしたやり方にはJVNが指摘する「OSコマンドインジェクション」以外の問題がある。

このテのフォームメーラで
「メールの送付先」
を、CGIのパラメータとして指定できるようにしてはいけないのだ。

さもないと、外部からいたずらメールを特定のアドレスに向けて大量送信する踏み台として使われる危険性がある。しかも、どこかの画像表示可能な掲示板などに画像のソースとして「特定のアドレスにメールを送るURL」を埋め込まれてしまうと、DoS的な動作までしてしまう。

…そういうフォームメーラ、いまだに多くのサイトで野ざらしにされているはずだ。みんな気づいてないだけ。

IBMのfixではスクリプト中に送付先アドレスを埋め込むように修正されているけれど。けっして他山の火事ではないので。気をつけよう>自分

[技術系]   blogの「再構築」ってバカみたいだよなー…

at 20:32JST
利用者のあいだではおなじみの話だが、Seesaa BLOGに記事を投稿しても
・自blogトップページになかなか反映されない
・エントリ個別ページ(が作成されない|に修正が反映されない)
という現象がよく起きる。いつだかのリニューアルでmemcachedを使用しはじめた(らしい)以降から頻発するようになった。

ぼくはわりと運がいいのか運用がいいのか(あれだよ。バグの所在を知っていると無意識のうちにバグに当たらないルートを通ってしまうというヤツ)、エントリ数が1,000前後あるblogを運営していてもそういうことはあまりないのだけれど。

さっきやったら、5回投稿しなおしても誤字修正が反映されないでやんの-"-

しかたないので、XML RPC経由で直近エントリの更新APIを叩いてやったら反映された(イザというときのためにそういうCGIのゲートウェイを作ってある)。更新反映のルーチンがおそらく違うだろうと推測したのだけれど、そのとおりだったようだ。

ここ2ヶ月ほどSeesaaから自サーバへの移転のためにいろいろ準備しているのだけれど、もうそろそろホントに潮時かもしれん。Seesaa…マイナーなわりによくやってるサービスだと思うのに。残念。

というかね、再構築がらみの問題はSeesaaだけじゃなくてblogシステム全体の問題なわけでね。

そもそもちょっとでも更新がからむたびに全体を再構築しなければいけないというのがバカみたいだと思う。もうちょっとこまめに依存関係をチェックして、修正部分に対して最小限の再構築を自動でやってくれるならともかく。適当にごまかしてるだけで、確実を期すなら全面再構築しかないという…。MTはいちおう依存部分だけ再構築する挙動をしようと努力しているみたいだけど、それでもコンピュータの素人には気楽におすすめできるレベルではない。

blogブームの初期に誰か「makeでblogモドキシステムを作る」というネタをやっていたっけ。まあ、でも厳密に依存関係をチェックしたからって、再構築が更新のたびに必要になるという事実自体は変わらないのだよな。

しかも、再構築をキックするフロントエンドがムダにWebだというのも、システム管理者泣かせ。livedoorブログがAJAX的にプログレスバーを実現していたが、ほかのサービスは軒並みMTにならってリフレッシュ形式なのが泣かせる(笑える)。バグバグなIE7(でも愛してるよゲイツさま)で再構築かけると、途中で止まってくれてしまうのである。

ぼく思うんだけど、blogって本来の
「Web日記(weblog)」
のように頻繁に更新されるものには向いてないと思う。ぼくなんかこの「めもちょう」は一日に5件も10件も投稿してるわけで。当然、生成されるスタティックファイルは膨大になるし、再構築すべきファイルの量も増える。

むしろ、小規模な零細企業の公式ホームページを管理するとか、そういうCMSとして使うほうがいいと思うんだよね。更新もそうそうないし、構成要素も少ないから。…で、実際にいまいろいろやってるがMTはその用途にもけっこう力不足だったりする-_-;;

やっぱさー、世の中は初心に立ち返って動的生成のシステムを利用すべきだよ。
「mod_perlがどーたらはめんどくせー」
っても。RoRとかCatalystとかで、検証用ミニサーバを上げてWebアプリを動作させるのが定番になってるじゃん? スケーラビリティの上で比較にならないかもしれないけれど、サーバまで含めたblogシステムというもの(blog特化のWebサーバ)を提案する技術的土壌はけっこう熟成されてるんじゃないかと思うのよ。かなり妄想入るのを許してもらえれば。

※アレね。MTのダイナミックパブリッシングモードとかはもちろん知ってるけど、話があまりにも拡散しすぎるのでここでは触れない

それに、個人でも
「MTの出力ファイルをphpにしてます」
とかいう人が多いわけじゃん? …まあ、明らかにアレもバカみたいなのだが(Mason使えよ、と思う←それは違う)。スタティックコンテンツにこだわる意味ないよね。

なんつーか、
「再構築が目に見えない」
blogシステムが世の中には必要とされているよ、と思った。

2007/05/11

[技術系]   XPでOffice 2003使ってる人に朗報!

at 19:44JST
KB937383 - Microsoft Update または Windows Update が終了しない
http://www.st.ryukoku.ac.jp/~kjm/security/memo/2007/05.html#20070511_svchost
Office 2003 をインストールしてある Windows で自動更新や Windows Update / Microsoft Update を実行すると、svchost.exe が長時間 CPU 100% のまま推移することがある、という話。 OS がハングアップしたかと思うような状況になるようです


おおおおおおまえかー! おまえだったのかー!> Office 2003

どうも最近、XPがハングアップのような状態に陥ることが多くて、それが
・Windows Updateの更新自動スキャンがかかったとき
・手動でWindows Updateをかけたとき
に発生するところまでは突き止めていたのだけれど…。IE7のせいだとばっかり思っていた。

そういえば、ぼくはこの4月にOffice 2003に乗り換えて(4年も前のソフトになぜ今さら乗り換えるのかという疑問はさておき)いたのだ。しかし、まさかそれが原因だったとは。盲点だ。道理で、Office 2000のままの別のXPはサクサク動くわけだよ!

つーわけなので、Office 2003を導入してる人は即刻
http://support.microsoft.com/kb/937383/ja
からKBとWUAをインストールしたほうがよいと思われ。

いやはや…。
結局、最高品質のOfficeは相変わらずOffice 2000だということなのだろうか。
 Windows XP + Office 2000 + IE6
だと、ほぼ電源を落とさずに長期間運用できるんだよね。休止状態→レストアを何回繰り返してもOK。UIや動作可能コンポーネント面でビハインドがあるから今どきWindows 2000を勧めるようなラジカルなことは主張しないが、現実的で安定した作業環境が欲しいなら、この三位一体構成あたりがよいのかも。

2007/05/10

[技術系]   MTインポートによる移行向けに、旧URL→新ファイルパスのマップを作成するスクリプト

at 16:49JST
結論>MTにスクリプトから「出力ファイル名」指定でポストする方法 : ひろ式めもちょう
http://memo.hirosiki.jp/article/40820357.html

のつづき。

結局、
「他blog/他MTサイトからMTエクスポートログによって移行してくると、従来のURLを維持できない」
ので、エクスポート/インポート時に適当なスクリプトで
「旧URL→インポート後のファイルパス」
のマップを自動作成し、リダイレクトツールなどのためのデータにするのが好ましい。

ということで、そのためのツールを作った。自分用だけどメモしておかないとまたどこかに行っちゃうので公開。なお、スクリプトはなぜかWindows ActivePerlで動作させることを前提としている。

準備するもの:
a・旧サイトのMTエクスポートログ(mt.log)
b・旧サイトのスタティックHTMLファイル群(article/*.html)

まず、
a, bを展開したディレクトリ上で、static2mt.plを、
>static2mt.pl mt.log article/*.html > new_mt.log

のように動かす。すると、new_mt.logとして、

・各記事の属性部分に
 XORIGINALFILENAME: article/26381747.html
・各記事のBODYの先頭行の先頭に
 <!-- XORIGINALFILENAME: article/26381747.html -->

のように、マッチするスタティックHTMLファイルのファイルパスが挿入されたMTログファイルが新しくできる。

なお、マッチするファイルの認識には、スタティックHTMLファイル中に埋め込まれた
<rdf:RDF 
    :
<rdf:Description
    :
dc:date="2006-10-29T03:28:55+09:00"
/>
</rdf:RDF>
のようなRDF情報のdc:dateを使用している。RDFが埋め込まれていないHTMLファイルでは識別できない。

これでできあがったnew_mt.logを、移行先のMTにインポート。再構築してスタティックHTMLファイルを作成させる。

つまり、旧サイトのファイルパス情報がコメントタグ形式で埋め込まれたHTMLができる。

今度は、新しくできたスタティックHTMLファイル群に対して、mkurlmap.plを使って、
>mkurlmap.pl article/*/*.html > result.txt

などと操作する。

すると、result.txtには、
my %entriesMaps = ( 
'article/26573153.html' => 'article/200611/01-amazon_associates.html',
'article/26516570.html' => 'article/200610/31-seesaa_1.html',
'article/26610333.html' => 'article/200611/02-post_11.html',
        :

のようなハッシュテーブルが生成される。

あとはこれをCGIスクリプトに埋め込むなり、リダイレクトオンリーの静的HTMLファイル生成に使うなりすればいい。

なんつーことはないAd Hocなスクリプトなのだが、この手のツールが見あたらないのはなぜだらう。

[技術系]   MTでまっとうにエスケープしたエクスポート/インポートをできるようにするパッチ

at 10:58JST
MovableTypeエクスポートログ形式は腹を切って死ぬべきだ : ひろ式めもちょう
http://memo.hirosiki.jp/article/41332519.html

なんか一瞬「エクスポートのほうはめんどくさそうだ」と思ったけど、適当に処理してみる。こんな腐ったスクリプトを書けるのはひろ式先生だけ。あと、他人のこと偉そうに指摘するわりには、自分では
「エントリーのデータに\0が混じってるときちんと動作しないバグ」
を埋め込んでいるという話もある。

MTでハイフンをエスケープしたログをインポートするパッチ : ひろ式めもちょう
http://memo.hirosiki.jp/article/41336105.html

のパッチ取り込み済み。


*** lib/MT/ImportExport.pm.org	Thu May 10 09:37:57 2007 
--- lib/MT/ImportExport.pm Thu May 10 10:53:34 2007
***************
*** 297,302 ****
--- 297,303 ----
for my $piece (@pieces) {
$piece =~ s!^\s*!!;
$piece =~ s!\s*$!!;
+ $piece =~ s!^- !!mg;
if ($piece =~ s/^BODY:\r?\n//) {
$entry->text($piece);
}
***************
*** 526,532 ****
require MT::Template::Context;
my $tmpl = MT::Template->new;
$tmpl->name('Export Template');
! $tmpl->text(<<'TEXT');
AUTHOR: <$MTEntryAuthor strip_linefeeds="1"$>
TITLE: <$MTEntryTitle strip_linefeeds="1"$>
STATUS: <$MTEntryStatus strip_linefeeds="1"$>
--- 527,533 ----
require MT::Template::Context;
my $tmpl = MT::Template->new;
$tmpl->name('Export Template');
! my $tmplText = <<'TEXT';
AUTHOR: <$MTEntryAuthor strip_linefeeds="1"$>
TITLE: <$MTEntryTitle strip_linefeeds="1"$>
STATUS: <$MTEntryStatus strip_linefeeds="1"$>
***************
*** 538,556 ****
CATEGORY: <$MTCategoryLabel$>
</MTEntryCategories>
DATE: <$MTEntryDate format="%m/%d/%Y %I:%M:%S %p"$>
! -----
BODY:
<$MTEntryBody convert_breaks="0"$>
! -----
EXTENDED BODY:
<$MTEntryMore convert_breaks="0"$>
! -----
EXCERPT:
<$MTEntryExcerpt no_generate="1" convert_breaks="0"$>
! -----
KEYWORDS:
<$MTEntryKeywords$>
! -----
<MTComments>
COMMENT:
AUTHOR: <$MTCommentAuthor strip_linefeeds="1"$>
--- 539,557 ----
CATEGORY: <$MTCategoryLabel$>
</MTEntryCategories>
DATE: <$MTEntryDate format="%m/%d/%Y %I:%M:%S %p"$>
! __SEPARATOR__
BODY:
<$MTEntryBody convert_breaks="0"$>
! __SEPARATOR__
EXTENDED BODY:
<$MTEntryMore convert_breaks="0"$>
! __SEPARATOR__
EXCERPT:
<$MTEntryExcerpt no_generate="1" convert_breaks="0"$>
! __SEPARATOR__
KEYWORDS:
<$MTEntryKeywords$>
! __SEPARATOR__
<MTComments>
COMMENT:
AUTHOR: <$MTCommentAuthor strip_linefeeds="1"$>
***************
*** 559,565 ****
URL: <$MTCommentURL strip_linefeeds="1"$>
DATE: <$MTCommentDate format="%m/%d/%Y %I:%M:%S %p"$>
<$MTCommentBody convert_breaks="0"$>
! -----
</MTComments>
<MTPings>
PING:
--- 560,566 ----
URL: <$MTCommentURL strip_linefeeds="1"$>
DATE: <$MTCommentDate format="%m/%d/%Y %I:%M:%S %p"$>
<$MTCommentBody convert_breaks="0"$>
! __SEPARATOR__
</MTComments>
<MTPings>
PING:
***************
*** 569,578 ****
BLOG NAME: <$MTPingBlogName strip_linefeeds="1"$>
DATE: <$MTPingDate format="%m/%d/%Y %I:%M:%S %p"$>
<$MTPingExcerpt$>
! -----
</MTPings>
! --------
TEXT

my $iter = MT::Entry->load_iter({ blog_id => $blog->id },
{ 'sort' => 'created_on', direction => 'ascend' });
--- 570,584 ----
BLOG NAME: <$MTPingBlogName strip_linefeeds="1"$>
DATE: <$MTPingDate format="%m/%d/%Y %I:%M:%S %p"$>
<$MTPingExcerpt$>
! __SEPARATOR__
</MTPings>
! __ARTSEPARATOR__
TEXT
+ #-------- __ARTSEPARATOR__ \0\0
+ #----- __SEPARATOR__ \0
+ $tmplText =~ s/__ARTSEPARATOR__/\0\0/g;
+ $tmplText =~ s/__SEPARATOR__/\0/g;
+ $tmpl->text( $tmplText );

my $iter = MT::Entry->load_iter({ blog_id => $blog->id },
{ 'sort' => 'created_on', direction => 'ascend' });
***************
*** 588,593 ****
--- 594,602 ----
or return $class->error(MT->translate(
"Export failed on entry '[_1]': [_2]", $entry->title,
$tmpl->errstr));
+ $res =~ s/^-/- -/mg;
+ $res =~ s/\0\0/--------/g;
+ $res =~ s/\0/-----/g;
$cb->($res);
}
1;

[技術系]   MTでハイフンをエスケープしたログをインポートするパッチ

at 09:44JST
MovableTypeエクスポートログ形式は腹を切って死ぬべきだ : ひろ式めもちょう
http://memo.hirosiki.jp/article/41332519.html

V3.3。

diff -c lib/MT/ImportExport.pm.org lib/MT/ImportExport.pm 
*** lib/MT/ImportExport.pm.org Thu May 10 09:37:57 2007
--- lib/MT/ImportExport.pm Thu May 10 09:40:02 2007
***************
*** 297,302 ****
--- 297,303 ----
for my $piece (@pieces) {
$piece =~ s!^\s*!!;
$piece =~ s!\s*$!!;
+ $piece =~ s!^- !!mg;
if ($piece =~ s/^BODY:\r?\n//) {
$entry->text($piece);
}

[技術系]   MovableTypeエクスポートログ形式は腹を切って死ぬべきだ

at 08:31JST
MovableTypeエクスポートログ形式の問題点 : ひろ式めもちょう
http://memo.hirosiki.jp/article/41294601.html

のつづき。

MTのエクスポート結果って、
属性: 属性値
属性: 属性値
  :
BODY:
本文内容
----- ←項目区切り
ほかデータ列
  :
------- ←エントリ区切り

って感じで羅列になっているテキストファイルなわけだが。

ということは、これはどんな素人が見ても、
「本文中に ----- とか ------- とかが
 単独行で入ったらマズいな」
とわかる。通常、こういうものは何らかの方法でエスケープするものだ。

たとえば、いにしえのUNIX mbox形式では、メールメッセージの区切りが
From nantoka@nantoka

となっているわけだが、一般にメッセージ中行先頭の
From

は、
>From

でエスケープする慣習となっている。相互運用性にはやや混乱があるが、
http://man.qmail.jp/jman5/mbox.html
きわめてまっとうな方法で、これで20年は戦ってきた。

シェアの高いMTだし、当然このあたりは何か対応しているんだろうと思って確認してみると、

・エクスポートされるデータ
 →まったくエスケープされない

というのがわかった(V3.3)。

…正気か?

さらにさらに。

・エスケープされていないデータをインポートした場合
 →壊れたエントリが生成される

ということも確認できた。

…えー!?
マジですか…。

いくらMTのエクスポート画面で
「これは完璧なバックアップ手法じゃありません」
とうたってても、こりゃないだろ! というか、問題はバックアップではなく(バックアップならMySQLをダンプしておけばいい話)エクスポートが正常にできないということだ。相互運用性が確保されないという問題だ。

というか、大げさに言えばこれはセキュリティホールにも近い問題だ。なぜなら、上記のような形式で出力される中には「コメント」「トラックバック」のデータも含まれるから。
「お。気に入らないやつみっけー。
 こいつ、もうまともにエクスポートできないように、
 コメント欄に - を5つ書いといてやれ!」
と攻撃のネタにすることもできる。これだけで攻撃対象は自分のMTを簡易バックアップすることが不可能になるうえ、ほかのblogシステムへの移行もできなくなる。

ちなみに、いったんこの形式でエクスポートされたデータは機械的に問題点をチェックすることはできない。目視で修正するしかない!(検索すりゃ手間が多少省けるけど、コメントだけで1万件近いようなサイトを運営してる身には地獄だ)


そもそもMTがきちんとエスケープしないでエクスポートしている背景には、この機能がMTのテンプレート機能を転用して実装された簡易なものだということがあるようだ。

Movable Type Knowledge Base: Customized Exports
http://www.sixapart.com/movabletype/kb/imports/customized_expo.html

にはエクスポート形式の詳細のほか、いろいろなエクスポートの方法が書かれているが、あくまでMTのテンプレートを使った方法だけが紹介されている。まあ、言っちゃ悪いがテヌキだよね。


で、こんな簡単な問題はもちろんぼくじゃなくてもすぐわかるわけで、知ってる人はけっこういるみたいなんだけど、あんまり問題視されてないんだな…。おまけに、ご丁寧にほかのMT互換サービスも、このMTと同じ弱点をそのままマネしている。Seesaa BLOGもそう! -----のエスケープの必要を考えず、そのままエクスポートしている。おーい…。

唯一対応しているらしいのが

開発者ブログ MovableType形式と忍者形式のログエクスポートやログインポート
http://samurai.blog.shinobi.jp/Entry/111/

「忍者ブログ」だ。ここは
5つ以上の連続したハイフンと改行は5つの連続したハイフンと改行の間に半角スペースを入れます。

というAd Hocなやり方で対応している。忍者はいつもひと味違うサービスをやってるが、えらいな…。

忍者ブログは
「何らかの方法でエスケープしても、
 インポート側がアンエスケープできなければ意味がない」
という事情からこの方式を考え出したのだろう。行末に半角スペースが入っていても誰も気づかない。しかし、本来的には

エクスポート側
・行頭に-がある場合は「- 」を挿入する
インポート側
・行頭に「- 」がある場合はこれを削除する

という、より単純で明確な運用を普及させる必要があると思う。

とはいえ人に対応してもらうのを待っているわけにもいかないしな…。
いくつか方策を考えた。

・エクスポート側
 - MTでまっとうにエクスポートできるよう、プラグインを作る
  (とりあえず、ぼくは今「インポートする側」なので後回し)
 - XML-RPC APIを介して、MT互換blogから正常に“吸い出す”スクリプトを書く
  (…トラックバックとコメントって吸い出せたっけ?)
 - MT Perl API経由でバックエンドのDBからデータを吸い出すスクリプトを書く

・中間
 - MTエクスポートデータ中、怪しい「-----」を見つけて
  エスケープする支援スクリプトを書く

・インポート側(- エスケープ対応)
 - MTでまっとうにインポートできるようパッチを書く

※追記
エクスポート、インポートともにパッチを書いてみた↓

MTでまっとうにエスケープしたエクスポート/インポートをできるようにするパッチ : ひろ式めもちょう
http://memo.hirosiki.jp/article/41339889.html


めんどくさ…。

もうさー、とにかくこの
・まともにエスケープもしていない
・ファイル名(permlink URL)の保全もできない
MT形式を標準扱いするのはやめようよー。


追記:
…これ、コメント部分のインポート時パースにも問題ないか?
lib/mt/importexport.pm l.320から
my @lines = split /\r?\n/, $piece; 
my($i, $body_idx) = (0) x 2;
COMMENT:
for my $line (@lines) {
$line =~ s!^\s*!!;
my($key, $val) = split /\s*:\s*/, $line, 2;
if ($key eq 'AUTHOR') {
$comment->author($val);
} elsif ($key eq 'EMAIL') {
$comment->email($val);
} elsif ($key eq 'URL') {
$comment->url($val);
} elsif ($key eq 'IP') {
$comment->ip($val);
} elsif ($key eq 'DATE') {
my $date = $class->_convert_date($val) or next;
$comment->created_on($date);
} else {
## Now we have reached the body of the comment;
## everything from here until the end of the
## array is body.
$body_idx = $i;
last COMMENT;
}
$i++;
}
これだと、コメントの先頭に「(EMAIL|URL|IP|DATE):」な行があるとパースされてしまうよね。…URLのところがヘンにサニタイズをすり抜けたりしなきゃいいんだけど…。

別にケチつけたくて調べてるわけじゃないんだが、これならJUGEMかどっかみたいにXML形式でエクスポートしてくれたほうがいいなあ。もともとMTはXML関連モジュールを使用しているのだから、インポート/エクスポートに利用できないことないのに。

2007/05/09

[技術系]   MovableTypeエクスポートログ形式の問題点

at 20:33JST
-_-#

ぼくは天邪鬼なのでMovableTypeはもともと好きじゃない。とはいえ標準だという事実は動かしがたい。必要に迫られてこのあいだからこちょこちょと動作の細かいところを確認しているのだが

...ここまで愚痴を書いたらSeesaaが落ちた-_-

2007/05/06

[技術系]   Windowsのperlで@ARGVのワイルドカード展開

at 14:51JST
よく忘れるので写経。
#!/usr/bin/perl 

use strict;

my @files;
# Extract Windows' wild cards
while ( my $i = shift @ARGV ) {
push( @files, glob( $i ) );
}
print "@files";

こんな感じで3行ほど追加しておけばWindows/UNIXとも同じように動く。

ただし、
・\x5C問題がある
 http://digit.que.ne.jp/work/index.cgi?Perl%E3%83%A1%E3%83%A2%2FWindows%E3%81%A7%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%91%E3%82%B9
・taintedな入力には使えない
 http://www.ipa.go.jp/security/awareness/vendor/programming/a04_02_main.html
ことに留意せよ。

こんなのもあるのでシームレスに処理できないこともない。
・Wildcard.pm
 http://homepage2.nifty.com/kipp/perl/scripts.html

ただ、下記のサイトで引用されている論評には同意しかねる…。

小粋空間: Active Perl でワイルドカードを利用する
http://www.koikikukan.com/archives/2005/08/16-235838.php
もっと上手な「Perl使い」の人たちは、ワイルドカード自体あまり使いません


シェルの機能であるワイルドカードと、スクリプト言語の機能性とは別問題かな。やっぱ本来はActivePerlがコマンドラインのワイルドカードを展開してスクリプトに引き渡すのが、MS-DOS悠久の歴史から言ってオーソドックスかと。ここらへんはCP/Mとの互換性が関わってくるので変えられない。
 # この元発言主、BaseBandさんなのね。なつかしー

[技術系]   時代はXMODEM

at 11:57JST
Poderosaでアクセス中のリモートでアーカイブを作って、手元のWindowsデスクトップにもってこようと思った。コマンドプロンプトを立ち上げて、cygwinのscpで…。

しかし、ちょうど別のcygwinライブラリを使ったアプリケーションが動いていて、バージョンコンフリクトを起こして動作しない。

むう-_-; FTPは面倒だしな。コマンドライン一発でできない。そこでPoderosaのメニューを眺めていて思いついた。

XMODEMで転送したらラクちんじゃん! (^o^)

もー、XMODEMなんてウン十年も使ってませんが。そもそもぼくはB-PLUS派だったし。よーしパパ、XMODEMでtar.gzファイル転送しちゃうぞー、と。

% sx -b arts.tgz

として、Poderosaのメニューから「ファイル」→「XMODEM受信」を選ぶだけ。いえーい。
2007050601mage1.png

10MBのファイル転送するのに10分もかかったけど、面倒な作業しなくてすんだぜ!

…解凍したら、コマンドキャラクタの関係でぶっこわれてた_| ̄|O どこがラクだよ。PoderosaはZMODEMとか対応してないし。あー、やっぱTeratermに戻ろうかなー。

ということで、すなおにPuTTYに同梱されているpscp.exeをダウンロードしてきて使いました。1分で済みました。おわり。

PuTTY: a free telnet/ssh client
http://www.chiark.greenend.org.uk/~sgtatham/putty/

[技術系]   coLinuxにファイルシステム追加

at 04:56JST
coLinuxのインスタンスがdisk fullになった。

セットアップしたのが4年くらい前で、それ以来放置しっぱなしだったので、
「うー、あれ設定めんどーなんだよなー」
と躊躇してた。

よく考えたら簡単だった。単なるLinuxなのだから。

/dev/cobd2 に4GB追加するとして、

Windows / NTFS上で
dd if=/dev/zero of=4gb.img bs=1M count=4096


c:\progra~1\coLinux\default.colinux.xmlに追加
<block_device 
index="2" path="\DosDevices\z:\colinux\4gb.img" enabled="true" />


coLinux上で
$ mkfs -V -t ext2 /dev/cobd2
$ e2fsck /dev/cobd2
$ tune2fs -j /dev/cobd2
 (ジャーナリングにする意味があんのかどうかは不明)


で、
$ du -s -k ディレクトリ名

で大きそうなディレクトリを調べたら、
836492  /var/net/www
2640504 /usr/src/netsrc

だった。netsrcはコンパイル作業場+履歴なのだが、おいらなにそんなにコンパイルしたんだ?

どうでもいいので、
$ mv /usr/src/netsrc /usr/src/_netsrc
$ mkdir /usr/src/netsrc
$ mount /dev/cobd2 /usr/src/netsrc
$ mv _netsrc/* netsrc

で終了。fstabにエントリを追加しておく。

[技術系]   わりとよいケースを買ったぜ

at 00:34JST
なんでもいいから安いPCケースを…と、昨日アキバの「ツクモケース王国」に行ってきたのだが、手に入れたものはわりとよいデキだった。

ぼくがむかし好きだったのは「ゆんゆん」(YEONG YANG)のMicroATXブックタイプケース。あれはものすごい名器だった。FDD+3.5'HDD+CDに、さらに3.5インチスピーカーを内蔵させてオールインワンにしたのを3台くらい作った。
「これならパソコン教室やるのにもちょうどいいな!」
とかなり前向きに検討した時期もあったりして。

しかし電源の大容量化、エアフローがシビアになるにつれああいう魅力的なMATXケースは少なくなってしまった。以来、小型PCケースにはあまり目を向けてなかった。

DM-318
http://aopen.jp/products/housing/dm-318_white.html



DM-318は8,000円台と安いわりになかなかだ。3.5'、5'のオープンベイが1つずつに、さらにHDD用3.5'のシャドウベイが1つある。ドライブベイの下にトリッキーに配置されているのだけれど、エアフローは比較的よい気がする。ロープロファイルなのに、マザーボードをおさめてもそんなに窮屈感がない。

5'ベイの目隠し板は光学ドライブの皿に押されて開くタイプ。ぼくはこれにそんなにいい印象なかったんだけどね。けっこう工作精度が高いようでピッタリしている点に好感をもった。そんでもってエッジの処理がきちんとしてて手を切らなくなってるのもうれしい。こんなに安いのに。初心者にも安心のAOpenブランドらしいってところだろうか。全体にしっかりしている。

難を言うと、天板の排気ケースファンが標準添付じゃない点か。やはり内蔵の300W電源ユニットの排気だけじゃキツい。2,3時間動かしたらものすごく熱くなったので、あわてて8cmファンを買ってきて追加した。あと、サイドパネルがローレットスクリューだって宣伝されてるけど、付属してません…うちにゴロゴロ余ってるやつを使うことにした。うん。見た目もかわいいし満足。

中身は変わらず、サブマシンの古いSempronかなんかなんだけどね。

で、うれしくなったので、このあいだポカやって余ってたPCIのビデオカードを追加。Sビデオ端子出力をテレビにつないで、
「わーい、テレビで動画を視れるぞー」
という環境にした。昔、事務所にお客さんが来るとき用にやってたころ以来。心なしか昔よりSビデオの出力がキレイな気がする。プレゼンとかするわけじゃないけど、録り貯めてる映画視るのにいいや。

ハイパワー一辺倒から、CPUなどの低消費電力化が進んでちょっとは環境がよくなってきたのかしら。このくらいのサイズでSocketAM2のマシン組めるといいんだけどなーどうだろなー。

2007/05/05

[技術系]   結論>MTにスクリプトから「出力ファイル名」指定でポストする方法

at 06:29JST
MTにスクリプトから「出力ファイル名」指定でポストする方法 : ひろ式めもちょう
http://memo.hirosiki.jp/article/40817461.html

blogお引っ越し目的での検討だったのだが…。

結論:
ムダなのでやめたほうがよい。

前提:
・任意の「出力ファイル名」でエントリをインポートするには、
 「エントリー・アーカイブ」の出力フォーマットを
 「article/%f」
 などにする必要がある

・「article/%f」だと、
 ファイル名に日付などを入れられるMTの利点が生かせない
 (Seesaaに比べてのメリット)

・なお、ファイル名が既存ファイルと重複する場合には
 _1などとしてMTが面倒みてくれる

・インポート後に出力フォーマットを変えると、
 変更前フォーマットのファイルは、
  - そのまま削除されない
  - しかし再構築対象にならない

・出力フォーマットを複数指定することは可能だが、
 ファイルが二重にできるため異常にムダ
 (エントリが1,000を超えるようなケースでは…)

対抗策:
・希望のファイル名とインポート後のファイル名の
 マッチングテーブルを作って
 リダイレクトするスクリプトを書く

・出力フォーマットを複数指定して、
 mod_perlによるダイナミックパブリッシングモードで動かす

・WordPressとかの挙動を調査する
 →perlじゃなきゃイヤなのでコレはナシ

そもそも簡易blogスクリプトを自分で書いたほうが早いような気もするのだが、だいたいドツボにハマるのからやめ。

つーかさー、なんでblogのデータ交換フォーマットってMT形式が主流なままなの? エクスポート時のURLもやりとりできないんじゃ明らかに力不足だよね。よく
「パーマリンクさま万歳」
な信者を見かけるけど、インターオペラビリティがなきゃ万歳もクソもあるかい。

ま、今回は丸ごとミラーしてるサイトのコンテンツとMTデータを比較してURLを検出させるからいいが…。
さらに過去の記事
2009/04 (1)   2008/12 (3)   2008/11 (9)   2008/10 (10)   2008/09 (20)   2008/08 (2)   2008/07 (23)   2008/06 (16)   2008/05 (22)   2008/04 (11)   2008/03 (21)   2008/02 (20)   2008/01 (21)   2007/12 (32)   2007/11 (37)   2007/10 (46)   2007/09 (63)   2007/08 (33)   2007/07 (41)   2007/06 (81)   2007/05 (173)   2007/04 (168)   2007/03 (113)   2007/02 (123)   2007/01 (92)   2006/12 (111)   2006/11 (185)   2006/10 (20)  

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。