构思做一套自己的wiki系统 (元芳快来告诉我你的看法!)
作者:V君 发布于:2013-8-31 18:17 Saturday 分类:折腾手记
V君老早就想建一个属于自己的wiki了,
用于刊登各种电脑故障解决方法和操作技巧以及各种概念提纯什么的
因为V君人际圈中太多小白, 每次都要从头开始解释, 这让v君略不耐烦
你可能会问为什么要自己做?
因为V君的树莓派服务器跑不动MediaWiki... V君很喜欢MediaWiki的页面布局
查找对比了很多个wiki引擎都不满意
干脆自己捏一个吧! 使用完全静态页面, 每逢内容更新就生成一遍.
概要设计:
+ 自己组织的内容
* 使用数据库或者直接打散到文件系统
* 维基百科有的定义可以直接外链引用
+ 使用以上内容生成静态HTML
* 仿照MediaWiki布局
+ 贡献内容
* 开设一个投稿入口, 审核后采用
- 详细设计 -
预定义目录结构
WebRoot
|-resources //公共资源
...|-theme.css
...|-common.js
...|-sprite.png
|-index.html //首页(手动指定特色条目/分类导航/最近更新)
|-entry1 //条目1
...|-index.html //条目1内容
...|-image.jpg //条目1附件
|-entryn.html
...|-index.html
...|-image.jpg
实体:条目
名称
标题(消歧义)
内容(exRTF)
附件(dic[key,mime]=blob)
分类(NullableRef)
最后编辑时间(DB/allFT)
实体:分类
名称(唯一)
简介(exRTF)
父类(NullableRRef)
定义:exRTF
创造一种类似wiki标记语言的轻量级富文本格式
语法参照UBB或直接裸写HTML
最终生成HTML达到wiki条目页面效果
细节:
引用附件
[att key]
链接
条目内链,照搬
[[xxx]]
外链,照搬固定
[http://xxxremark]
特定目标图标
[wiki-ref[name]]引用维基百科条目
目录,照搬自动提取到头部 先不做还不知道用不用得上
==xxx==
===xxx===
底部注释(上下跳转) 先不做还不知道用不用得上
[summary-0[xxx]http://]
维护
找被引用但出未撰写的条目以补充
数据库
<x>SQLCE
<!>不跨平台
<*>FSDB
文件夹实体
方案1
ini
<!>WINAPI不跨平台
<!>自行实现略不易
exRTF
方案2
打散属性到文件(kvp)?
<!>注意IO/WA
<*>架构扩展十分方便
<?>SQLite
略(貌似没什么问题,只是扩展略麻烦)
经过许多考虑,选择采用打散文件系统的形式存储已整理的资料
应用程序根目录
|-cwBaseLib.dll //共用功能类库 cw = Coder Wiki
|-cwGenerate.exe //主程序 - 完整生成
|-cwPreview.exe //预览程序 - 关联.wiki-entry 文件实现双击启动
|-cwMaintenance.exe //维护程序 - 代劳各重复活~
|-templates
...|-entry.template //这里存放模板吧
...|-(略) //尽管还可能有更多东西, 用了打散就方便扩展~
|-categories
...|-category1
......|-name.kvp //键值对, 存储分类名称 可选-不存在时使用文件夹名称
......|-parent.kvp //同上, 存储父类名称, 可选 没有就当做root级分类
......|-summary.exrtf //同上, 存储简介, 使用前面说的exRTF格式
|-entries
...|-entry1
......|-entry.wiki-entry //空文件, 可以双击预览生成结果
......|-title.kvp //键值对, 存储标题, 可选-不存在时使用文件夹名称
......|-body-content.exrtf //主体内容, 使用前面说的exRTF格式
......|-attament.lst //附件列表, 使用类INI格式 key=mime
......|-key.attachment //附件, 可以是任意文件供主体内容引用
......|-type.kvp //同上, 存储所属分类名称
......|-xxx.kvp //还可以轻松地增加实体属性
...|-entry2
......|-同上结构
|-output //输出文件夹, 见上面预定义的结构
...|-index.html
...|-entry1
......|-...
|-output.7z //生成内容的打包 方便部署到服务器
内容解析/HTML生成器作成一个类库
这货供主程序、预览程序以及维护程序调用
主程序(控制台):
双击弹出控制台显示进度, 生成内容到输出文件夹, 完成后自动打包
预览(也是一个控制台, 懒得拖控件!):
双击wiki-entry文件, 生成选定内容到输出文件夹, 直接打开浏览器呈现结果
当然, 还有各种完整性检查:
被引用的附件不存在
所属分类不存在
维护(还是一个控制台?加参数呗~)
数据完整性检查/修复
繁琐的重复活(如类名更改,批量转移,找出未撰写条目等等)
这堆文件夹结构难记?其实可以集成到右键菜单嘛!
向SVN/git学习,右键初始化wiki库
自动创建目录结构~~
元芳你怎么看?
评论:
blogger
Google Web Translator
热门日志
随机日志
最新日志
最新评论
- V君
@Quartz:(出现)... - Quartz
怎么不见人了呢... - V君
@Soar:DHCP 协议相... - V君
@Soar:当然是非... - Soar
@V君:谢谢 有空... - Soar
搞一个 1230v3+B85... - V君
@Soar:另外,也可... - V君
@Soar:iscsi服务端... - Soar
难怪这么卡,尤其... - Soar
clone了源码,提示...
分类
存档
- 2024年5月(1)
- 2023年7月(1)
- 2023年5月(1)
- 2022年11月(1)
- 2022年10月(1)
- 2022年9月(1)
- 2022年8月(1)
- 2022年7月(1)
- 2022年6月(1)
- 2022年5月(2)
- 2022年4月(1)
- 2022年3月(1)
- 2022年2月(1)
- 2022年1月(1)
- 2021年12月(1)
- 2021年11月(1)
- 2021年10月(1)
- 2021年9月(1)
- 2021年8月(1)
- 2021年7月(1)
- 2021年6月(1)
- 2021年5月(1)
- 2021年4月(1)
- 2021年3月(1)
- 2021年2月(1)
- 2021年1月(1)
- 2020年12月(1)
- 2020年11月(1)
- 2020年10月(2)
- 2020年9月(1)
- 2020年8月(1)
- 2020年7月(1)
- 2020年6月(1)
- 2020年5月(1)
- 2020年4月(2)
- 2020年3月(3)
- 2020年2月(1)
- 2020年1月(1)
- 2019年12月(1)
- 2019年11月(1)
- 2019年10月(1)
- 2019年9月(1)
- 2019年8月(2)
- 2019年7月(1)
- 2019年6月(1)
- 2019年5月(1)
- 2019年4月(1)
- 2019年3月(1)
- 2019年2月(1)
- 2019年1月(2)
- 2018年12月(2)
- 2018年11月(1)
- 2018年10月(3)
- 2018年9月(4)
- 2018年8月(6)
- 2018年7月(4)
- 2018年6月(1)
- 2018年5月(2)
- 2018年4月(2)
- 2018年3月(3)
- 2018年2月(1)
- 2018年1月(1)
- 2017年12月(1)
- 2017年10月(2)
- 2017年9月(1)
- 2017年8月(2)
- 2017年7月(1)
- 2017年6月(5)
- 2017年5月(2)
- 2017年4月(2)
- 2017年3月(3)
- 2017年2月(2)
- 2017年1月(2)
- 2016年12月(3)
- 2016年11月(2)
- 2016年10月(3)
- 2016年9月(4)
- 2016年8月(2)
- 2016年7月(4)
- 2016年6月(3)
- 2016年5月(1)
- 2016年4月(4)
- 2016年3月(3)
- 2016年2月(1)
- 2016年1月(5)
- 2015年12月(4)
- 2015年11月(5)
- 2015年10月(1)
- 2015年9月(6)
- 2015年8月(4)
- 2015年7月(1)
- 2015年6月(6)
- 2015年5月(3)
- 2015年4月(3)
- 2015年3月(2)
- 2015年2月(1)
- 2015年1月(3)
- 2014年12月(1)
- 2014年11月(1)
- 2014年10月(1)
- 2014年9月(3)
- 2014年8月(1)
- 2014年7月(1)
- 2014年6月(1)
- 2014年5月(3)
- 2014年4月(1)
- 2014年3月(1)
- 2014年2月(2)
- 2014年1月(1)
- 2013年12月(2)
- 2013年11月(2)
- 2013年10月(1)
- 2013年9月(3)
- 2013年8月(14)
- 2013年7月(7)
- 2013年4月(1)
- 2013年3月(4)
- 2013年2月(6)
- 2013年1月(6)
- 2012年12月(8)
- 2012年11月(6)
2014-01-17 17:35