陽光百科遷移計劃

出自阳光百科
在2013年8月10日 (六) 10:02由Chaosconst對話 | 貢獻所做的修訂版本

跳轉到: 導覽搜尋

時間線(8月1日進行調整,整體延期一周)

  • 8月10日導入標準頁面(課程總結、課程提綱、學生課堂表現)(混沌)
  • 8月10日導入非標準頁面 (xiansweety)
  • 8月12日界面調試完畢
  • 8月15日舊百科進入只讀模式,www.ygclub.org/wiki指向新百科

待完成任務列表

  1. 導入總結帖、助教總結、學生課堂表現
  2. 總結帖、助教反饋、學生表現關聯
  3. 非標準頁面導入
  4. 圖像的導入(任務9代替之)
  5. 不同課程用不同的logo
  6. 一個定製的皮膚( http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles)
  7. 導入層級類目體系(用template代替之)
  8. 採用類目體系來組織多次上過的課程和正在開發的課程
  9. 維持對舊百科的鏈接兼容性
  10. 解析tags

互動百科導入維基百科數據的關鍵點

互動百科的數據格式:html

互動百科的數據格式保存的形式是html,在資料庫中位於表wiki_doc中

Hdwiki資料庫.png

其中,我們需要title, tags, summary和content。

而content裡面的內容是html格式,mediawiki對其並非完全支持,我們需要對它進行處理。

維基百科的數據格式:wiki markup

維基源代碼的格式點擊本頁右上角編輯源代碼可以看到。

維基百科的數據格式和html部分相容

比如如下一段話,源代碼其實是比較複雜的html,但是維基仍然可以比較好的解析:

英文歌詞

A hunting we will go, a hunting we will go,
Heigh ho, the dairy-o, a hunting we will go!
A hunting we will go, a hunting we will go,
We'll catch a fox and put him in a box,
And then we'll let him go!

A hunting we will go, a hunting we will go,
Heigh ho, the dairy-o, a hunting we will go!
A hunting we will go, a hunting we will go,
We'll catch a fish and put him on a dish,
And then we'll let him go!

A hunting we will go, a hunting we will go,
Heigh ho, the dairy-o, a hunting we will go!
A hunting we will go, a hunting we will go,
We'll catch a bear and cut his hair,
And then we'll let him go!

A hunting we will go, a hunting we will go,
Heigh ho, the dairy-o, a hunting we will go!
A hunting we will go, a hunting we will go,
We'll catch a pig and dance a little jig,
And then we'll let him go!

A hunting we will go, a hunting we will go,
Heigh ho, the dairy-o, a hunting we will go!
A hunting we will go, a hunting we will go,
We'll catch a giraffe and make him laugh,
And then we'll let him go!

中文歌詞
空缺(9月28號完成--宜軒)
多媒體
空缺(10月左右完成--宜軒)

維基百科的圖片和鏈接與html不相容

當出現鏈接和圖片的時候,需要進行轉換才能正常顯示。 也就是<img>標籤以及<a>標籤,維基百科是不支持的。

  • <img>標籤的處理,維基百科支持的是直接輸入圖片的鏈接地址,比如 logo.gif
  • <a> 標籤的處理,維基百科支持的如下的語法 鏈接

hdwiki和mediawiki表格嚴重不兼容

表格需要另外想辦法處理,兩邊非常不兼容,所以陽光百科的課程總結、上課準備提綱都有專門的程序轉換,這裡只考慮非標準頁面(不是課程提綱、總結、學生課堂表現)的頁面。

頁面二級標題轉換

<div class="hdwiki_tmml">第一条、总则</div> 

轉換為

==第一条、总则==

使得頁面原來的結構得以保留

理想的效果

針對每一個hdwiki的頁面(現在大概800個),都生成一個對應的wiki markup的文本文件。

新舊百科兼容性

這裡討論遷移完成後的兼容性

數據兼容性

鏈接兼容性

  • 訪問舊百科鏈接諸如http://www.ygclub.org/wiki/index.php?doc-view-71.html頁面時,跳轉到http://www.ygclub.org/hdwiki/index.php?doc-view-71.html
  • 舊百科圖片鏈接地址保持相容
  • 舊百科所有頁面顯示只讀和過期信息,建議大家使用新百科
  • 半年內新百科首頁顯著標出舊版本地址

上線步驟

  1. hdwiki設為只讀(混沌)
  2. 導出hdwiki數據
    1. 導出總結帖:SELECT did,`views`,`edits`,author,title,summary,tag,content FROM `wiki_doc` WHERE title like '%課程總結%' and content like '%課程回顧%' and content like '%第一次活動%' limit 1,300;
    2. 導出助教反饋:SELECT did,author,title,summary,content FROM wiki_doc WHERE title like "%-助教反饋%" limit 1, 300;
  3. 運行轉換程序
    1. dos2unix
    2. scripts/clean.sh
    3. hdwiki2mediawiki.*.py
    4. cp -r output data
    5. import.*.sh
  4. 寫入新頁面
  5. mediawiki可用性冒煙測試
  6. /var/www/www.ygclub.org/wiki 更改為 /var/www/www.ygclub.org/hdwiki
  7. /var/www/www.ygclub.org/mediawiki 更改為 /var/www/www.ygclub.org/wiki
  8. 複製hdwiki的uploads目錄到wiki
  9. 鏈接兼容性冒煙測試

回滾方案

  1. /var/www/www.ygclub.org/wiki 更改為 /var/www/www.ygclub.org/mediawiki
  2. /var/www/www.ygclub.org/hdwiki 更改為 /var/www/www.ygclub.org/wiki

你的看法