Register  |  
About the author
Baldwin's Status
 Contact Me
Baldwin Sun
Senior Developer for dnn solution & founder of SunBlog module...
Blog搜索
相册库
更多照片请查看相册库
最新评论
Rss Feed
feedsky
抓虾
pageflakes
newsgator
哪吒
我们的服务
  • DotNetNuke 咨询
  • Web设计及其模块开发
  • 免费建站
  • 电子商务
  • 开拓市场
我们致力于开发定制的web 2.0 ,所服务的客户主要包括小中型企业,社区俱乐部及其非盈利机构组织。我们将利用开源的DNN作为我们核心的系统机制,更多相关信息...

DNN Skin旅程之琐碎杂想

一直有人跟我提为何不做一些DNN皮肤教程什么的,本人甚为惭愧,当初曾夸下海口说没问题,可一拖再拖,倒不是自己没有时间,只是姑且不论自己设计能力的肤浅,光是那一系列教程制作就得花费不少心思,至少得简单易懂吧?至少得图文并茂吧?至少得符合CSS,W3C吧?我可不想随便拿出一样拷贝别人的皮肤来炫耀自己的水平。故折中的做法只能随时分享自己设计开发皮肤的一些经验或想法,希望能满足部分读者的口味。

拥抱PNG(如何在DNN应用PNG格式图象)

png demoPNG 是20世纪90年代中期开始开发的图像文件存储格式,其目的是企图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。流式网络图 形格式(Portable Network Graphic Format,PNG)这一名称来源于非官方的“PNG's Not GIF”,是一种位图文件(bitmap file)存储格式,读成“ping”。PNG用来存储灰度图像时,灰度图像的深度可多到16位,存储彩色图像时,彩色图像的深度可多到48位,并且还可 存储多到16位的α通道数据。

在DNN中处理回车键事件

分享项目开发中的小技巧:如何处理回车键事件, 特别是在同一个页面可能同时存在多个通过回车键提交表单时执行特定的button按钮事件的情况下. 详情请查看原文...

推荐系列:Scheduler,Reset skin等(2008年第2期)

[1] DNN Scheduler Mechanism,翻译过来即为调度任务机制。
调度管理是DNN提供给开发者在一定的时间间隔实现调度任务的一种机制。利用你可以定制开发满足需求的调度任务,它也是在DNN典型模式(提供者模式)的基础上实现的,故可不更改核心代码就创建新的或修改原有的调度服务。关于如何使用DNN调度任务机制请查看我曾经在博客园的相关文章:
DNN调度管理解析(一)-----简单介绍及其API
DNN调度管理解析(二)-----自定义调度任务
DNN调度管理解析(三)-----如何运用DNN调度服务
相关链接:
How to Write a Custom DotNetNuke SchedulerClient (i.e. a Scheduled Task)
Programmatically Add, Delete, and Update Scheduled Tasks
[2] 重置皮肤
有时我们在配置皮肤时可能会出现一些莫名其妙的问题,比如找不到皮肤文件,或不小心删除皮肤文件夹可是还有某一页面仍然引用这一皮肤。这可能会使得DNN站点无法访问,当然修改管理皮肤也就无从谈起了.这时可通过以下类似URL重置皮肤,请注意参数SkinSrc之后的链接,我想你应该也猜到了,这就是DNN默认的皮肤dnn-blue!
http://localhost/dnnsun/Admin/Skins/tabid/49/Default.aspx?SkinSrc=[G]/skins/dnn-blue/Horizontal Menu - Fixed Width
[3] 如何创建一个符合XHTML标准的皮肤
应该承认DNN一直到现在的版本依然很难符合XHTML标准,但也无可否认它一直在往这个方向靠拢,不管是从模块开发还是皮肤设计都能看出这种努力的尝试。下边这篇文章就是列举了一些我们在设计符合XHTML标准的皮肤需要注意的原则或要点:
XHTML Skinning Uncovered
[4] 一种新的升级DNN的方式
说实在话,我也一直觉得DNN升级是一件很让人费心劳力的事情,需要考虑的东西太多,包括数据库的备份,SQL语句的执行,文件的备份等等,其中无法控制的就是web.config的修改,你需要明了其中配置的变化,不然你的站点也许无法正常运行,而可喜的就是自从DNN 4.6.2分布以来,DNN提供一些系列的方法让你可以在模块级别控制web.config的修改,包括增删改等操作,有兴趣者不妨看看这两篇文章,也许你从此找出答案来:
Core members feel the pain of upgrades too
XmlMerge - what is it?
[5] CodeSmith 开发模版下载
我只记得当初刚开始学习DNN的时候一直都在用CodeSmith 开发模版来生成代码,特别是在数据库表和业务逻辑层之间的代码生成的过程中特别有用,这可以节省很多的时间,后来才有了XX_StarterKit.vsi的出现,而现在由于DNN增加了IHydratable接口(关于IHydratable,不妨参看我之前的文章"王者归来—再谈CBO"),最初的CodeSmith 开发模版也许不再适用,这里提供最新的CodeSmith 开发模版下载,共享一下:
IHydratable CodeSmith
关于如何使用这一模块可参看这一文章:
Easily Create DAL for Your DNN Modules

读书杂感--开源与我

昨儿闲着无聊,看了看6月份的程序员杂志,发现有一个专题《开源在中国》, 主要介绍开源社区和开源软件在国内的一些发展历程,毋庸置疑,开源如今在国人的分量越来越重了。其间有些奇怪的是,似乎这些开源都是linux或java的专属权,我在所有文章中看不到任何关于Microsoft或衍生产品的开源的字眼,更别提我目前倾心的DNN框架了。不知这之间有啥不为人知的缘由,也许是Microsoft一直都在扮演霸主,“不开源”的典型代表吧,故此也就无从位列开源队伍了。:)
不管如何,至少我觉得有些文章写得还是不错的,我想开源精神都是一致的,DNN也是一种开源,尽管不为众人所知,故文章中提及的经验及其心得还是对我颇为裨益,故在此列举一些作为记录,也算是对自己倾心于DNN的鼓励和鞭策。同时在此有所呼吁,结交更多志同道合者(加盟dnnsun.com),希望DNN能够在国内真正的成为一个正规的开源社区,而不停留于本地化及其一些表面工作。
选择一个开源产品的标准:
1)目前的功能及其Roadmap
2)软件本身的架构
3)开发的活跃度及其社区的支持力度
4)该开源软件是否是遵守该领域的国际规范
5)与同类产品相比,可能存在移植的代价
我想补充的一点是: 6)可扩展性(这是DNN的优势)
开源之三重阶段(境界):
1)敞开心胸,拥抱开源( Open to Open Source)
2)深入开源,了解开源( Gig into Open Source)
3)融入开源,贡献开源( Get involved in Open Source )
对想做开源社区或参与开源项目的爱好者的三条建议:
1)要有激情,一定要热爱你做的项目。
2)要具备良好的语言能力,英语要达到一定的交流水平。(看来,这点并非独对DNN所特有, ^_^)
3)要真正理解开源运动的本质--共享精神,舍得把自己好的想法共享,放得下自己的名利,不能为了突出个人的贡献或个人在社区的地位就太突出自己。有些东西即使你能做,如果别人能做要尽量交给他人去做,这样才能形成一个团队,或者一种社区的精神--共享精神。(觉得这是DNN在中国最缺陷的)。
可从开源所获益的有:
1)阅读开源代码,有利于从理论到实践的平滑过渡。
评语:我想这像是对学生讲的,^_^ ,希望哪位读者如果还是在校学生的话,不妨在大学期间对代码实践有一定的重视。这不妨以我个人为例讲讲,本人对DNN的情缘也是从大学开始的,当时在一家公司实习,由于采用DNN作为底层框架,故而结识了DNN,而这一切来源于DNN当初很炫的“拖拽”功能。直至毕业前夕,论文的题目就毫不犹豫定位于DNN,尽管当初DNN资料相对缺陷,但是自己还是完美的搞定毕设,同时也有了dnnsun.com的诞生,而很让我觉得骄傲和自豪的是,答辩之间老师们看到我演示的站点竟然是一个在线站点,而且功能如此齐全,似乎有些“震撼”。
2) 阅读开源代码,与高手交流
评语: 的确,阅读高质量的代码,自己的代码风格,编程技巧和设计方法都在潜移默化得于提升,这在DNN模块开发中极为必要,因为核心代码或核心模块有很多地方可以借鉴。 这在我之前的文章曾累次提及到。
3)阅读开源代码,紧跟技术潮流。
使用开源的较高境界:(不大恰当的比喻:作者语)
开源项目多如牛毛,就像漫天的繁星,天空中有那么多美丽的星星,每一颗可能都是一个开源项目。我们在面对一个具体的需求,应该能像找到上帝的感觉,在信手挥洒之间,把这些星星组合成一个又一个不同的美丽星座。
评语: 有些赞同,具体到我个人,对开源该有些理想主义,特别是做一个非盈利的开源网站,就拿dnnsun.com来说,尽管我一直在撰写一些自己开发DNN的心得或文章,可却激不起多大的波澜,大家也没有什么交互的留言,这也许是国人的"习惯", 自不敢有所奢望。我更多还是一种自得其乐的心态,想做点事,踏踏实实做点事情,想到也许一些成果会对某个不知身在何处的DNN爱好者带来一些好处或帮助,我就心有所欣慰了。

解除DNN的传参枷锁

在上一篇文章中曾提及在DNN模块开发中传参的两种方式,其中包括ASP.NET中经典的URL传参方式,然而尽管如此,对于一些DNN初学者来说还是无从下手,这里我就简单解析其中道理及其如何在页面跳转,模块交互过程中最有效地传递参数,从而达到解除DNN之枷锁的功效。