闷骚一把,关于Logo
三 08
产品设计, 技术相关 flickr, xpress, xpressr No Comments
刚设计好的Logo

同样的故意拼错,会不会当年flickr注册域名时和我遇到同样的问题呢?
顺便通知一下,DsJian2.1.0 更名为 Xpress 2.1.0
边学、边写,成长中的Blogger —— 我的互联网产品之路+简单生活
三 08
产品设计, 技术相关 flickr, xpress, xpressr No Comments
刚设计好的Logo

同样的故意拼错,会不会当年flickr注册域名时和我遇到同样的问题呢?
顺便通知一下,DsJian2.1.0 更名为 Xpress 2.1.0
三 06
技术相关 dsjian 2.1, iamben.cn No Comments
昨天我把最新程序部署出去了,地址是:http://iamben.cn/,这是我的另一个域名。
想体验的可以用 guest, guest (用户名,密码),登录后台看看。
二 07
产品设计, 技术相关 ASP.NET MVC, DsJian2.0, Wordpress, 开源博客 5 Comments
经过了很长一段时间,DsJian2.1终于接近尾声了(特别说明,中途重构了一次,因此版本 +0.1 )。
这个版本是全新开发的版本,除了基本架构保留1.0的之外,其他几乎所有东西都重构了。期间认真学习并参考了WordPress的设计理念,受其影响,以至于后台管理布局也有很多雷同之处。并吸取到一条教训:以后若要做产品,记住,先自己想,不要一开始就去看一些优秀的产品,否则你的设计思路会不知不觉的跟着这些优秀的产品走,且一发不可收拾,
更多信息,可以点这里看看
简单列一下features:
show 一些截图:
十二 12
产品设计, 技术相关 ASP.NET MVC, DsJian2.0, 博客引擎, 开源博客, 自定义主题 No Comments
前面谈到完成DsJian2.0的前端开发,其中有一点,使用ASP.NET MVC View UserControl来做博客模板,对于这一点,我自己也感觉有些别扭,今天在这里单独谈一下,这到底是怎么个情况。
背景
根据我对ASP.NET MVC的了解,项目中所有的ViewPage都必须放在Views文件夹内,Views文件夹内的每一个子文件夹对应一个Controller。不得不说这样的设计有一定的局限性,因此ASP.NET MVC 2.0才有Area这样的概念融入其中。
谈到局限性,具体表现在当我需要创建主题文件夹的时候,应该怎么弄呢?我想要的效果是这样的:Views > themes > default > All View Pages,在themes这个目录下,允许有若干个子文件夹,每个子文件夹就是一个主题包。主题包里面包含系统所需的所有View Pages,当然,共用的页面及用户控件除外。
也许由于对ASP.NET MVC的了解不够深入,存在有别的解决办法,只是我没找到而已。
解决思路
于是我就在想应该如何实现“自定义主题”,了解到View User Control(下称UC)可以放在任何目录里,只要在Render时指定好路径即可。因此我开始尝试用UC来做主题文件。
由于采用UC做模板文件,因此我的View文件就只有这样一句话:
<% Html.RenderPartial(this.CreateEngine().GetThemeVirtualPathWithPartial(“ListByCategory.ascx”)); %>
CreateEngine 是我在 ViewPage 上增加的扩展方法,即返回所谓的博客引擎(Engine),通过这个博客引擎可以完成所有博客业务数据的提取,甚至包括生成部分简单的HTML代码。
通过这样一段代码“this.CreateEngine().GetThemeVirtualPathWithPartial(“ListByCategory.ascx”)”,我可以得到当前系统指定的主题文件夹下的ListByCategory.ascx这个主题文件。
这样的话,我所有的View文件不包含任何实质性的HTML标记,所有的HTML标记应该由主题制作人员完成。我只需要在引擎上提供足够用的数据接口供制作主题时调用。
于是,我的目录结构变成如下这种形式:
Views > View Folder > View Pages
Themes > Theme Folder > All Theme Files(CSS、脚本、图片、图标、主题文件:UCs)
如果,某某人有兴趣自己开发一套模板,他只需要遵循我的规范,做一个主题包,然后放在网站的 Themes 文件夹下,就可以在后台配置使用这个新主题。类似于wordpress,我想用过wp的朋友都理解。
存在的问题
本文开始我就说了,这样的设计还是感觉有些别扭。ASP.NET一些比较好的特性好像就不能使用了,比如Master Page。我自己在尝试开发主题包时就想使用Master Page,因为这样会方便许多,但是用不了(UC 无法使用 Master Page)。
大量使用UC会不会有其他问题,比如执行效率上,目前还不得而知。所以,如果有其他更好的形式,我想我会考虑考虑,只是到目前为止还没有想到更好的办法。
十二 10
产品设计, 技术相关 DsJian2.0, 开源博客 3 Comments
完成博客程序前端的开发工作,今天在这里留个笔。到目前为止,已完成如下功能:
其他不想多说,感觉最近自己忙麻木了,因此写不出什么东西出来。对于以上Features中的一点:自定义主题,我现在还对我的设计持怀疑态度,感觉使用Mvc UserControl来做模板页面有些别扭,但到现在为止还没想好替代方案。希望能得到网络上的朋友们的帮助。
贴一下博客项目结构:

十二 06
技术相关 DsJian2.0, 博客引擎, 开源博客 No Comments
好久没上来添加新内容,一方面工作上的事情比较忙,另一方面工作之余也开始了2.0版本博客程序的开发,今天抽时间上来对2.0版本博客程序写一些说明。
上一篇文章这样写出来实在不好意思,就那么几句话,第一次看到这篇文章的朋友肯定会云里雾里,看不懂。所以今天在这里首先谈谈我所说的“博客引擎”是什么意思:
相信了解ASP.NET MVC的朋友都知道,她给了我们一个很好的模式,将View与Model分开,这样有一个好处,在你的团队中,可以根据员工的技术特长再次细分出不同的职能团队,比如细分为“数据库小组”、“业务逻辑小组”、“前端开发小组”等。
上一个版本(我说的DsJian1.0)中,我采用面向接口的开发模式,可以在约束好接口后,各个职能团队根据接口规范自己做自己的事情,最后再将整个系统整合起来,这样可以进一步的提高开发效率,易于测试……打住,这个话题说下去可没完没了。
回到正题,我之所以继续做这套博客程序,其实是为了解决一个问题:想给自己建博客网站的人不一定都是懂技术的人。如果你的程序太过技术化,可能会影响一般用户的使用。
于是自己就在琢磨,既然Mvc能很好的将展现与业务分开,那么是不是应该发挥一下这个特点,我来充当业务模型开发人员这个角色,让博客使用者来充当前端开发人员的角色?也就是说,我发布的博客程序可以没有任何View,所有的View都由博客使用者来创建,当然前提是我要提供非常易于使用的数据接口(这才是重中之重)。
我提供所有数据存储、业务接口、安装、后台等,因此实际上我所说的“博客引擎”就是一个套博客平台。使用者不用关心平台内部是如何实现的,只需根据自己的需要创建主题就行了。
当然,要完成这样的平台是需要花很多心思的,会遇到很多问题,也不简单,但我想我还可以坚持。简单理了一下DsJian2.0 Features,关于博客的开发状态,可以在这里查看:
十一 11
技术相关 ASP.NET MVC, IOC, MySoft.Data, 开源博客 1 Comment
不小心把“ASP.NET MVC开源博客”放到了博客园,当初放出来也是不想让自己前段时间的心血白费,想提供给需要的朋友参考、学习,就匆忙的放到了codeplex上,也没详细写上配置说明等,所以抱歉。今天在这里写一些博客的安装、配置说明。
1、数据库
在codeplex 上,需要下载两个包,一个是程序源码,一个是我所使用的ORM组件,大家可以在我的 codeplex上找找。
把程序源代码包下载下来后,解压后的根目录有一个文件:DsJian.sql,在SqlServer 2005中建立好数据库后执行一下文件中的SQL语句。
另外,里面有一个User表,有一点我没考虑全,我的后台用户密码是加密的,加密方式在程序里面有,如果需要快速使用后台,在User表里插入这条记录:UserName : dsjian passowrd : okV4p2MWePg= (解密后: 123456)
数据库链接地址在Web.Config中配置,仔细找,你会发现在哪里配置的。
2、源代码
源代码有好几个项目,我在这里简单介绍一下,后面有时间可以详细写点文章。
大体思路是这样的,我写了一个通用的接口层。里面包含数据库访问以及部分业务逻辑服务接口,Mvc层和Web层通过Services层完成数据访问以及业务逻辑。
从耦合的角度来看,Web 只和 Mvc 层有直接的依赖关系,所有的业务都通过 Interface 来实现。而如何获得接口的实例,我实现了一个简单的IOC容器,放在基础框架中。
接口 与 实例的绑定在Web.Config中完成,可以看看配置文件中的:ObjectContainer 配置节。
3、基本使用
需要安装ASP.NET MVC 1.0,后台路径是:/ds_admin,输入用户名密码即可
十一 04
产品设计, 其他&IT观察, 技术相关 IE6, 产品设计, 浏览器兼容, 用户体验 No Comments
最近在做一个产品:基金筛选器,为了有更好的用户体验,我们使用的脚本特别多,包括异步请求、拖拽、浮动层、大量的DOM控制等等。
在产品设计阶段给团队的要求中其中有几条是这样的:
要达到这些要求,我们不得不使用大量的脚本来控制,比如动态构建、添加与移除筛选条件、自动筛选结果并显示、快速保存自己的筛选方案等等。
这样做下来,测试初期细节方面的问题会非常多,尤其是浏览器兼容性方面。我大致看了一下,每一段特殊的脚本,我们都会做5中浏览器兼容测试(IE6、7、8,Firefox,Chrome),说实话,挺累的。
当然,大部分浏览器都是不用过分的去关照的,比如FF,Chrome,包括后来的IE8。但处理IE6这个问题上,着实要我们头痛。
因为IE6的脚本和W3C的标准出入太大,而且DOM的结构都不一样,所以我们不得不在上面花更多的时间。有时候忙活了半天,可能有些问题就是解决不了,这才是最头痛的。
比如,在处理筛选并自动显示结果(当条件改变,自动执行筛选并实时显示结果)这个Feature上,若结果记录数太多,IE6下的性能会非常差,对于这个问题,我们做了很多针对性的措施,最后还是不满意,于是我们不负责任的用下面的提示代替了结果列表:

这样做的确很不负责任,也算是一次大胆的尝试,因为我们IE6的用户群还是占很大一部分。但倘若不这样做,用户体验会更差。说不定还会砍掉一些更好的功能。
我们需要对用户负责,因此无论如何我们也要支持IE6;但从未来的发展趋势上来说,为了兼容IE6可能会使得我们放弃一些更先进的技术。
有时候在面对这样的取舍问题时,的确让人难以抉择。希望和有缘见到这篇文章的朋友一起讨论这个话题。
十 26
技术相关 ASP.NET MVC, IOC, 低耦合, 开源博客 2 Comments
前段时间学习ASP.NET MVC的一个小小成果。能支持搭建个人博客,具体细节如下:
1、多层架构
以面向接口的开发模式,将前端页面、服务层、数据库层完全解耦。为什么要这样做,我想既然用MVC模式来搭建系统,目的就是构建低耦合的应用程序,就因充分发挥其系统结构清晰、高可测试性、高效率开发的特点。
2、ORM使用MySoft.Data
选择一个好的ORM工具,可以大大的提高开发效率。在这个项目中,我选择了MySoft.Data,为什么选择这个ORM框架,有兴趣的可以看看之前我写的文章。对于数据库层,使用了经典的Repository模式,这样可以使你可以方便的替换ORM框架,你可以很方便的重新构建一个数据访问层。只要你遵守我的IRepository接口规范,就可以通过WebConfig配置的方式替换数据访问层。
3、DsJian.OC — 简易的IOC容器
根据我对IOC的理解,实现了一个自认为简易的IOC容器(但不知道真正意义上的IOC具体是什么样子,也没有深入的研究)。实现IOC容器的目的也就是为了将数据访问层、服务层、Web层中的对象管理起来,实现依赖注入,最终目的也是构建低耦合的应用程序。
4、脚本框架用JQeury
这也是ASP.NET MVC推荐的脚本框架,个人认为JQuery也是不错的,轻量级但功能强大的脚本框架。
有兴趣的朋友,可以在这里下载源码:
http://dsjian.codeplex.com
特别提醒,UI我套用了wordpress的 iNove 主题。
演示:http://demo.dsjian.com/
代码配置说明,看这里
十 22
刚刚把wordpress版本的站点建好,就整天只知道玩模板、装插件。搞的最近都没什么东西出来,今天突然想写点,居然感觉手很生,汗!
好吧,我承认,我偷懒了,《MySoft.Data入门篇:前台页面开发》这一小节被我略掉了。一方面最近一直比较忙,另一方面也觉得这个示例比较简单,我们的重点在如何用MySoft.Data进行数据库操作,因此就把这一节给K掉了。
回顾一下:
MySoft.Data入门篇:准备工作:介绍MySoft和一些本专题的准备工作(专题目录、表结构等);
MySoft.Data入门篇:实体生成:生成实体是MySoft.Data比较重要的一步,用开发者提供的工具可以方便的完成实体生成工作;
MySoft.Data入门篇:编写业务逻辑: 本专题的核心部分,重点介绍利用MySoft.Data实现简单的数据库操作,如增、删、改、查;
相关链接:
最近评论