/Blog

这是我的网站使用的源代码,可以作为一个使用 DbEntry.Net 开发实际项目的例子。

Primary LanguageC#

MyBlog

简介

这是 我的网站 使用的源代码,可以作为一个使用 DbEntry.Net 开发实际项目的例子。

因为是我自己用的,所以有一些地方是不完善的。

大部分程序是2008年左右写的,现在只是进行了一些小改动,以便能使用最新版的 DbEntry.Net。

另外,加入了 Markdown 的支持,这个是使用 MarkdownSharp 实现的。

页面部分,加入了 Bootstrap,目前普通用户可见部分基本改完了,管理员可见部分还没有改。

其中的 ubb 中 code 部分,是使用 SyntaxHighlighter 实现的。Markdown 的 code 部分,使用 prettify,ubb 也准备改成这个。

目前,它还只是一个单人使用的 blog,普通的注册用户,只是在发评论和搜索的时候有一些方便,只有管理员才能发表文章。

配置

关于 DbEntry 部分,缺省是 SQLite 1.0.66.0 用于开发,Firebird 2.5.2 用于部署,具体的配置可以参见 DbEntry 的站点,这里就不多说了。

appSettings 里面,是大多数情况下都要修改的部分。RegSolt 用于对于密码 hash 加料,需要修改成一个随意的值,正式用之后就不能再改了,否则现有用户将无法登录。Email 相关部分需要改成你自己的 email 服务器的信息,用于注册用户邮箱的验证。

rss 生成部分,站点部分,在页面里是硬编码为 http://llf.hanzify.org 的,也应修改,具体页面为 /View/Rss 下的 Article.aspx 和 Comment.aspx 。

历史列表部分,使用的是我在 DbEntry 里引入的静态模式,如果希望改成动态模式,修改 Blog.Biz.Controllers.ArticleController 上的 Attribute ListStyle 就可以了。

第一次运行时,会自动创建所需要的表,并且插入一些初始数据,比如本文章,这个是在 Global.asax.cs 里实现的,如果需要,也可修改。

为调试方便,log 配置为记录所有的 sql 语句,这会导致 log 文件迅速增长,如不需要,可以删除配置文件中 SqlLogRecorder 那一行。

MacOS/Linux

在 MacOS 上运行本程序,需要安装 Mono 和 Xarmarin Studio,还需要把 SiteBase 设置成空字符串。

Linux 应该也是一样的,只是我还没有在 Linux 下测试过。

使用

  1. 注册你的帐号
  2. 使用 test@test.com/123 登录系统
  3. 在【管理 -> 用户管理】页面,将新注册的用户改为管理员
  4. 退出,用新帐号登录系统
  5. 删除 test@test.com 的帐号

已知问题

  • ubb 部分,实现的不完全,也不严格。
  • 图片部分,只提供了链接输入方式,图片本身需要另找途径上传到站点。
  • 发表和修改文章的页面,没有预览,只能直接发布。
  • Articles 表因为某些原因,改成了软删除模式,但是 Comments 和 Statistics 还没有改,会造成某些情况下出错。
  • Controllers 里绑定值,因为历史原因,只是单个值绑定,因为时间原因,这次仍然保留了这个做法。
  • 这次升级,取消了Session,但是还没来得及修改数据库,所以登录时选不选【Remember Me】都是浏览器关闭即失效。

代码

Markdown 的代码部分,修改了 MarkdownSharp 的源代码,增加了配置项 CodeClass,以便使用 prettify。css 修改自 sunburst。下面是个例子。

/* Fibonacci */
function fib(x) {
	if(x <= 0) { throw new Error("Argument Error"); }
	if(x <= 2) { return 1; }
	return fib(x-2)+fib(x-1);
}

行内代码效果 console.log(fib(5)); 也不错。

以上的代码片段在 Github 上是没有高亮效果的。

GitHub Flavored Markdown

Github 支持一些标准 Markdown 不支持的语法,比如Code部分,支持用 ``` 开头和结尾来界定,高亮方式是需要指定语言的,修改了一下 MarkdownSharp,支持了这种界定方式,不过会忽略指定的语言,仍然由 prettify 自行推测:

public class User : DbObjectModel<User>
{
	public string Name { get; set; }
	public int Age { get; set; }
	public bool Actived { get; set; }
	public DateTime Birthday { get; set; }
}

static void Main()
{
	// Create
	var u = new User { Name = "tom", Age = 18, Actived = true, Birthday = DateTime.Now };
	u.Save();
	// Read
	var u1 = User.FindById(u.Id);
	// Update
	u1.Name = "jerry";
	u1.Save();
	// Delete
	u1.Delete();
	// Query
	var ids = from p in User.Table where p.Age > 15 select new {p.Id};
	var l1 = from p in User.Table where p.Age > 15 && p.Actived select p;
	var l2 = User.Find(p => p.Age > 15 && p.Actived); // another style of linq
	var l3 = User.FindBySql("Select * From [User] Where [Age] > 15 And [Actived] = true");
}

另外,Github 还支持 删除 格式,以及表格,暂时没需求,先不支持了。

这些对于 MarkdownSharp 的修改,回头有空也放到 Github 吧。