「利用者:Ochaochaocha3/Hiki2MediaWiki for SRW Wiki」の版間の差分

(→‎URI: URLを更新。)
 
(同じ利用者による、間の22版が非表示)
1行目: 1行目:
「Hiki2MediaWiki for SRW Wiki」は、記事移植の際に必要なHiki書式からMediaWiki書式への変換を行うコンバータです。JavaScriptを用いて、旧wikiの記事「[http://hiki.cre.jp/SRW/?ConvertingHikiFormatToMediawikiFormat Hiki書式からMediawiki書式への変換]」に従った変換を自動で行います。記事移植の効率化に役立てていただければ幸いです。
+
「Hiki2MediaWiki for SRW Wiki」は、記事移植の際に必要な Hiki 書式からMediaWiki書式への変換を行うコンバータです。JavaScriptを用いて、旧wikiの記事「[http://hiki.cre.jp/SRW/?ConvertingHikiFormatToMediawikiFormat Hiki書式からMediawiki書式への変換]」に従った変換を自動で行います。記事移植の効率化に役立てていただければ幸いです。
  
 
使い方などについての質問は[[利用者・トーク:Ochaochaocha3|トークページ]]にてお願いいたします。
 
使い方などについての質問は[[利用者・トーク:Ochaochaocha3|トークページ]]にてお願いいたします。
  
 
== URI ==
 
== URI ==
http://www.li-sa.net/ocha3/hiki2mw/
+
;コンバータ
 +
:http://www.li-sa.jp/ocha3/hiki2mw/srw/
 +
;GitHubレポジトリ
 +
:https://github.com/ochaochaocha3/hiki2mw-srw
  
 
== 動作環境 ==
 
== 動作環境 ==
Firefox、Google Chrome、Safariの最新版、Internet Explorer 8以上を推奨します。また、JavaScriptを有効にしてください。
+
Firefox、Google Chrome、Safariの最新版、Internet Explorer 9 以上を推奨します。また、JavaScriptを有効にしてください。
  
Internet Explorer 7以下ではレイアウトが乱れるようです。
+
Internet Explorer 7 以下ではレイアウトが乱れるようです。
  
 
制作時は基本的にFirefoxの最新版を確認に用いています。最終的な動作確認は、上記ブラウザの最新版で行っています。
 
制作時は基本的にFirefoxの最新版を確認に用いています。最終的な動作確認は、上記ブラウザの最新版で行っています。
  
 
== 機能・特徴 ==
 
== 機能・特徴 ==
*以下の要素のHiki書式からMediaWiki書式への変換
+
[https://github.com/ochaochaocha3/hiki2mw-srw GitHubレポジトリ]のREADMEをご参照ください。
**見出し
 
**表
 
**定義リスト(:用語:説明)
 
**URIリンク
 
**別名リンク(<nowiki>[[A|B]]</nowiki>)
 
**強制改行(<nowiki>{{br}}</nowiki>)
 
**Amazonリンク
 
**コメント行
 
*不要要素の削除
 
**<nowiki>{{toc}}</nowiki>など
 
*見出しレベルを順次下降するように調整する機能
 
**有効/無効設定可
 
*ブラウザのJavaScriptエンジンを使用する、クライアント側での完全実行
 
**入力されたソースは、ネットワーク上には一切送信されない
 
  
 
== 更新履歴 ==
 
== 更新履歴 ==
*2012年6月17日(Ver. 1.3.1)
+
最新版は '''ver. 2.2.3''' (2013年3月10日更新)です。
**匿名URIリンクの変換を正しく行うよう修正。
+
 
**MediaWiki書式のソースをフォーカス時に選択状態にする機能を追加。
+
詳細は、コンバータ付属の[http://www.li-sa.jp/ocha3/hiki2mw/changelog.html 更新履歴ページ]をご参照ください。
**リファクタリング。変換部と制御部を独立化。
+
 
*2012年6月7日(Ver. 1.3)
+
== 技術的メモ ==
**表の変換に対応。
+
 
*2012年5月30日(Ver. 1.2.2)
+
=== 見出しレベル調整の速度 ===
**強制改行(<nowiki>{{br}}</nowiki>)が正しく変換されない点を修正。
+
ランダムなレベルの見出し100,000個の変換に要した時間を、Firebug 1.10.0のプロファイル機能を用いて測定した。表記がない場合、単位はms。
*2012年5月29日(Ver. 1.2.1)
+
 
**UIを改良。
+
環境はCore2 Quad Q9550、メモリ4 GB、Ubuntu 12.04 x64、Firefox 14.0.1。
**配列の処理方法を改良。
+
 
*2012年5月27日(Ver. 1.2)
+
==== <code>investigateHeadings()</code>(ver. 2.0.1以前) ====
**URIリンクの変換に対応。
+
 
**URIリンクを含む定義リストの変換に関するバグを修正。
+
{| class="wikitable"
**見出しレベルの調整機能を改良。
+
|-
*2012年5月17日(Ver. 1.1)
+
! 関数 / # !! 1 !! 2 !! 3
**Amazonリンクの変換に関するバグを修正。
+
|-
**アップロード場所を変更。直接使用可能に。
+
! 全体時間
**現在未対応の、表の書式変換を行うプログラムを書いています。オーソドックスな見出し行+通常行の表の変換は可能になりました。今後、見出し列や、行・列の結合に対応させたいと考えているところです。
+
| style="text-align: right" | 1495 || style="text-align: right" | 1495 || style="text-align: right" | 1485
*2012年5月7日(Ver. 1.0)
+
|-
**初公開。
+
! 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

関数呼び出しのオーバーヘッドがなくなり、処理が速くなった。