「利用者:Ochaochaocha3/Hiki2MediaWiki for SRW Wiki」の版間の差分
Ochaochaocha3 (トーク | 投稿記録) (→更新履歴) |
Ochaochaocha3 (トーク | 投稿記録) |
||
181行目: | 181行目: | ||
|} | |} | ||
− | 同じアルゴリズムだが、従来の<code>investigateHeadings()</code>より若干速いくらいまで速度が上がった。特に<code>appendTo()</code>に要する時間が劇的に短くなった。配列への追加は非常に高速。 | + | 同じアルゴリズムだが、従来の <code>investigateHeadings()</code> より若干速いくらいまで速度が上がった。特に <code>appendTo()</code> に要する時間が劇的に短くなった。配列への追加は非常に高速。 |
+ | |||
+ | ==== 幅優先探索(配列、関数呼び出しなし)(ver. 2.0.3) ==== | ||
+ | |||
+ | 変更点は、<code>headingsBFS()</code> 中にコールバック関数の処理を直接記述し、関数呼び出しをなくしたことのみ。 | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! 関数 / # !! 1 !! 2 !! 3 | ||
+ | |- | ||
+ | ! 全体時間 | ||
+ | | style="text-align: right" | 1282 || style="text-align: right" | 1377 || style="text-align: right" | 1342 | ||
+ | |- | ||
+ | ! l149: <code>appendTo()</code> | ||
+ | | style="text-align: right" | 59 || style="text-align: right" | 58 || style="text-align: right" | 55 | ||
+ | |- | ||
+ | ! l156: <code>newHeading()</code> | ||
+ | | style="text-align: right" | 431 || style="text-align: right" | 465 || style="text-align: right" | 476 | ||
+ | |- | ||
+ | ! l174: <code>appendHeading()</code> | ||
+ | | style="text-align: right" | 124 || style="text-align: right" | 123 || style="text-align: right" | 120 | ||
+ | |- | ||
+ | ! l195: <code>headingsBFS()</code> | ||
+ | | style="text-align: right" | 120 || style="text-align: right" | 125 || style="text-align: right" | 123 | ||
+ | |- | ||
+ | ! l459: <code>convertLineByLine()</code> | ||
+ | | style="text-align: right" | 1047 || style="text-align: right" | 1078 || style="text-align: right" | 1086 | ||
+ | |} | ||
+ | |||
+ | 関数呼び出しのオーバーヘッドがなくなり、処理が速くなった。 |
2012年8月2日 (木) 12:39時点における版
「Hiki2MediaWiki for SRW Wiki」は、記事移植の際に必要なHiki書式からMediaWiki書式への変換を行うコンバータです。JavaScriptを用いて、旧wikiの記事「Hiki書式からMediawiki書式への変換」に従った変換を自動で行います。記事移植の効率化に役立てていただければ幸いです。
使い方などについての質問はトークページにてお願いいたします。
URI
http://www.li-sa.net/ocha3/hiki2mw/
動作環境
Firefox、Google Chrome、Safariの最新版、Internet Explorer 9 以上を推奨します。また、JavaScriptを有効にしてください。
Internet Explorer 7 以下ではレイアウトが乱れるようです。
制作時は基本的にFirefoxの最新版を確認に用いています。最終的な動作確認は、上記ブラウザの最新版で行っています。
機能・特徴
- 以下の要素のHiki書式からMediaWiki書式への変換
- 見出し
- 表
- 定義リスト(:用語:説明)
- URIリンク
- パイプ付きリンク([[A|B]])
- 取消線(== 〜 ==)
- 強制改行({{br}})
- Amazonリンク
- 整形済みテキスト(行頭がスペースまたはタブ。<<< 〜 >>> には現在は未対応)
- 引用(行頭が "")
- コメント行
- 不要要素の削除
- {{toc}}など
- 見出しレベル調整
- 見出しレベルを順次下降するように調整
- リンク解析
- リンク切れが生じやすい「英字名ページへのリンク」、「WikiName」、「括弧を含む名前のページへのリンク」の一覧表示
- 有効/無効設定可
- ブラウザのJavaScriptエンジンを使用する、クライアント側での完全実行
- 入力されたソースは、ネットワーク上には一切送信されない
更新履歴
- 2012年8月2日(Ver. 2.0.3)
- 見出しレベル調整の速度向上。
- 2012年7月31日(Ver. 2.0.2)
- 見出しレベル調整のアルゴリズムを変更。
- これに伴い、「先頭の見出し1(!)を削除する」と「見出しレベルを調整する」のオプション設定は不可能になりました。
- URIリンクを含む定義リストの変換に関するバグ(再発)を修正。
- 見出しレベル調整のアルゴリズムを変更。
- 2012年7月7日(Ver. 2.0.1)
- 表の行末に空列を生成しないよう修正。
- コメントアウトされた見出しも(コメントアウトされたまま)変換するよう変更。
- 2012年6月29日(Ver. 2.0)
- リンク解析機能を追加。
- リンク切れが生じやすい「英字名ページへのリンク」、「WikiName」、「括弧を含む名前のページへのリンク」を一覧表示します(有効/無効設定可)。
- 英字名ページへのリンク、WikiNameには旧wiki上のページへのリンクが設定されるため、リンク先を1クリックで確認することができます。
- 対応書式を追加。
- 整形済みテキスト(行頭がスペースまたはタブ。<<< 〜 >>> には現在は未対応)
- 取消線(== 〜 ==)
- 引用(行頭が "")
- 動作に関する設定を保存する機能を追加。
- Cookieを使用します。
- MediaWiki書式のソースの整形機能を改良。
- 整形済みテキスト、見出し、引用、表の前に空行を入れる(ソースの可読性の向上)。
- コメント行の前の空行を除く(MediaWiki上での余分な空白の表示を防ぐ)。
- 見出し内の全角括弧の前の余分な空白を除く。
- リンク解析機能を追加。
- 2012年6月21日(Ver. 1.3.3)
- UIを変更。
- 2012年6月21日(Ver. 1.3.2)
- MediaWiki書式の見出しのレベルを2以下にするよう修正。
- 2012年6月17日(Ver. 1.3.1)
- 匿名URIリンクの変換を正しく行うよう修正。
- MediaWiki書式のソースをフォーカス時に選択状態にする機能を追加。
- リファクタリング。変換部と制御部を独立化。
- 2012年6月7日(Ver. 1.3)
- 表の変換に対応。
- 2012年5月30日(Ver. 1.2.2)
- 強制改行({{br}})が正しく変換されない点を修正。
- 2012年5月29日(Ver. 1.2.1)
- UIを改良。
- 配列の処理方法を改良。
- 2012年5月27日(Ver. 1.2)
- URIリンクの変換に対応。
- URIリンクを含む定義リストの変換に関するバグを修正。
- 見出しレベルの調整機能を改良。
- 2012年5月17日(Ver. 1.1)
- Amazonリンクの変換に関するバグを修正。
- アップロード場所を変更。直接使用可能に。
- 現在未対応の、表の書式変換を行うプログラムを書いています。オーソドックスな見出し行+通常行の表の変換は可能になりました。今後、見出し列や、行・列の結合に対応させたいと考えているところです。
- 2012年5月7日(Ver. 1.0)
- 初公開。
技術的メモ
見出しレベル調整の速度
ランダムなレベルの見出し100,000個の変換に要した時間を、Firebug 1.10.0のプロファイル機能を用いて測定した。表記がない場合、単位はms。
環境はCore2 Quad Q9550、メモリ4 GB、Ubuntu 12.04 x64、Firefox 14.0.1。
investigateHeadings()
(ver. 2.0.1以前)
関数 / # | 1 | 2 | 3 |
---|---|---|---|
全体時間 | 1495 | 1495 | 1485 |
l153: hasDescendants()
|
59 | 59 | 59 |
hasDescendants() の回数/回
|
244471 | 244567 | 244606 |
l156: hasChildren()
|
26 | 26 | 26 |
l160: newHeading()
|
167 | 169 | 177 |
l169: investigateHeadings()
|
198 | 198 | 198 |
l233: adjustHeadingLevel()
|
79 | 80 | 78 |
l281: convertHeadings()
|
276 | 276 | 274 |
l494: convertLineByLine()
|
1231 | 1226 | 1236 |
処理速度は実用的だが、hasDescendants()
の呼び出し回数が無駄に多い。
幅優先探索(リスト構造)(ver. 2.0.2試作)
関数 / # | 1 | 2 | 3 |
---|---|---|---|
全体時間 | 7022 | 7026 | 7166 |
l155: appendTo()
|
5422 | 5360 | 5518 |
l173: newHeading()
|
445 | 458 | 461 |
l190: appendHeading()
|
5491 | 5432 | 5586 |
l229: headingsBFS()
|
436 | 434 | 436 |
l469: convertLineByLine()
|
6764 | 6718 | 6878 |
アルゴリズムに無駄がなくなったが、非常に遅くなった。JavaScriptではオブジェクトメンバへのアクセスが遅いことが原因?
幅優先探索(配列)(ver. 2.0.2)
関数 / # | 1 | 2 | 3 |
---|---|---|---|
全体時間 | 1479 | 1379 | 1442 |
l154: appendTo()
|
59 | 56 | 57 |
l164: newHeading()
|
398 | 411 | 427 |
l183: appendHeading()
|
130 | 125 | 124 |
l222: headingsBFS()
|
278 | 258 | 258 |
l467: convertLineByLine()
|
1178 | 1149 | 1182 |
同じアルゴリズムだが、従来の investigateHeadings()
より若干速いくらいまで速度が上がった。特に appendTo()
に要する時間が劇的に短くなった。配列への追加は非常に高速。
幅優先探索(配列、関数呼び出しなし)(ver. 2.0.3)
変更点は、headingsBFS()
中にコールバック関数の処理を直接記述し、関数呼び出しをなくしたことのみ。
関数 / # | 1 | 2 | 3 |
---|---|---|---|
全体時間 | 1282 | 1377 | 1342 |
l149: appendTo()
|
59 | 58 | 55 |
l156: newHeading()
|
431 | 465 | 476 |
l174: appendHeading()
|
124 | 123 | 120 |
l195: headingsBFS()
|
120 | 125 | 123 |
l459: convertLineByLine()
|
1047 | 1078 | 1086 |
関数呼び出しのオーバーヘッドがなくなり、処理が速くなった。