犬者
“说了你又不听,听又不懂,懂又不做,做又做错,错又不认,认又不改,改又不服,不服也不说,那叫我怎么办?!”

【电脑】博客风的程序

博客风现在系统终于能够让我自己有点满意……当然还有无数的东西可以做……

从技术的角度来说说博客风……

整个网站是使用asp.net + MS SQL 2000开发的……编程语言使用的是VB.net……C#的开发速度比起VB来,是要慢很多的……老实说,到目前为止整套系统都不算复杂,我不需要也不会使用.Text那样的程序设计……

博客风其实有两个域名,一个是 http://www.blogwind.com 另一个是 http://blog.xinchaoliu.net 后者是一开始还没有申请独立域名的时候使用的,一直保留至今,一方面是在主域名解析出问题的时候可以拿出来应急,一方面是某些搜索引擎,比方说百度对blog.XXX.xxx的域名里面的内容比较感兴趣些……

在用户申请新的blog时,系统自动在根目录下添加与用户ID一致的新目录,同时根据用户选择的模板复制进相应的default.aspx, usercate.aspx, comment.aspx三个文件。建立新目录是为了让用户可以使用 www.blogwind.com/ID的方式访问自己的博客,复制进新的文件,是为了实现模板的功能。

这个三个文件其实差别不大,或者,可以这样子理解,default.aspx显示多篇blog的内容,usercate.aspx显示多篇blog的标题,comment.aspx显示单篇blog的内容以及相应的blog回复。

坚决使用codebehind,三个文件的里面顶多只是使用<%=XXX%>以及各个repeater控件来显示内容,所有的数据处理在独立的.vb codebehind文件里面完成。所有的博客页面都是调用同样的codebehind文件的,这是用asp.net的优势。

因为三个文件纯粹负责数据显示,这使得实现博客模板替换非常之简单,用户换新的模板,系统只是替换掉这三个文件而已……

如果让用户自由编辑这三个文件内容的话,是可以实现让用户完全自定义模板的……这也是要在各个用户目录里面复制新的文件,而不是读取同样的文件,虽然暂时不提供完全的自定义模板功能,但是要给将来发展留余地。

各个模板使用样式表、图片等则就使用相同的了。

保存新的blog回复一开始是做在comment.aspx里面的,这会造成用户刷新页面时重复提交表单,重复保存回复。后来便,统一将保存blog回复交给savecomment.aspx了……savecomment.aspx是唯一的,接受所有blog提交的新回复,处理之后自动转跳回提交表单的页面。

三个页面中均有相同的“侧栏”,显示用户的资料、链接、网志分类、存档等……

从一开始就一直在考虑是否要将这个“侧栏”给独立出来做user web control。最终还是决定不要,这就造成在三个页面的codebehind文件中有大量重复的代码去处理“侧栏”中的内容。同样的,这也是为了将来的发展考虑……“侧栏”也不一定是要在一边……在某些模板设计中,也许用户要把它放在左右两边,一边显示资料,一边显示链接什么的……

虽然,到目前为止,还没有这样的模板……

当然,我也可以把学csszengarden把整个页面都给图层化,然后纯粹使用样式表来实现模板……只是,有功力编写这样样式表的人不多……抄起新模板来会痛苦很多很多……

不过,“侧栏”中的当个内容则渐渐做成了user web control……比方说,用户登陆的那块……那块东西的排版,如输入框高宽、按钮颜色等是纯粹用在不同模板中样式表里定义。

终极目标是让用户可以把这些control拖来拖去,自己决定是否要显示以及显示的位置……poco早就实现这一点了……新出来的wallop、MSN space甚至dotnetnuke 3.0也是有这样的功能……还没来得及去研究它们的程序,将其“参考”过来……

default.aspx底部的翻页链接,也是一个user web control……哇咔咔……这算是我比较满意的设计技巧了……有谁考虑过将显示“上一页”、“下一页”的东西也做成user web control呢?似乎没有……default.aspx本来是没有翻页功能的,做成user web control后,给原有模板添加翻页功能时代码修改量非常非常的少……

用户写blog的编辑器有两个……一个是最简单的multiline textbox,一个则是freetextbox 1.63破宝汉化+我自己修改版……有点不好意思其实……我给FTB修改的地方很少……只是修改了它的图片管理文件,让各个用户可以在不同目录下管理各自的图片……还有,就是自己写多了一个emot.html方便用户在freetextbox里面插入QQ表情等小图片……这部分是纯粹用javascript实现的……自己写javascript跟asp.net控件交互操作我觉得是用asp.net网站的基本功……只是,好像很多人都忽略了……

整个博客风系统,我都尽可能的兼容各种浏览器……但是,我优先保证在IE下的显示……电脑上装有IE/firefox/Opera……每添加新页面的时候都会自己先在这三个浏览器中跑一遍……我得出来的结论是:Opera是垃圾。

一直想把freetextbox升级到2.0以上,因为1.63版不支持mozilla/firefox……只是,我编写的emot.html在2.0以上的freetextbox中使用不了……得修改现有的javascript……曾经折腾了一个下午没有折腾出来,便没有去先不去管它了……毕竟,用IE的人还是多……

整个系统使用存储过程到了歇斯底里的地步……往往连异常简单的一句sql select语句都要写成存储过程……有两个原因……第一,当时刚刚学会编写存储过程,像show off……第二,方便给系统做小调整……整个网站是用VS.Net 2003开发的,所有的类都编译到了一个dll文件里……如果为了修改一个sql语句而重新把整个网站编译一次未免太傻了……

用户密码是经过md5 hash之后再储存进数据库里面的……如果用户登陆时选择使用cookie保存登陆信息,则是将密码hash值转成文本后保存在cookie里面……转换的过程有点“错误”……因为当初在做的时候还不懂得如何完美的在bytes跟string之间做转换……后来懂了,但是,懒得去改……保留这样的“错误”也可以防止人窃取cookie然后使用暴力法破解密码……

暂时就想到这么多了……

4801
问天 @12/15/2004 2:55:35 PM
View blogs in this category:电脑


移动硬盘 在 12/22/2004 4:42:26 PM 说:

snail,你来看了,我记得我和你说好多天了……怎么才来看呢?呵呵……是不是很不错?
Wuvist 在 12/22/2004 4:42:13 PM 说:

恩……不过,俺的blog内容不一定跟电脑有关……
snail 在 12/22/2004 4:01:10 PM 说:

向问天老兄问候,我想好了 冲今天起经常光顾你的blog
共同进步!

Please leave your comment here

 
  名字:
  主页:
  内容:
 

   


Navigation
Blogwind
犬者首页
Contact


个人档案


“说了你又不听,听又不懂,懂又不做,做又做错,错又不认,认又不改,改又不服,不服也不说,那叫我怎么办?!”



Categories
死结(27)
电脑(177)
心情(181)
天影(25)
乱弹(211)
博客(82)
音乐(18)
饕餮(30)
读书(20)
电影(28)
网摘(5)
希望(37)
汕头(10)
经济(8)
苹果(19)
跋涉(7)



Archive
2008年11月
2008年10月
2008年9月
2008年8月
2008年7月
2008年6月
2008年5月
2008年4月
2008年3月
2008年2月
2008年1月
2007年12月
2007年11月
2007年10月
2007年9月
2007年8月
2007年7月
2007年6月
2007年5月
2007年4月
2007年3月
2007年2月
2007年1月
2006年12月
2006年11月
2006年10月
2006年9月
2006年8月
2006年7月
2006年6月
2006年5月
2006年4月
2006年3月
2006年2月
2006年1月
2005年12月
2005年11月
2005年10月
2005年9月
2005年8月
2005年7月
2005年6月
2005年5月
2005年4月
2005年3月
2005年2月
2005年1月
2004年12月
2004年11月
2004年10月
2004年9月
2004年8月
2004年7月
2004年6月
2004年5月
2004年4月
2004年3月
2004年2月
2004年1月
2003年12月



My Links
5G
bloglines
时尚摄影师奇科的博客
颜如玉
最爱卫斯理

RSS 2.0

Username:
Password:
 Remember me