构思做一套自己的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库

  自动创建目录结构~~

元芳你怎么看?

评论(3) 引用(0) 浏览(2438)

回应广大群众的要求,放出FastTracker2以及介绍相关软件

作者:V君 发布于:2013-8-22 14:56 Thursday 分类:应用软件

V君在AB站上投了几个[KeygenMusic*可能会报毒!]的音乐, 发现有很多人求软件.

原本想以给我去咕狗啦!这样回应就罢了的, 但自己去咕狗了才知道... 

原来FT2的官网已经挂了... 因为 [FT2的维基条目底部的连接指向 [web archive] 的存档.

想找这个软件就只能从各种下载站上抓下来, 插件捆绑什么的我认为你懂得...

好. 那就把那货直接放到这里, 然后顺便介绍几款相关软件吧!

介绍的软件有:■OpenMPT FamiTracker ■SKALE TRACKER MilkyTracker

阅读全文>>

标签: 电子音乐制作

评论(2) 引用(0) 浏览(1800)

SDL 实现Alpha混合 (Normal Mode)

作者:V君 发布于:2013-8-21 17:43 Wednesday 分类:挖坑经验

一次接触Alpha混合算法的经历

点击查看原图

点击查看原图点击查看原图

阅读全文>>

标签: 软件开发 C# SDL

评论(0) 引用(0) 浏览(4804)

SDL .net 初体验

作者:V君 发布于:2013-8-14 12:50 Wednesday 分类:折腾手记

一直想用SDL重新实现⑨饼来着的但苦于C不好实现面向对象;C艹又不熟悉, 一直搁置着

现在, 发现原来SDL已经有了C#的封装库

CS-SDL [http://sourceforge.net/projects/cs-sdl/

况且工作方面这几天都没任务 酱油真浪费

于是 开搞!

阅读全文>>

标签: 软件开发 C# SDL

评论(1) 引用(0) 浏览(2559)

正则表达式使用经验

作者:V君 发布于:2013-8-13 17:59 Tuesday 分类:挖坑经验

最近用正则比较多, 贴一些经验出来好方便自己查, 顺便也分享一下

捕获内容用括号分组 例: (.+?)

 匹配一个或多个字符  贪心   不贪心
 零个或多个 *   .*   .*?
 一个或多个 +   .+  .+?

具体实例:

捕获链接和文本 

<a.+?href="(.*?)".*?>(.*?)</a>

  ↑这里至少会有个空格,因此用+

使用选项 RegexOptions.IgroneCase 来忽略大小写

标签: 正则表达式 软件开发 C#

评论(0) 引用(0) 浏览(1447)

Powered by emlog 去你妹的备案 sitemap