■ |
手順要旨
0. |
事前に必要なもの:
○ |
自分用のホスト名のあるアバウトミー ID
|
○ |
ココログプロの ID
|
○ |
はてな ID
|
○ |
|
○ |
Perl
|
○ |
wget などウェブページを一括ダウンロードできるもの
|
○ |
unshar または shar 形式が解凍できるもの
(私は Cygwin の perl, wget, unshar を使っています。)
|
|
1. |
wget などで(自分用のホストの)アバウトミーから全ひとことをダウンロードする。
|
2. |
ココログプロで新しいブログを作成する。(テンプレート等の登録の前に) それを、はてなスターに登録して、Hatena.Star.Token を得る。
|
3. |
このツールに付属する make_template.pl を動かす。(config.ph で変数の設定が必要。)generated ディレクトリにテンプレート等が生成される。
|
4. |
生成されたテンプレートをブログのデザインとして登録していく。 Greasemonkey に statuses_editor.user.js を登録する。
|
5. |
このツールの generated/aboutme2cocolog.pl を使って変換した「ひとこと」を、ココログに読み込む。再構築したら完成。
|
6. |
Google サイトマップ等に登録し検索されやすくする。(任意)
|
|
■ |
手順 1. |
wget で全ひとことをダウンロードする。
|
|
まず、アバウトミーの自分用のホストから、すべてのファイルを一括ダウンロードしバックアップします。(※すでにアバウトミーが終了しているため、この手順は無視してください。)
特に変わったところはないので一括ダウンロードツールなら、なんでも良いと思いますが、wget を使う方法だとダウンロードしたディレクトリに行ったあと、次のようにします。(ご自身のホスト名となるよう[ユーザーID]を指定してください。)
|
wget -r -k -w 5 -l 1000 -o wget.log http://[ユーザーID].aboutme.jp/
|
オプションの説明を簡単にしますと、-r は一括ダウンロードの指定、-k は今回の作業には必ずしも必要ありませんがバックアップをローカルで見たいなら必要です。-w 5 は aboutme への負荷を減らすためにダウンロードに 5 秒の間隔を空けます。-o でログを取ります。
大事なのは -l 1000 です。「ひとこと」の数が多ければ、この数を多くしないといけません。「ひとこと」数÷20 より多くする必要があります。「答えた質問」「作った質問」についてもバックアップを取りたい方は、その数についても考慮する必要があります。
なお、wget は一度失敗しても再挑戦して取得しようとしますが、それでも失敗することがあるらしく、私はのちの aboutme2cocolog.pl を走らせる段階で、「欠け」を見つけ、いくつか個別にダウンロードしなおしました。(それを調べるために wget のログは取っておいたほうが良いです。)
■ |
手順 2. |
新しいブログを作り、Hatena.Star.Token を得る。
|
|
テンプレート等の登録はあとになって考えるとして、とりあえずココログプロで新しいブログを作成してしまいましょう。
ブログ一覧画面で、そのブログ名の上にカーソルを置くと、下に URL が表示され、それは↓のようになっているはずです。
この blog_id である XXXXX が必要なのでメモしておきましょう。
ブログの設定をします。
|
● |
バックナンバーについては「週別」「月別」「個別」「カテゴリー」にチェックして変更を保存します。(「日別」は使いません。)
|
● |
カテゴリーに「ブックマーク拒否」「休止中」カテゴリを足して変更を保存します。
|
● |
RSS フィードはブログのフィード出力は「記事」にチェックし、「概要のみ表示」を選択して変更を保存します。
|
● |
本実装はココログのコメント機能を使いません。トラックバックは使いますので、お好きなように設定してください。
|
● |
表示方法については、日付の書式が「2011年4月20日(水)」などといった形式にしてください。いちおう投稿の状態は「下書き」、改行は「なし」、概要の文字数は 400 文字にしてください。アバウトミーにならえば表示記事数は 20 件でしょうか。
|
|
すると、Hatena.Star.Token が表示されるので、この値をメモします。(スクリプト全体ではなく、'XXXXX' とかかれた XXXXX 部分の値のみが必要になります。)記事をまだ投稿していないのでタイトル等がおかしいと思いますが、あとで update すればよいので問題ありません。
このドキュメントを読んでいるということはすでに展開が終っているのかもしれませんが、ツールの shar 形式のアーカイブを展開します。unshar または、 sh コマンドとして実行します。
|
unshar aboutme2cocolog.shar
|
すると、次の警告が出ます。
|
x - extracting src/template/TitleByArticle.template (text)
src/template/TitleByArticle.template: MD5チェックが失敗しました
x - extracting src/template/TitleOrEntryID.template (text)
src/template/TitleOrEntryID.template: MD5チェックが失敗しました
|
この MD5 のチェックの失敗は、これらのファイルが改行を含まないことに起因します。unshar が生成したファイルは改行を含んでいるかもしれませんが、後述のようにこの二つをテンプレートに登録するときは最後の改行がないようにしてください。
そして、config.ph をエディットして設定します。上で得たトークン等を設定してください。FAVICON と TRACKBACK_POLICY_URL を設定するのは私の趣味みたいなものです。FAVICON は LinkIcon.template で、TRACKBACK_POLICY_URL はJapaneseText.template で変数的に設定しているだけなので、それらの template をあとからエディットしてもいいでしょう。
設定し終ったら次のコマンドを実行します。
これにより generated というディレクトリができます。この generated の中身を使っていきます。この元となっただいたい同じファイルが src ディレクトリの中に残っていますが、ややこしければ src はこの段階で消していただいて結構です。
ココログの管理画面で、上級テンプレートを作成しておきます。新規テンプレートの作成で、「右サイドバー付」を選んで、適当な名前(「201104XXのテンプレート」など)で保存します。次にテンプレートの管理でそれを上級テンプレートに変換し、それを編集して適当な名前を付けます。この段階で「適用」もしておきましょう。
そしてローカルの generated/template/ 以下のファイルを手作業でコピペしながら登録していきます。(面倒くさい!)
種類としては、インデックステンプレートとバックナンバーテンプレートとテンプレートモジュールに分かれます。
順番が前後しますが、まず、generated/template/*.template という拡張子のものをすべてテンプレートモジュールとして登録します。このときテンプレートモジュール名は、ファイル名(generated/template/XXXX.template なら XXXX)にしてください。この名前で他のテンプレートから参照されますから、名前にスペースなどが含まれないように注意してください。大文字小文字も区別します!
なお、チラと上述しましたが、TitleByArticle.template と TitleOrEntryID.template については、最後に改行が含まれないように登録してください。
大文字ではじまる CategoryArchives.html、DataBasedArchives.html、 IndividualArchives.html、Pages.html はバックナンバーテンプレートとして、それぞれ対応するものをコピペで上書きしてください。
小文字ではじまる archives.html、atom.xml、index.html、rss.xml、 index.rdf、styles.css、sidebar.inc は既存のインデックステンプレートをコピペで起きかえてください。出力ファイル名がそれに相当します。
新しいインデックステンプレートして、jumpbydate.html、jumpbyowner.html、 jumpbytitle.html、sitemap-index.xml、sitemap-part.xml を登録します。このテンプレート名は何でも良のですが、"Jump by Date"、"Jump by Owner"、 "Jump by Title"、"Sitemap Index"、"Sitemap Main" とでもすればいいでしょう。
ColorName_*.template は ColorName.template の替わりのデザインで、私のサイトで使っているもの等です。ColorName_brown.templateの背景は
X11 のディレクトリから取ったもの(granite)、ColorName_pinktiger.template の虎の絵は、
Ghostscript の配布物から取った用例(tiger.eps)で、色とフォーマットを変えて使っています。(なお、ColorName.template は styles.css でしか使っていないため、インストール後、ColorName.template を変更したときは、メインテンプレートの styles.css だけを再構築すれば十分です。)
できあがるテンプレートの表は次のような感じです。
|
適用中のデザイン: “ひとこと用テンプレート”
上級者向けテンプレート
テンプレート |
出力ファイル |
公開 |
Archive Index Template |
archives.html |
はい |
Atom Template |
atom.xml |
はい |
Jump by Date |
jumpbydate.html |
はい |
Jump by Owner |
jumpbyowner.html |
はい |
Jump by Title |
jumpbytitle.html |
はい |
Main Index Template |
index.html |
はい |
RSS 2.0 Template |
rss.xml |
はい |
RSS Template |
index.rdf |
はい |
Sitemap Index |
sitemap-index.xml |
はい |
Sitemap Main |
sitemap-part.xml |
はい |
Stylesheet |
styles.css |
はい |
sidebar |
sidebar.inc |
はい |
バックナンバーテンプレート
Category Archives |
DateBased Archives |
Individual Archives |
Pages |
テンプレートモジュール |
BlogBanner |
BlogHatenaRDF |
ColorName |
EntryHatenaRDF |
EntryNav |
EntryShort |
HatenaStarToken |
HeadInfo |
JapaneseText |
JavascriptVariables |
LinkIcon |
Notice |
OwnerList |
StatusesTools |
TitleByArticle |
TitleOrEntryID |
|
このデザインを「適用」するのを忘れないでください。
ここで、緊急告知のための準備もしておきましょう。デフォルトのままであれば、ユーザー用のココログのトップディレクトリに Notice.html というファイルを置くと、それがすべての HTML コンテンツのはじめに表示されます。
generated/Notice.html を「コントロールパネル」の「ファイル」からアップロードしてください。何かがあれば、このファイルをいじって(HTML のコメントアウト <!-- --> をはずすなどして)告知ができます。なお、実体は Notice.template で SSI を使って指定されていますので、告知の際は、Notice.template をいじって再構築するという方法もあります。
次に Greasemonkey に generated/statuses_editor.user.js を登録しましょう。
Greamonkey のアイコンから、「新規ユーザスクリプト」を選び、名前を "Statuses Editor" とでもして、あとは適当に書いて OK をクリックします。そして、エディタで generated_statuses_editor.user.js の内容をそっくりコピペして保存すればできあがりです。
私と共用で Javascript を使うのが心配な方は、config.ph に書いた URL の位置に generated/statuses_tools.js をアップロードしておきましょう。私のサイトでアップデートしながらの運用なのでご自身のサイトに置いたほうが安全です。
なお、おまけとして Firefox の
JSActions アドオン用に、aboutme の URL や、aboutme:XXXX、cocolog:XXXX といった表記があれば、このツールで作ったブログのページへジャンプすることができる generated/Aboutme_Jump.js が付属しています。適当に名前を変え、JSActions の global ディレクトリに入れて使ってください。
いちおう generated/summoner.js も付いてきますが、これは statuses_editor.user.js で乱数計算をするだけのライブラリで、私による変更の可能性はないと思っていただいてよいファイルです。ご自分用に持たず、私のサイトのものを使うようにしてください。(万一、私がサイトを閉じたときには必要になるかもしれないのでソースを付けています。)
先に config.ph で ABOUTME_DUMP_DIR に指定していたディレクトリから、ダウンロードされたウェブページをココログで読み込めるように変換します。↓を実行してください。(※すでにアバウトミーが終了しているため、この手順は無視してください。)
|
perl generated/aboutme2cocolog.pl
|
すると、cocolog-upload.00X というファイルができますので、順番にこれをココログに読み込ませます。ココログはアップロードするファイルに 1M のサイズ制限があるので、分割アップロードが必要になります。(分割せずにすむ幸運な方もいるかもしれません。)
このとき、ダウンロードが失敗しているかどうかのチェックも行なっています。警告が出れば、ディレクトリに行って、失敗している個別ページをダウンロードしなおしましょう。
(なお、wget の終了までの時間の関係で、「何分前」「何時間前」といった日付けは、順序までは変わりませんが、うまく反映されないことがあります。気になる方は、手順が終って再構築したあと、「アバウトミーからアップデート」してください。)
ブログの「管理」で、「読み込み/書き出し」のページに行きます。
コンピュータ上のファイルを指定し、(文字コードは UTF-8 のままで)上のファイルをアップロードします。
全部読み込ませ終ったら「再構築」してください。再構築に時間がかかる(私のは20分強かかる)かもしれませんが、これで完成のはずです。(「問題が発生」したら、しばらくいろいろ確かめたあと、ダメなら私に連絡してみてください。)
■ |
手順 6. |
Google サイトマップ等に登録し検索されやすくする。(任意)
|
|
公開して運用する場合、ブログの設定で「更新通知」を「はい」にします。私は「ひとこと」の数が多く、少しでも投稿スピードを早くしたいので、Ping 通知サービスは設定していません。
Google サイトマップはココログプロでは自分で生成しなければなりません。 sitemap-index.xml がそれになりますが、これをトップの robots.txt に書かかれた sitemap.xml に書き込むか、sitemap-index.xml をそのままサイトマップとして登録します。
なお、Google が、登録したサイトマップに関し、title や identifier という余計な要素があるといった警告を表示します。プロトコルの説明ではそうやっていいとのことなので残していますが、しばらく様子をみて不都合があれば、そういった要素を使わないようにするのも原理的には可能なので、その方法も検討します。
このほか、すべての HTML のページに meta タグを足したりしたい場合は、 HeadInfo テンプレートモジュールに書き足すのが便利です。
移行するのは「ひとこと」のみです。「答えた質問」「作った質問」他のユーザーの「ひとこと」への自分のコメントは、移行されません。
Javascript を使いまくってるので、Javascript が使えない訪問者には悲惨な表示結果になるでしょう。
個別ページなどで、その日から前後3日の Google のニュース検索結果を読み込むようにしているのですが、今のところ、昔(一ヶ月以上前)のニュース記事は表示されないようです。他、ブログ・ビデオは日付が反映されません。「ウェブ」のみまともに表示されるようですが…ちょっとおかしいように思います。 daterange 機能はうまく実装されてないのでしょうか?
コメントを「保存」したあと訪問者用のページに反映させるため「再構築」ボタンを押す必要があります。「ひとこと」の数が多いと、これにすごい時間がかかります。
モバイルではほぼチェックしていません。iモードHTMLシミュレータIIで少し見ましたが、 文は表示されます。iモードHTMLシミュレータIではダメでした。モバイルで見る機能は、ココログのデフォルトのままなので、PC のものとはレイアウトが変わります。
あと、私の新しい「ひとこと」サイトはすでに公開し、サイトマップも登録していますが、正式な 2011年6月1日のオープンまでは、かなり流動的で、ソースの変更等もしばしばあると思います。ご容赦ください。
文章部分はブログのデータベースに登録されるときは、改行(br タグ)以外の HTML 要素が削られます。HTML タグが文章中に書かれても、単純に(エスケープされ)、そのタグそのままが表示されます。
ただし、文章が訪問者のページに読み込まれたときは、Javascript で文章にリンク(URL文字列)があればリンクになるような「装飾」がなされます。それらの機能には次のようなものがあります。(実装は、statuses_tools.js 内の decorate_div 等を呼ぶことでなされています。)
コメント部分に行として『typo 「修正前」→「修正後」。』という記述、または、『修正 「修正前」→「修正後」。』という記述があると、それより上のコメント部分の「修正前」を「修正後」に置換します。「」のほか全角の[]も使えます。なお、『行修正 「修正\n前」→「修正後\n」。』と書くときは、括弧の中で一部のエスケープ記号(改行 \n, タブ \t, 空文字列 \0, \\)が使えます。(英語で 『rewrite "before" --> "after".』や 『srewrite '\nbefore' --> 'after\n'.』とも書けます。)
JavascriptVariables.template の UNTRUSTED_OWNERS_FOR_TYPO に設定されていない者ならば typo が使え、TRUSTED_OWNERS_FOR_FOR_REWRITE に設定されている者のみ「(行)修正」が行えるようになっています。デフォルトでは誰でも typo 指定はできますが、修正指定はサイトのオーナーしかできません。後述の trust、untrust 機能で、「ひとこと」内でその許可を変えられます。ただし、誰が書いたかを示す statuses_editor.user.js の USER_NAME は、たばかって設定できるため、あまり意味のない機能です。
http(s) または ftp ではじまる URL について、それにリンクを付す(a href のタグを自動的に付ける)機能です。おなじみの機能です。アバウトミーでもありました。ただ、アバウトミーからココログに変換するとき、a href タグは一端除去して、Javascript でもう一度付けるという処理をしています。
日付があれば、ココログの月別・週別アーカイブに飛ぶリンクを付す機能です。テンプレートの jumpbydate.html を使っています。
コメント部分に行として「keyword: キーワード1」という文があれば、 Google を使い、自分のサイト内で「キーワード1」を検索するためのリンクを付す機能です。
「漢字[かんじ]」といったように漢字が続いたあとに [] があるとき、ルビとして解釈する機能です。途中からルビをしたい場合など「漢[]字[じ]」「漢[ruby:字:じ]」といった記述法も可能です。
記事の ID を示す[cocolog:XXXXX] や [aboutme:XXXXX] といった表現があれば、その記事へジャンプするためのリンクを付す機能です。 (記事 ID は本システム内表現ではタイトルになるようになっています。)テンプレートの jumpbytitle.html を使っています。
[google: クエリ] という文には、Google で「クエリ」が検索されるようなリンクを付します。
コメント等の最初にある [タグ] という記述は、タグとして解釈され、タグとして検索するためのリンクが付されます。本来なら、ここはブログのカテゴリ機能などで実装できればいいのでしょうが、私が作るには難しいためこうしています。
アスキーアート等に便利なように、<pre>...</pre> で囲まれたところは、HTML の pre タグで囲むようにしています。なお、pre 内に上述のこれまでの機能を使う部分があると、それらの機能を使ったあと pre で囲まれることになります。この実装が私にとってもっとも簡単なのです。
コメント部分に行として「trust:UUUU」という部分があれば、UUUU という名前のユーザーが行った「typo」や「修正」の指示をその「ひとこと」内で反映します。逆に「untrust: UUUU」という部分があれば、UUUU という名前のユーザーが行った「typo」や「修正」の指示はその「ひとこと」内では無視されます。
この機能を使うには、指示を書き込む者が JavascriptVariables.template の SITE_OWNERS に指定されている必要があります。ただし、書き込んだ者を示す statuses_editor.user.js の USER_NAME は、お互いいじれる関係にあるわけですから、サイトのオーナーを偽装することも簡単です。正直、今のところ、意味のない機能です。
これはどちらかといえば編集機能なのですが、訪問者からも見えるのでこちらに分類してあります。ローカルに保存したいなど、コピペがしやすいような文章を、IE などの場合はクリップボードにコピーし、Firefox などの場合は、ポップアップした textarea に表示する機能です。textarea に表示されたものはマウスの右クリックで「すべて選択」「コピー」をしてください。 Firefox ではクリップボードが Javascript から使えないという制限があるため、このような実装になっています。
トップページには新しい「ひとこと」を投稿するためのエディターが、それぞれの「ひとこと」には、コメントの最後に次のコメントを入力するためのエディターが表示されます。この機能は Greasemonky の statuses_editor.user.js によって実現され、内部ではブログシステムと XMLRPC プロトコルで送受信します。
コメントは、ブログのコメントシステムではなく、記事の More 部分に記事の一部となるよう書いていく形をとっています。アバウトミーを参考に、一つの「ひとこと」記事のコメント数は 300 まで、「ひとこと」は 140 字、コメントは、それぞれ 300 字が上限になっています。
2011年6月30日までの「ひとこと」の更新に対応するため、6月30日までの間は「アバウトミーから取得」ボタン、「アバウトミーからアップデート」ボタンが表示されます。前者は、URL などを入れてクリックすれば、アバウトミーの「ひとこと」が GET され、自動的にココログに投稿されます。後者は、すでに投稿された「ひとこと」のコメントの変更を反映させることができます。「再構築」も行われます。
「ひとこと」の数が多くなると、「投稿」「再構築」がたいへん重くなります。「保存」「削除」は私が思っていたより早く、十分実用に耐えると思いますが、それらを使うと「再構築」ボタンの文字が赤くなると思います。「保存」したあと「再構築」を忘れると、ココログの管理画面から、ものすごい時間のかかる「全体の再構築」をする必要が出てくるため、ご注意ください。Status がいちおう表示されてますので入力待ちの参考にしてください。
「ひとこと」記事の削除には対応していません。その替わりと言ってはなんですが、ココログの管理画面の記事編集画面に行くための「編集」ボタンを付けてあります。そこで記事の削除を選択してください。
Google Chrome の UserScript は制限が多く、statuses_editor.user.js がまったく動きません。対策としては、ローカルに httpd を起動し、そこの CGI でバイパスして投稿するぐらいしか私は方法を思い付きませんでした。
ただ、そういった CGI を作ってしまえば、単にブログ上への書き込みに特殊なエディタを使っているというだけではなく、将来、独立した「ひとこと」サイトへ移行することも容易になるはずです。
そういった目論見から、
CGI 版を作成してみました。上の方法以上にいろいろ専門知識を必要とするとは思いますが、もし興味がありましたら、ぜひ、 01README.cgi.txt を読んで、そのインストールを試みてください。
ソースは様々なものを「引用」しています。数式的ソース利用として特に言及なく使っています。一部引用したものを含め、参考にしたサイトをいくつか下に示します。なお、特に基本的なものについては、下で言及していないサイトもたくさん参照しています。アーカイブの 00README.txt にはさらに多くの URL を書いてあります。
私自身は Public Domain でいいのですが、上で書いたように発表されたソースの「引用」が多く、また、アバウトミーのレイアウト等を参考にし、さらに、ココログの MovableType テンプレートを基にしているので、その点、留意して使っていただければと思います。
■ |
更新履歴
2011-03-31 |
アバウトミー終了のお知らせが各ユーザーに届く。
|
2011-04-01 |
私の移行準備開始。とりあえずバックアップをとる。
|
2011-04-03 |
とりあえずココログへの移行をしようと実験しはじめる。
|
2011-04-09 |
外向け(訪問者用)の機能はだいたいできあがる。
|
2011-04-15 |
投稿者用機能もだいたいできあがる。
|
2011-04-17 |
|
2011-04-20 |
配布用のスクリプトを書き、このドキュメントを作成。
|
2011-04-23 |
|
2011-04-24 |
「アバウトミーから取得」「アバウトミーからアップデート」の追加。
|
2011-04-26 |
|
2011-04-27 |
|
2011-04-30 |
|
2011-05-01 |
|
2011-05-02 |
|
2011-05-03 |
HeadInfo.template と Notice.template を足す。Firefox でのコピーを alert から textarea に改める。
|
2011-05-06 |
|
2011-05-13 |
|
2011-05-16 |
|
2011-05-19 |
|
2011-05-30 |
|
2011-06-01 |
statuses_editor_proxy.cgi がだいたい完成。01README.cgi.txt を書く。
|
2011-06-03 |
|
2011-06-04 |
|
2011-06-06 |
|
2011-06-06 |
|
2011-06-09 |
|
2011-06-17 |
|
2011-06-24 |
|
2011-06-30 |
アバウトミー終了。
|
2011-07-01 |
|
2012-01-07 |
|
2012-01-12 |
|
2014-09-20 |
|
2014-09-23 |
|
2015-11-06 |
|
2017-11-17 |
|
|
■ |
配布物
|
コメント
大きな更新が入っています。記事の再アップロードは不要ですが、テンプレートはいちおう全部コピペしなおし、再構築してください。(手間かけさせてすみません。)
「アバウトミーからアップデート」機能が入ったので、ギリギリまで続けることに支障がほぼなくなったように思います。
ただ、「アバウトミーからアップデート」機能は、アバウトミーが存続して、バージョンアップでページのフォーマットが変わると、ややこしいことになります。そういった視点で、存続はないと仮定し、statuses_editor.user.js の DISPLAY_UPDATE_BUTTON を 7 月 1 日以降は false にし、それらの機能を表示しないようにしています。(逆に、存続した場合は、そこを true に強制的にするよう書き換えれば、7 月 1 日以降も表示されます。)
ここまで作ってしまえば、アバウトミーには存続していただいたほうが、より多くのユーザーにこのツールを検討する機会ができますし、これから先欲しいと思っているバックアップサイトを探す必要もなくなるので、大変ありがたいのですが…。(^^)
投稿: JRF | 2011-04-26 00:32:25 (JST)
sitemap-part.xml の更新、sitemap-index.xml の追加、DataBasedArchives.html の更新をしてください。再構築はメインテンプレートと月別アーカイブについておこなってください。
投稿: JRF | 2011-04-27 00:23:24 (JST)
IndividualArchives.html と statuses_tools.js が変わっていて、それらを置き換え再構築する必要がある。他のファイルの変更もあるが趣味的なコード部分なので急ぐものではない。
あと、毎度中身を変更している aboutme2cocolog.shar の中身がわかりやすいように URI を書いた 00URI.txt もアーカイブに含めることにした。
投稿: JRF | 2011-04-30 05:09:16 (JST)
http://jrf.cocolog-nifty.com/statuses/ の公開運用開始とともに、サイトマップの登録をしたが、現在、サイトマップは警告を出されている状態で、未だページは登録されていないと書いてある。ただ、サイトマップは以前から登録に時間がかかるものだったので、もう少し様子をみたい。
投稿: JRF | 2011-05-02 19:38:25 (JST)
今回から、config.ph に RATING と NOTICE という変数が足されているのに注意。
HeadInfo.template と Notice.template を足して、ほとんどのテンプレートにそれを書き足した。そのため、テンプレートに関してはすべて書き換え、全体の再構築をする必要がある。
Firefox 等で「コピー」の際 alert に表示するのは、文字数がかなり大きいと途中で切れることがわかったのでポップアップオーバーレイで textarea に表示するようにした。statuses_tools.js と styles.css を変更した。
sidebar.inc で favicon を「プロフィール」リンクの横に表示するようにしたが、私自身 generated/sidebar.inc を書き換えて、別の画像(大きなアイコン)にしている。
statuses_tools.js の日付の切り出しアルゴリズムを見直した。
statuses_editor.user.js で summoner.js を使うように変更。私のサイトのものを使って欲しいと書いたが、リスクを知った上で専用のサーバーを建ててもっと複雑なことをしたいというなら止めない。
なお、前回の更新時には始まってなかったサイトマップのページ登録は、その後(警告は出たままだが)順調にすすんでいる。
投稿: JRF | 2011-05-06 00:32:35 (JST)
投稿: JRF | 2011-05-06 21:42:10 (JST)
copy-overlay の部分を少しいじる。styles.css と statuses_tools.js に変更あり。statuses_tools.js の decorate_div の切り出しルーチンを少し整理。この影響はないはず。sitemap-part.xml で週別アーカイブの priority を上げた。「行修正」機能を足した。これはソースの中では小さな変更だが追加機能としては大きいかな。
Firefox 4.0.1 には Greasemonkey に関わるバグがあり、statuses_editor.user.js の動作確認の際、たまたまそれに出会った。4.0.1 でも動作しているが、私のように alert を使ってデバッグをする人間はそのバグに会うようなので、そうなったら、Firefox を起動しなおすと直るとのこと。
投稿: JRF | 2011-05-13 11:20:58 (JST)
「行修正」機能のおかしな部分を直すため statuses_tools.js に unescape_backslash 関数を書いた。そのとき一瞬、escapeHTML を忘れ、私のサイトで「任意のスクリプト」を実行できるようにしてしまったがすぐに修正。
やはり escape 周りは穴ができやすい。「行修正」機能の「小さな変更」のわりに大きいのは、コードを見ずにマネ(し独自拡張)する人間が陥りやすいセキュリティホールがあるからと言っていいだろう。この点の注意が必要と感じたので、大きな修正ではないが緊急で更新をした。
あと、Aboutme_Jump.js を少しいじってる。
投稿: JRF | 2011-05-16 03:13:40 (JST)
投稿: JRF | 2011-05-16 04:24:26 (JST)
ドキュメントから消えているので、どういう機能があったかというところからはじめると、JavaScript の文字表現にもある \x4B とかちょっと変えた \u{ABCD} とかで、ユニコードを指定できるようにしていた。たとえば、"「" や "→" などが含まれる文字列を修正したいとき困るのだが、これらがあれば、最悪そのコードを入力すれば指定できるようになるという点で便利ではあった。
しかし、さっきの凡ミスによれば、\u{XXX} がどれも \x00 が表示されることになっていたはずで、それがブラウザによって大きく見え方が変わっていた。修正を認めるような信頼しているユーザーにしか書かせないという建前とはいえ、突然、ページの一部を破壊する意志を許してはいけない。…と迷ったがそう決めた。
矢印などの特殊文字だから \c{rightarrow} とか名前で指定できるのだけ認めればいいかとも考えたが、煩雑だ。TRUSTED_USERS の修正や typo だけ反映するというのは、いずれ誰かがやるかやっているだろうが、複数ユーザーをするには XMLRPC の設定を共有するようなこのツールでは必要ない。
だから結局「行」修正というところに帰って、\x と \u の機能は削った。
しかし、そうは言っても、このままならマネする人間の前に穴があいたままだ、だから空文字列 \0 を逆に導入しておいた。C 言語などでは \0 は \x00 のことだが、あえてその定義を違え、"a\0b" == "ab" となるようにした。英語版の→は --> なので例えば --\0> などとすれば文中のそれを指定できるようになる。これにより、似た \x00 を表示してみた者が、そのもたらすリスク、ひいては \x や \u の制御文字のリスクを、その操作的外観から気付けることを、私は狙う。
投稿: JRF | 2011-05-16 06:44:09 (JST)
「trust」「untrust」機能を追加。statuses_editor.user.js をいじれば USER_NAME をたばかることは簡単だから、なんちゃって機能なんだけど、check_auth をまともにする外部の人が現れないとも限らないから、いちおうコードに入れておいた。いじったのは statuses_tools.js と statuses_editor.user.js と styles.css と JavascriptVariables.template。全体の再構築が必要。
あと、上で \c{rightarrow} とか書いたけど \c は制御文字を指示するのに使ってるものがあるから、\u{n:RIGHTWARDS_ARROW} あたりのほうがいいのかな?{} といっしょに使うかぎり \c{} でも大丈夫そうだけど。
投稿: JRF | 2011-05-19 05:58:42 (JST)
trust 機能のスタイルの変更。styles.css と statuses_tools.js を更新。
コピー機能を使うときに、先にロードしてたらロードしないようにしていたが、コピー機能を使うつどロードするようにした。コピー機能を頻繁に使うのはコメンテーターで、コメンテーターはその更新がすぐに反映されたほうがいいだろうから。statuses_tools.js をいじる。
新しい「ひとこと」の投稿時に USER_NAME を反映するように変更。CSS の使えない環境だとさらに余計な情報が表示されるようになった。statuses_editor.user.js と styles.css と statuses_tools.js と aboutme2cocolog.pl を更新。aboutme2cocolog.pl の変更があるが、再投稿の必要は必ずしもない。(私はしない。)不具合としては、将来記事の削除を実装するときにやや問題が出てくるというだけで、今は関係ない。
Firefox 4 の decodeURIComponent のワナにかかった。jumpbydate.html、jumpbyowner.html、jumpbytitle.html を修正。
CSS の見なおし。StatusesTools.template、statuses_tools.js、ColorName.template、styles.css、さらにテンプレートの *.html すべてをいじったので全体の再構築が必要。特に StatusesTools.template に少しコードを足してあるのに注意。ロード終了時の処理の登録を、どこに置くか迷った末にここにコードを足した。
「バージョン 2.0」に向けて……といったことになると思う。実は Google Chrome の UserScript は Greasemonkey よりかなり制限が強く、statuses_editor.user.js が使えないことがわかっている。その対策としてはローカルに httpd を起動するのが有効らしく、現在、そのための CGI を製作している。statuses_editor.user.js は当然メインとして残すが、次回からは CGI 版も付けようかと考えている。
投稿: JRF | 2011-05-30 00:43:20 (JST)
statuses_editor_proxy.cgi、statuses_editor_client.js、statuses_editor_client.css、load_statuses_editor_client.user.js、01README.cgi.txt が新たに付属。
statuses_editor.user.js と statuses_tools.js も少し変更がある。前者はテスト時に共存ができるようにして、後者は、trust、untrust が意味を持ったり、ユーザーの別名を反映したりできるよう拡張されている(cgi がない状況では影響がないようにしてるはず。)。
ただ、「安定版」を求める方は、一つ上の aboutme2cocolog-20110530.shar バージョンを使ったほうがいいかもしれない。
投稿: JRF | 2011-06-03 05:51:41 (JST)
*_proxy.cgi、*_client.js の status まわりの表示、日本語訳を軽くみなおし。01README.cgi.txt に「管理」の項目を簡単に記載…といったところのみ。
投稿: JRF | 2011-06-04 14:31:28 (JST)
CGI 版に「章節の管理」コマンドを足し、「全削除」は、管理者以外、デフォルトではできなくした。*_proxy.cgi、*_client.js、*_client.css、statuses_tools.js を変更。xmlhttprequest 関連のバグ取りにも苦労する。
statuses_editor_proxy.css を足して、管理画面に色を付けた。
投稿: JRF | 2011-06-06 22:59:56 (JST)
「休止中」の章節について、はてなスターコメントに対応するため、お行儀がよくない方法を使う。EntryShort.template、IndividualArchives.html を変更。全体の再構築が必要。
ちょとした変更だが、一つ前のバージョンを入れたついでにテンプレートを置き換えてもらったほうがいいか…ということで、急遽 _2 バージョンを作った。
投稿: JRF | 2011-06-07 00:05:34 (JST)
投稿: JRF | 2011-06-07 09:08:37 (JST)
まず、通常の更新から。*_proxy.cgi、*_proxy.css を変更。「書き換え対象用員の指定」で「用員登記」と「免状の書き換え」の対象となる者を指定すれば、そのデータが読みこまれるようにした。(いつも用員表を見ながらというのは面倒だろうから。)また、「免状」の指定により特定の用員を cleanup の対象から常に外せるようにした。
*.js もほぼすべてちょこちょこといじってる。
そして、問題となる部分。add_user の制限を増やし、本人か 'so' 以外はすでにある ID のログイン先の追加をできなくした。今回、早めのバージョンアップとなったのは、このセキュリティの改善があったため。おそらく以前のポリシーがいいという人はいないだろうから、「緊急」に近いと判断した。
投稿: JRF | 2011-06-09 00:20:48 (JST)
ほぼ唯一の変更点。change_user_id を書き込みがない者についてのみ認めることにした。XMLRPC で管理している領域に書かれた ID については替えるのがとても面倒なので、この制限ポリシーは開発側にとって「自然」なもの。cgi のみ修正。
この次に予定している「大きな変更」は、投稿のスピードアップのため、投稿時に publish&再構築をせず、publish 操作をあとでまとめて行う機構を導入しよう…というもの。cron は使わず、cgi の処理後、いくつかの process が sleep をしてから処理にあたるといった感じにしようと考えている。
ただ、まだそのプログラムにはとりかかっていない。sleep してから処理にあたるのは 1 つのプロセスで行ったほうがよく、それが効率的かつ頑健であるためには(私にとっては)複雑な排他制御が必要になる。
これが正しく動くことを「証明」したいと思ったが、lock が重なる場合などを総当り的にエミュレートするプログラムを作ってみたいと前々から思っていたこともあり、そういう総当りエミュレート用のちょっとしたプログラムを書くという作業を、今、行っていて時間を食ってる。(『バーチャファイター5 Live Arena』を買って遊んでいたというのもあるが、それは、エミュレートプログラムがなかなか完成しないことの現実逃避みたいなもの(^^;)。)
実装は、それですぐエミューレートできるぐらい簡単なものでもないから、どこかでエミュレーションの研究に区切りをつけて、publish 処理の開発に戻るつもりではある。が、もう少し時間をかけたいので、前のバージョンアップから1週間経ってることもあり、とにかく、今のバージョンを出しておこうとアップしたのが今回のバージョン。
今回のは「安定版」というわけではないけれども、この次はとても不安定になる可能性が高い。
投稿: JRF | 2011-06-17 19:44:22 (JST)
まず、準備として、statses_tools.js と IndividualArchives.html を更新。個別アーカイブの再構築の必要あり。コメント欄を開く処理で escape がらみを少しまともにした。
そしてメインの CGI について。PUBLISH をプロセスを残して一本のラインで行うという大きな変更を行った。すでに動いていたなら実はこの変更は大きなお世話なのかもしれないが、それに付随して行った、できるだけ proxy 経由で記事を読んだり、「章節の開削」をしたあと、すぐに画面に反映したりする…といった変更は、PUBLISH の変更がイヤな方にも望まれていたものかもしれない。そういった方または PUBLISH 処理がうまく動いてなさげな方は、 $DELAY_PUBLISH と $DELAY_NEED_FORK の値をともに 0 にすればいいだろう。statuses_editor_proxy.cgi と statuses_editor_client.js と 01README.cgi.txt を変更。
…ところで、aboutme の終了予定日がまもなくとなってまいりました。どうなることやら、わかりませんが、とにかく、終了予定日後にも一度は更新をします。
投稿: JRF | 2011-06-24 03:59:49 (JST)
delete_entry に関しては publish ラインを一本にできてない。
set_categories に関しても、(昔はそうでなかったように記憶してるのだが、)set_categories は自動的に publish をやるらしく、publish ラインが一本になっているわけではない。ただ、set_categories のほうは、プロキシ側の publish ラインが一本であるというのを信じて、自動的に publish をなさなくなっても問題はない(と思う)。
しかし、delete_entry に関しては、消したエントリを publish するわけにもいかず、ラインが一本であるという仮定で使うことはできない。このあたりは、XMLRPC を提供する CMS 側に(ココログが今やってるように)何とかしてもらうしかない。
投稿: JRF | 2011-06-24 23:14:17 (JST)
サーバー側での「効率化」に備えて $DATE 関連を少しいじろうかと考えたが、「ワナ」だと考えるようになってやめた。
sedit_get_entry だと休止中でも記事が取得できる穴を封じた。cgi を変更。
ColorName_brown.template と ColorName_pinktiger.template をサンプルとして配布物に含めるようにし、00README.txt にそのことを書き足した。絵のバイナリは含まず、私のサイトのものを使うように書いている。
2011年6月30日、アバウトミーが予定どおり終了。それに伴う作業をした。
jumpbytitle.html で cocolog: ではじまるものは 2011年4月以降、aboutme: ではじまるものは 2011年7月までのもののみ検索対象となるようにした。
大きな不具合でもなければ更新しないつもりで、今回は、2011-05-30 バージョンと同じく、zip も作っておいた。今後の更新は、少なくともこれまでのような頻度では行わなくするつもり。他のことに集中したい。
投稿: JRF | 2011-07-01 03:18:35 (JST)
さしあたりアーカイブにせず、statuses_tools.js を置き換えた。もうしばらく待って次のアーカイブに含める。
投稿: JRF | 2011-07-04 13:13:28 (JST)
二つの pl の使い方は《ブログのバックアップ&「ひとこと」のクロスリファレンス》を参照のこと。
投稿: JRF | 2012-01-07 14:39:44 (JST)
さっき、見つけた jumpbytitle.html のバグを取った。これのみテンプレートの「反映」の必要あり。
投稿: JRF | 2012-01-12 17:23:00 (JST)
さしあたりアーカイブにせず、statuses_tools.js だけ置き換えた。
投稿: JRF | 2012-02-15 00:14:10 (JST)
さしあたりアーカイブにせず、statuses_tools.js だけ置き換えた。
投稿: JRF | 2012-02-24 00:40:46 (JST)
さっき、見つけた jumpbytitle.html のバグを取った。これのみテンプレートの「反映」の必要あり。
何の因果か1月12日と同じような感じ。
投稿: JRF | 2012-12-01 06:29:40 (JST)
jumpbytitle.html のみテンプレートの「反映」の必要あり。
また、先のバージョンでは、dump_blog.pl を少しアップデートし、トラックバックに関して保存する情報を追加したりしていた。
投稿: JRF | 2012-12-06 13:59:00 (JST)
Firefox 17 から Greasemonkey に E4X が使えなくなったらしく(参:[cocolog:74918848])、それに対応した。
投稿: JRF | 2012-12-12 17:56:01 (JST)
Firefox 32.0.1 から突然、Greasemonkey などへの Permission がキツくなったため、それに対応した。CGI とか他の機能は試してない。
投稿: JRF | 2014-09-20 08:40:26 (JST)
投稿: JRF | 2014-09-20 09:04:21 (JST)
まだ、バグの再現性を見つけておらず、バグがどこで発生してるか推測できてないので、バグ取りには時間がかかるかもしれない。
投稿: JRF | 2014-09-22 17:19:59 (JST)
バグの再現はあまりできなかったが、「ここかな」というのに気付いたので少し修正。ちょっとはマシになったはず。
投稿: JRF | 2014-09-23 07:35:13 (JST)
ルビを付けるとき、「々」と「〆」に対応。ライセンス等は最近は新しい文を使っているが、変更が軽微なため、あえて変えなかった。
投稿: JRF | 2015-11-06 00:56:32 (JST)
Greasemonkey 4.0 に対応するための緊急リリース。最近はライセンスをこのころのものとは違うものにしているのだが、緊急リリースのためそのまま。
投稿: JRF | 2017-11-17 06:17:10 (JST)