2021. 5. 14. 11:24ㆍ업무관련
Open source wiki first experience - JSPWiki, XWiki, MediaWiki comparison
tags: data structure fckeditor SQL PHP
In a recent project, I used wiki as the source of knowledge for the underlying model. In the past two months, I tried JSPWiki, xwiki, and mediawiki, and I have learned a lot about these three open source wikis. , record it here.
JSPWiki
At the beginning, I found JSPWiki. The basic functions of JSPWiki are all there are, but the problem is that it uses the file method instead of the data to store the data. This will be very difficult when we analyze the data later and provide the knowledge source for the project. So there is not much research
XWiki
Xwiki is a popular open source wiki software written in JAVA. It supports various databases and has perfect functions.
In the process of understanding xwiki, it feels that its function is more powerful than JSPWiki. In addition to the basic functions of the wiki, it also provides blog function, so the structure is somewhat complicated. There are two points that are its advantages. First, his page organization is in line with people's general thinking, that is, to build classification and re-create entries; second, he uses the WYSIWYG editor by default, without requiring users to understand special grammar rules. Can be used normally. However, I found in use that xwiki does not support multi-level classification. Under one layer of space, it cannot contain subspaces, but only pages. Such a structure certainly cannot satisfy large applications, so it has not been selected.
In addition, when I understood the structure of the xwiki database, I found the place where the page content was stored. The xwiki page content exists in the xwikircs table, and the content is stored in the XWR_PATCH field in xml format.select XWR_PATCH from xwikircs where XWR_DOCID = ......;You can read the content, you can find that the page comments are in the <comment></comment> tag, and the page content is in the <content></content> tag.
mediawiki
Mediawiki is a wiki system written in php and should be the most widely used. Its structure is relatively clear, but I also found a few problems in the actual experience:
[list]
[*]mediawiki's page organization does not conform to the general way of thinking. The default method is to let people build entries first and then build categories. This way makes new users confused.
[*]mediawiki does not provide a quick entry to create pages and categories. Unlike xwiki, users know at a glance how to create a category and then add entries to the category. Mediawiki needs you to read its manual to understand how to create a page and point it to a category, which raises the user's threshold for use. Think it is not easy to use
[*]mediawiki does not use the WYSIWYG editor by default, users need to understand the basic editing syntax to use the editing function normally.
[/list]
After discovering these issues, my job was to look for various plugins to try to improve the usability and analyze its database.
The structure diagram of the mediawiki database is shown in Annex 1.
After the table-by-table observation, it is found that the content of the page exists in the old_text field of the text table, and the content is stored in the BLOB format, so the read code has to be written to convert the binary stream into a String. The following is the code:
String sql ="select * from mw_text";
ResultSet rs=stmt.executeQuery(sql);
int i =1;
while(rs.next()){
Blob blob=rs.getBlob("old_text");
BufferedInputStream bi=new BufferedInputStream(blob.getBinaryStream());
byte[] data=new byte[(int)blob.length()];
String output="";
bi.read(data);
output=new String(data);
bi.close();
System.out.println(" "+i+" ");
System.out.println(output);
System.out.println();
i++;
}
At the same time, in order to make mediawiki conform to the general usage habits, I have seen a lot of plugins on the official website, address [url]http://www.mediawiki.org/wiki/Category:Extensions[/url]
I tried a lot of plugins and found the following ones better.
[list]
[*]NiceCategoryList, the effect is as shown
[img]http://dl.iteye.com/upload/attachment/325633/f22ba2da-98ef-3981-9fa7-8ccaa6fe777f.png[/img]
[*]CategoryTree, the effect is as shown
[img]http://dl.iteye.com/upload/attachment/325635/8922c83e-5c1d-3378-802d-bc49aeb0c48c.png[/img]
[*]ArticleToCategory2, the effect is as shown
[img]http://dl.iteye.com/upload/attachment/325637/3f8f1378-2a05-34f2-ac2b-e666a0af47f2.png[/img]
[*]ManageCategories, the effect is as shown
[img]http://dl.iteye.com/upload/attachment/325647/2841b6ae-2fb2-3dc1-998d-2982ff96fb6a.png[/img]
[*]fckeditor
[*]inputbox, the effect is as shown
[img]http://dl.iteye.com/upload/attachment/325649/fee0321e-62e6-34ed-b6ad-78e171db1e25.png[/img]
[/list]
'업무관련' 카테고리의 다른 글
개발자와 프로그래머의 차이, 개발자의 생명은 커뮤니케이션 능력2 (0) | 2021.05.19 |
---|---|
개발자와 프로그래머의 차이, 개발자의 생명은 커뮤니케이션 능력 (1) | 2021.05.19 |
jspwiki 에서 page provider 를 파일기반이 아닌 rdbms로 하고 싶은 경우 (0) | 2021.05.11 |
개발자의 업무 일지 작성 방법 (0) | 2021.04.23 |
지식맵 기획을 위한 자료 조사. 시맨틱 + LOD 기반 지식맵 (0) | 2021.04.23 |