RSS 2.0 Feed
2005-01 Entries
摘要:《笨主管手册》内容简介:    笨主管手册是一部基于本土实践的管理学著作,该书从管理学的基本概念出发,以几个虚拟人物笨笨主管、阿灵主管与阿聪主管的管理经历入手,分析他们不同的管理风格,用寓言体的故事刻画了管人与理事两个最基本过程。    管理的目标是人,所以在本书中从管理者和被管理者两方面,效管理者与被管理者分成了几种类别,并对每一类别进行了研究,以员工生态学的角度对管理者的效果及行为进行了分析    管理的目的是做事,判别一个主管的能力,就在于所做的事情效果如何,因此,本书中提出了工作价值评判能力的概念,并针对此设置了专门的培训方案及测试。    本书目前正在《大连新商报》连载。 ------------------------  类似于《水煮三国》的风格,推荐正在做主管或者将要做主管的你看看 《笨主管手册》片断欣赏...[阅读全文]

posted @ | Feedback (10) | Filed Under [ 生活 ]

摘要:有时候会因为Cache没有更新导致信息延迟,那么写个程序来管理Cache吧:可以看到站点的所有Cache、移除指定的Cache、移除所有的Cache。 如何获取所有Cache?看Msdn上的例子代码:IDictionaryEnumerator CacheEnum = Cache.GetEnumerator(); while (CacheEnum.MoveNext()) ...{ cacheItem = CacheEnum.Current.ToString(); Response.Write(cacheItem); } 通过上面的方法可以获取到所有的Cache,以及他们的Key、Type、Count等信息。根据Key可以方便的移除指定的Cache。循环遍历一下即可删除所有的Cache。 代码:Cache管理代码下载:http://cnforums.net/Downloads/cache.rar 参考文章:http://aspalliance.com/aldotnet/examples/cacheviewer.aspx...[阅读全文]

posted @ | Feedback (7) | Filed Under [ Web技术 ]

摘要:Forums中有一个自定义的异常类ForumException,继承自ApplicationException,与之对应的有一个枚举ForumExceptionType,用来记录异常的类型。Forums的自定义异常类主要是对可能出现的各种异常分别进行处理——记录错误日志、消息提示。 当asp.net中抛出异常后,会触发HttpApplication的Error事件,可以在HttpModule中捕获到,如Forums就是在其HttpModule中处理Forums的异常:application.Error += new EventHandler(this.Application_OnError);。在捕获到自定义异常后,根据异常的类别(ForumExceptionType枚举)对一些重要的错误信息记录日志(保存到数据库的forums_Exceptions表),以供管理员参考。而对于异常,为了给用户友好的提示,会将根据异常类显示出比较友好的错误信息。 Forums的自定义异常不仅仅作用在于对错误异常的处理,而且还有一个重要作用就是用来做信息提示用,例如提示用户注册成功,那么抛出一个异常:throw new ForumException(ForumExceptionType.UserAccountCreatedAuto); 然后就会自动跳转到大家所看到的提示用户已经成功注册的信息。 Forums是怎么样根据异常跳转到对应的信息呢?前面说了Forums对于每个自定异常都对应有一个错误类型枚举ForumExceptionType,Forums针对每一种语言都有一个Messages.xml,xml的规则如下:<root> <message id="1"> <title>无权限登录</title> <body>您不是超级管理员.</body> </message> <message id="2"> <title>无权限修改</title> <body>此版块不存在,或您无权限修改.</body> </message> </root> 其中的id和ForumExceptionType的int型一一对应public enum ForumExceptionType ...{ AdministrationAccessDenied = 1, PostEditAccessDenied = 2, } 那么在HttpModule中处理异常时,直接跳转到消息提示页Response.Redirect(Globals.GetSiteUrls().Message( exception.ExceptionType ), true);,如http://localhost/CnForums/Msgs/default.aspx?MessageID=1 在msg的显示页,会根据MessageID,从xml中找到对应的提示信息,显示在页面上。...[阅读全文]

posted @ | Feedback (24) | Filed Under [ CnForums ]

摘要:大多数Windows程序都有桌面提醒(Popup)功能,如Msn Messenger,Outlook2003,FoxMail,SharpReader等,对用户来说可以非常的方便最新的信息。 在Web中借用IE5.5+的Popup,也可以实现类似的功能,在CnForums1.2中新增了一种特性就是类似于Outlook2003一样,当有新帖子/私人留言时就有Popup提示,如图:现在就技术问题介绍一下: 一,什么是Popup 在IE5.5+中开始支持的Popup窗口有很多很特别的特性: Popup窗口可以超出浏览器窗口区域; 可以不用担心被下拉框、flash、Iframe等这些东西遮挡; 即时窗口没有焦点,Popup窗口也可以弹出并显示 一个Popup窗口打开后,当在它的区域以外点击或者另一个Popup窗口被打开时都会自动关闭; Popup窗口是没有焦点的; 用户不能改变Popup窗口大小; Popup窗口中的内容是不能被选择的; ......  只是Web下的Popup比起Windows中的Popup还是弱一些,但是已经够用了。Msdn上对Popup有非常详细的介绍“Using the Popup Object (Internet Explorer - DHTML) ” 二,怎么创建一个PopupMsdn上的示例代码:// 创建Popup对象 var oPopup = window.createPopup(); // Popup对象和Window对象一样,里面包含了一个完整的HTML文档 var oPopupBody = oPopup.document.body; // 在Body中插入HTML oPopupBody.innerHTML = "Display some <B>HTML</B> here."; // 设置显示的位置、大小、参照物 oPopup.show(100, 100, 200, 50, document.body); 三,Popup的显示 多个Popup不能共存(Popup中创建Popup除外),所以web中的Popup不方便像Msn Messenger的Popup提示那样“爬楼梯”,所以最简单有效的方法就是像Outlook2003的Popup一样,逐个Popup提醒。(参考WebMessenger的实现)用Js建个队列,将需要Popup提示的内容都放在队列中,用一个定时器,定时从队列中取一个Popup,每个Popup显示7秒。 四,怎么知道有新帖子 在Web程序中,只能通过“拉”的技术,即定时向服务器发送请求——通过定时刷新或者是xmlhttp的Get。我们需要有个时间戳来记录最后请求时间,这样就好根据这个时间戳来获取时间戳之后的帖子。如果每次根据时间戳来获取最新帖子,服务器负荷比较大,因为并不是每次请求都有新帖子的,优化一下,再给每个在线用户设置有无新帖子、有无新留言的状态位,当发表新帖子后更新每个人的“有无新帖”状态位。这样每次请求时先判断有没有新帖子,如果有新帖子,才获取所有帖子的标题和内容简要。 五,具体实现 客户端代码:http://webuc.net/MyProject/Popup/popup.htmhttp://webuc.net/MyProject/Popup/popup.rar 和论坛程序的结合:demo: http://bbs.openlab.net.cn (登录后有新帖子即提示(IE5.5+))http://bbs.openlab.net.cn/PostAttachment.aspx?PostID=376725 参考文章:无限菜单之 xml+popup 版(IE5.5+) ...[阅读全文]

posted @ | Feedback (49) | Filed Under [ Web技术 ]

摘要:Forums中很多地方要用到邮件发送,如:邮件注册、找回密码、邮件订阅等。 添加新贴的代码流程非常慢。每次添加帖子,应用程序首先要确保没有重复贴,然后格式化帖子内容和表情图像,记号并索引,如果必要还要将帖子添加到相应的队列中,对附件进行有效性检查,最终完成发贴后,给预订者发出 e-mail 通知。显然,这里做的工作太多。索引帖子是一个很耗时的操作,此外,内建的 System.Web.Mail 功能要与 SMTP 服务器连接并顺序发送邮件。当特定帖子或主题预定者数量增加时,发送帖子的执行时间会越来越长。   并不是每个请求都需要索引邮件,所以Forums采用的是批量集中处理,并且一次只索引25个帖子或每隔五分钟发送一次邮件。定时器这部分在我的上一个blog有说明《asp.net forums中定时器的应用》 在Asp.Net中邮件发送非常容易,一般都需要Smtp服务器,但是一些免费信箱的Smtp服务器(如smtp.163.com)都需要账号密码验证。在MailMessage对象的Filds集合中加入以下内容即可: Message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1" ); //basic authenticationMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", txtUserName.Text ); // 设置smtp服务器登录账号(如您163.com的信箱账号)Message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", txtPassword.Text ); // 设置smtp服务器登录密码 (如您的163.com的信箱账号密码)但是使用免费的Smtp服务器一定要注意一个问题,就是发送邮件的账号(即Message.From)必须和上面的Smtp服务器登录账号一致,否则将会导致找不到cdo对象的异常。 示例代码:邮件发送示例代码...[阅读全文]

posted @ | Feedback (29) | Filed Under [ CnForums ]

摘要:Asp.Net中可以方便的使用缓存,对于Cache,一般有两种方式调用:HttpContext.Cache和HttpRuntime.Cache。那么这两种Cache有什么区别呢? 先来看看Msdn上的注释:HttpRuntime.Cache:获取当前应用程序的 Cache。HttpContext.Cache:为当前 HTTP 请求获取 Cache 对象。 那么是不是说对于HttpRuntime.Cache就是应用程序级,而HttpContext.Cache则是针对每个用户的呢?NO,而实际上,两者调用的是同一个对象。他们的区别仅仅在于调用方式不一样(就我所知)。 事实胜过雄辩,写个例子来证实一下(限于篇幅仅贴出关键代码,完整代码见附件WebDemo.rar): /**//// <summary> /// 通过HttpRuntime.Cache的方式来保存Cache /// </summary> private void btnHttpRuntimeCacheSave_Click(object sender, System.EventArgs e) ...{ HttpRuntime.Cache.Insert(cacheKey, cacheValue, null, DateTime.Now.AddMinutes(3), TimeSpan.Zero); } /**//// <summary> ......[阅读全文]

posted @ | Feedback (25) | Filed Under [ Web技术 ]

摘要:CommunityServer(以下简称CS,有不了解的请看我以前的blog) Beta 3 是CS1.0发布前的最后一个Beta版,感觉非常不错!CS1.0Release将在几周后发布,期待中。官方发布的源码并不能顺利安装,主要是sql脚本对中文SQL Server支持不好,将修正后的脚本及安装说明打包附上。本地化工作进行中。 附件: CS_beta3_4.rar(2327K)...[阅读全文]

posted @ | Feedback (8) | Filed Under [ Community Server ]