「利用者:Ochaochaocha3/Hiki2MediaWiki for SRW Wiki」の版間の差分
Ochaochaocha3 (トーク | 投稿記録) |
Ochaochaocha3 (トーク | 投稿記録) (→URI: URLを更新。) |
||
(同じ利用者による、間の22版が非表示) | |||
1行目: | 1行目: | ||
− | 「Hiki2MediaWiki for SRW | + | 「Hiki2MediaWiki for SRW Wiki」は、記事移植の際に必要な Hiki 書式からMediaWiki書式への変換を行うコンバータです。JavaScriptを用いて、旧wikiの記事「[http://hiki.cre.jp/SRW/?ConvertingHikiFormatToMediawikiFormat Hiki書式からMediawiki書式への変換]」に従った変換を自動で行います。記事移植の効率化に役立てていただければ幸いです。 |
使い方などについての質問は[[利用者・トーク:Ochaochaocha3|トークページ]]にてお願いいたします。 | 使い方などについての質問は[[利用者・トーク:Ochaochaocha3|トークページ]]にてお願いいたします。 | ||
== URI == | == URI == | ||
− | http://www.li-sa. | + | ;コンバータ |
+ | :http://www.li-sa.jp/ocha3/hiki2mw/srw/ | ||
+ | ;GitHubレポジトリ | ||
+ | :https://github.com/ochaochaocha3/hiki2mw-srw | ||
== 動作環境 == | == 動作環境 == | ||
− | Firefox、Google Chrome、Safariの最新版、Internet Explorer | + | Firefox、Google Chrome、Safariの最新版、Internet Explorer 9 以上を推奨します。また、JavaScriptを有効にしてください。 |
− | Internet Explorer | + | Internet Explorer 7 以下ではレイアウトが乱れるようです。 |
制作時は基本的にFirefoxの最新版を確認に用いています。最終的な動作確認は、上記ブラウザの最新版で行っています。 | 制作時は基本的にFirefoxの最新版を確認に用いています。最終的な動作確認は、上記ブラウザの最新版で行っています。 | ||
== 機能・特徴 == | == 機能・特徴 == | ||
− | + | [https://github.com/ochaochaocha3/hiki2mw-srw GitHubレポジトリ]のREADMEをご参照ください。 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== 更新履歴 == | == 更新履歴 == | ||
− | + | 最新版は '''ver. 2.2.3''' (2013年3月10日更新)です。 | |
− | + | ||
− | + | 詳細は、コンバータ付属の[http://www.li-sa.jp/ocha3/hiki2mw/changelog.html 更新履歴ページ]をご参照ください。 | |
− | + | ||
− | + | == 技術的メモ == | |
− | + | ||
− | + | === 見出しレベル調整の速度 === | |
− | + | ランダムなレベルの見出し100,000個の変換に要した時間を、Firebug 1.10.0のプロファイル機能を用いて測定した。表記がない場合、単位はms。 | |
− | + | ||
− | + | 環境はCore2 Quad Q9550、メモリ4 GB、Ubuntu 12.04 x64、Firefox 14.0.1。 | |
− | + | ||
− | + | ==== <code>investigateHeadings()</code>(ver. 2.0.1以前) ==== | |
− | + | ||
− | + | {| class="wikitable" | |
− | + | |- | |
− | + | ! 関数 / # !! 1 !! 2 !! 3 | |
− | + | |- | |
− | + | ! 全体時間 | |
− | + | | style="text-align: right" | 1495 || style="text-align: right" | 1495 || style="text-align: right" | 1485 | |
− | + | |- | |
− | + | ! l153: <code>hasDescendants()</code> | |
+ | | style="text-align: right" | 59 || style="text-align: right" | 59 || style="text-align: right" | 59 | ||
+ | |- | ||
+ | ! <code>hasDescendants()</code> の回数/回 | ||
+ | | style="text-align: right" | 244471 || style="text-align: right" | 244567 || style="text-align: right" | 244606 | ||
+ | |- | ||
+ | ! l156: <code>hasChildren()</code> | ||
+ | | style="text-align: right" | 26 || style="text-align: right" | 26 || style="text-align: right" | 26 | ||
+ | |- | ||
+ | ! l160: <code>newHeading()</code> | ||
+ | | style="text-align: right" | 167 || style="text-align: right" | 169 || style="text-align: right" | 177 | ||
+ | |- | ||
+ | ! l169: <code>investigateHeadings()</code> | ||
+ | | style="text-align: right" | 198 || style="text-align: right" | 198 || style="text-align: right" | 198 | ||
+ | |- | ||
+ | ! l233: <code>adjustHeadingLevel()</code> | ||
+ | | style="text-align: right" | 79 || style="text-align: right" | 80 || style="text-align: right" | 78 | ||
+ | |- | ||
+ | ! l281: <code>convertHeadings()</code> | ||
+ | | style="text-align: right" | 276 || style="text-align: right" | 276 || style="text-align: right" | 274 | ||
+ | |- | ||
+ | ! l494: <code>convertLineByLine()</code> | ||
+ | | style="text-align: right" | 1231 || style="text-align: right" | 1226 || style="text-align: right" | 1236 | ||
+ | |} | ||
+ | |||
+ | 処理速度は実用的だが、<code>hasDescendants()</code> の呼び出し回数が無駄に多い。 | ||
+ | |||
+ | ==== 幅優先探索(リスト構造)(ver. 2.0.2試作) ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! 関数 / # !! 1 !! 2 !! 3 | ||
+ | |- | ||
+ | ! 全体時間 | ||
+ | | style="text-align: right" | 7022 || style="text-align: right" | 7026 || style="text-align: right" | 7166 | ||
+ | |- | ||
+ | ! l155: <code>appendTo()</code> | ||
+ | | style="text-align: right" | 5422 || style="text-align: right" | 5360 || style="text-align: right" | 5518 | ||
+ | |- | ||
+ | ! l173: <code>newHeading()</code> | ||
+ | | style="text-align: right" | 445 || style="text-align: right" | 458 || style="text-align: right" | 461 | ||
+ | |- | ||
+ | ! l190: <code>appendHeading()</code> | ||
+ | | style="text-align: right" | 5491 || style="text-align: right" | 5432 || style="text-align: right" | 5586 | ||
+ | |- | ||
+ | ! l229: <code>headingsBFS()</code> | ||
+ | | style="text-align: right" | 436 || style="text-align: right" | 434 || style="text-align: right" | 436 | ||
+ | |- | ||
+ | ! l469: <code>convertLineByLine()</code> | ||
+ | | style="text-align: right" | 6764 || style="text-align: right" | 6718 || style="text-align: right" | 6878 | ||
+ | |} | ||
+ | |||
+ | アルゴリズムに無駄がなくなったが、非常に遅くなった。JavaScriptではオブジェクトメンバへのアクセスが遅いことが原因? | ||
+ | |||
+ | ==== 幅優先探索(配列)(ver. 2.0.2) ==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! 関数 / # !! 1 !! 2 !! 3 | ||
+ | |- | ||
+ | ! 全体時間 | ||
+ | | style="text-align: right" | 1479 || style="text-align: right" | 1379 || style="text-align: right" | 1442 | ||
+ | |- | ||
+ | ! l154: <code>appendTo()</code> | ||
+ | | style="text-align: right" | 59 || style="text-align: right" | 56 || style="text-align: right" | 57 | ||
+ | |- | ||
+ | ! l164: <code>newHeading()</code> | ||
+ | | style="text-align: right" | 398 || style="text-align: right" | 411 || style="text-align: right" | 427 | ||
+ | |- | ||
+ | ! l183: <code>appendHeading()</code> | ||
+ | | style="text-align: right" | 130 || style="text-align: right" | 125 || style="text-align: right" | 124 | ||
+ | |- | ||
+ | ! l222: <code>headingsBFS()</code> | ||
+ | | style="text-align: right" | 278 || style="text-align: right" | 258 || style="text-align: right" | 258 | ||
+ | |- | ||
+ | ! l467: <code>convertLineByLine()</code> | ||
+ | | style="text-align: right" | 1178 || style="text-align: right" | 1149 || style="text-align: right" | 1182 | ||
+ | |} | ||
+ | |||
+ | 同じアルゴリズムだが、従来の <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 | ||
+ | |} | ||
+ | |||
+ | 関数呼び出しのオーバーヘッドがなくなり、処理が速くなった。 |
2013年4月19日 (金) 11:58時点における最新版
「Hiki2MediaWiki for SRW Wiki」は、記事移植の際に必要な Hiki 書式からMediaWiki書式への変換を行うコンバータです。JavaScriptを用いて、旧wikiの記事「Hiki書式からMediawiki書式への変換」に従った変換を自動で行います。記事移植の効率化に役立てていただければ幸いです。
使い方などについての質問はトークページにてお願いいたします。
URI[編集 | ソースを編集]
- コンバータ
- http://www.li-sa.jp/ocha3/hiki2mw/srw/
- GitHubレポジトリ
- https://github.com/ochaochaocha3/hiki2mw-srw
動作環境[編集 | ソースを編集]
Firefox、Google Chrome、Safariの最新版、Internet Explorer 9 以上を推奨します。また、JavaScriptを有効にしてください。
Internet Explorer 7 以下ではレイアウトが乱れるようです。
制作時は基本的にFirefoxの最新版を確認に用いています。最終的な動作確認は、上記ブラウザの最新版で行っています。
機能・特徴[編集 | ソースを編集]
GitHubレポジトリのREADMEをご参照ください。
更新履歴[編集 | ソースを編集]
最新版は ver. 2.2.3 (2013年3月10日更新)です。
詳細は、コンバータ付属の更新履歴ページをご参照ください。
技術的メモ[編集 | ソースを編集]
見出しレベル調整の速度[編集 | ソースを編集]
ランダムなレベルの見出し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 |
関数呼び出しのオーバーヘッドがなくなり、処理が速くなった。