re: Google Chrome动了我的奶酪? Klesh Wong 2008-09-16 11:17
@Wuya
vbscript比javascript方便?神奇……
这只能说明你不懂javascript,可能连vbscript也不懂,甚至根本不懂什么是编程语言。
十个人有十一种偏好,因为要面对各种不同类型的人觉得麻烦就抹杀其它人的存在是危险的想法。
re: 居心叵测的Chrome Klesh Wong 2008-09-10 10:49
Chrome回的这篇文章,用过netstat -a查过

re: 关于web,我有一个尴尬的问题想请大家帮忙! Klesh Wong 2008-09-02 11:03
何不利用又快又好的wiki/google?
re: firefox无法显示背景图片 Klesh Wong 2008-08-18 11:37
没必要用绝对路径
这里的URL是相对于css文件的路径,很灵活,无需绝对路径
re: 座谈 "克隆" Klesh Wong 2008-08-13 12:13
@Cat Chen
IClone是指IClonable接口吗?
在MSDN中似乎没找到是指“深”克隆的说明。
如果克隆可分深浅的话
那把IClonable视作浅拷贝,再另外搞一个IDeepClonable也是比较适合语义的。
re: 开幕式的蓝屏事件感想 Klesh Wong 2008-08-13 11:23
一般来说,造成蓝屏的原因多半是硬件或者驱动出问题引起的,而硬件的机会占绝大比例
re: 微軟放任許久的錯字「秣」 Klesh Wong 2008-08-13 11:14
这都让你抓到,厉害
@Anytao
言重言重,既是同道中人,当可多多交流。
兄台肯好好考虑路人甲的意见,也是难能可贵。
望能坚持,有些人名气一大就目中无人呐,根本不会去考虑别人的批评,呵呵。
System.Drawing.ColorTranslator
FromHtml方法可用来转换html颜色代码
re: LINQ参数过多时的解决方案 Klesh Wong 2008-08-11 11:40
--引用--------------------------------------------------
方明: 这种需求也不是想出来的,是一些特殊情况赶到这里了,这里讨论的重点是超过了2100个参数怎么办,而不是这种需求是怎么产生的。
--------------------------------------------------------
怎么样的特殊法?往往这种“特殊”的情况就隐喻着有不合理的设计存在,才导致需要特殊的处理方法。对于你的情况觉得有必要使用超过2100个参数,但对于大家不知道你的情况当然会认为2100个参数是不合理的。需求的产生不可能不重要,它决定实现。特殊问题,特殊解决没什么特别。从根本上,在设计层面上解决问题才配得上首页的精神。
楼主的解决方法——只能说是一个ugly trick...
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
xhtml, 99订立的标准, 而是这两三年才开始盛行, MF还很年轻
--引用--------------------------------------------------
Anytao: @Klesh Wong
关于这个示例,我会考虑你的意见,不过关于IsNull的判断,其实在示例中我已经给出了应用,你完全可以不必进行IsNull或者user == null这样的判断,而直接应用:
public static void Main()
{
UserManager manager = new UserManager();
//强制为null
manager.User = null;
//执行正常
manager.User.Login();
}
所以关于文中示例,可以全面的了解,只关注:
if (manager.User.IsNull)
{
Console.WriteLine("用户不存在,请检查。");
}
是没有意义的。
--------------------------------------------------------
试问能在程序中完全避免这种判断的出现吗?不能的话,关注它又怎么会没有意义呢?相反, 这种判断应该还是到处都是。
即使不看这个,还有其它许多问题,LZ把很多表现层逻辑放到实体类中也不是太好,违反SRP。
其实整篇都写得很好,只是个人认为NullObject的例子举得不太恰当而已。
??操作符也可以再讲多一个trick,可以 a ?? b ?? c ?? d ?? e 这样……
@Anytao
User是否Login和表现层上下文有关,跳转这些更加和具体表现层相关,原则上User实体是不应该关心这些层次。Login/Logout这些状态应该由表现层的类(如IPrincipal)包装User才是,这也是普遍做法。
NullObject应该是可以完全替代原类/接口的Dummy Instance,也就是当客户端使用这个NullObject的时候,应该是像使用一个类那样,一个类怎么还会有IsNull这个的判定。它既然是实例怎么能判断自己是不是null。最重要的一点就是NullObject的使用者就是假定了得到的永远是实例,而不会是null。
编程的习惯和直觉不是没有关系,要是不喜欢直觉这个词,用习惯来代替我所说的直觉也是一样的。
当你给某一个属性赋值后又马上调用它的方法,这也是违反了习惯。OO是模拟现实中抽象出来的逻辑的编程方法,代码的表述的逻辑有误这就是不符合OO精神的。
public static void Main()
{
UserManager manager = new UserManager();
//强制为null
manager.User = null;
//执行正常
manager.User.Login();
}
不可否认你的代码完全可以正常运行,但你不觉得这样可读性太差了吗?这样的代码你自己能看得懂,但别人都会一头雾水吧。完全不觉得这样的代码是优雅的呢。
这段代码固然貌似就不用判断用户是不是Null。但其它地方一定还需要判定user是不是null,比如说登录才显示某些信息之类,这样的NullObject根本就没意义了吧,之所谓使用NullObject就是它可以完全替代不是null时的情况,而User作为“业务实例”没办法做完全替代。
其实LZ想要“后台”整合吧,不过工程会很大,目前各个站点应该是分开独立的Application。
re: 请谨慎注意这一微软SQLBug Klesh Wong 2008-07-31 14:51
变成修改了,晕啊
@roberto
呵呵,这就是违反了common sense的结果了。
不管子查询实际上是不是从内向外执行,但外部看起来一定要符合里内向外执行的顺序。
re: 请谨慎注意这一微软SQLBug Klesh Wong 2008-07-31 13:34
@steven.zhan
括号就代表这是一个子查询
因为 SQL Server没有规定括号里面是不是属于括号里的表,才要提到common sense。
对于括号的common sense,就是括号的最高优先级,最里面的括号会被最先被执行。这是来自于数学,被广泛应用于编程,甚至说所有语言上面基本原则。
这种违反基本原则的行为不是说SQL Server没有规定就代表合理,完全不是理由。
我不认为对于ambiguous column必须做显势规定,括号已经暗示了,select CategoryID from Employees 应该被优先理解与执行。从语议上来讲已经完全可以断定CategoryID必须来自于Employees,它应该是一个“子查询”。
@怪怪
那根本就不优雅,原则上来说user.IsNull根本就违反直觉了吧。
如果user不存在则返回null或者直接抛出异常我想都是大家可以接受的行为。
相反,你返回了一个非null的实例,是不是就是暗示了user就是存在的,最后还要调用它的"IsNull"来判定它本身是不是null,这个逻辑上好像挺绕。就好像在问一个不存在的人“你存不存在”这样子。
静态类的判断也是很好的,没有逻辑上的问题。就好像你问一个第三者这个人存不存在。直接判断null就相当于自己看看那个人存不存在。
@横刀天笑
是这样子的,Null Object当然是相当滴有用,就比如说Logging,健壮的程序很多地方都是需要Logging的,但在某些时候可能又不需要进行logging,在每一次地方使用null判断是非常罗索的事情,所以一个NullLogger会很有用,NullLogger实行ILogger的行为但其实不做任何logging,这就是NullObject的美妙之处——使程序变得简洁明了。
但LZ的例子则恰好相反,不但没有使程序更加简洁,反而变得罗索。。。
re: 请谨慎注意这一微软SQLBug Klesh Wong 2008-07-31 11:43
如果语法的理解与“一般”人所期望的不同也不算是BUG, 那什么才算是BUG?
括号是有优先级的,这就是一般人的理解,括号里CategoryID竟然是指向括号外的对象,这个太违反直觉了。
这里的Null Object与直接判断null优雅在哪里?
不过是把 object == null 这个判断包装在另一个方法而已,除了罗索和多一层调用看不出有什么优势啊。
Null Object不是这么用的吧?不如举一下Logging的例子更好,
Null Logging看起来就合理多了。
re: 做了一个简单的DLINQ性能测试 Klesh Wong 2008-07-23 13:52
注意,
1.NHibernate是不会有注入问题的,除非自行拼装HQL.
2.会取回自增键值.
re: 今天你持久化了吗? Klesh Wong 2008-07-22 14:43
是hql不是hsq,不喜欢hql可以用criteria,多表查询、子查询、projection都可以,不知道还有更复杂的?
不想和hbm打交道可以用activerecord
linq。。。至少目前来说还差几个级数啊。
re: 框架设计之验证那事儿 Klesh Wong 2008-07-22 10:33
又是过滤……
re: 两个过去的心得, 外加一个回帖整理 Klesh Wong 2008-07-15 13:16
OO确实是非常难把握得好的。
re: nHibernate学习小结及代理模板 Klesh Wong 2008-07-11 20:52
实体类返回后session即被关闭,那,LazyLoad会用不了吧?
好像还是直接用ISession好吧。
re: 新.net开发十大必备工具 Klesh Wong 2008-07-11 20:39
@aspnetx
插花学会的男性成员也很少。
re: 什么是.NET2.0中的新方法 Klesh Wong 2008-07-10 12:14
我也是来说StartsWith和EndsWith.
@jyk
是EndsWith, EndWith是没有的.
re: 使用扩展方法和静态门面类实现伪领域对象 Klesh Wong 2008-07-09 23:02
@Gray Zhang
呵呵,原来如此,灵活运用扩展方法是值得肯定的。博主的文体和编排我都是十分欣赏的。
我没有恶意,举例的话,个人认为还是应该先做一些资料搜集。大家一起严谨一些,对发展是有利的。
@王弈博
不要误会我有挑衅的意思,我的确是有兴趣哦。
re: 使用扩展方法和静态门面类实现伪领域对象 Klesh Wong 2008-07-09 22:20
@王弈博
嗯,做的时候当然各有各做,实际上也很难做到那么严格。
但拿出来讨论时还是严谨些好,不然,说法一点一点偏离,最后各执一词,就没办法讨论了。搞这行也是科学性比较强的,抛弃严谨似乎有违科学精神。
据我所知充血模型与贫血模型并不是作者所说那样的定义,所以我是很想知道这种定义是从何而来。有何依据?
另外,我对那些“难以定属”的行为也很感兴趣,有时间的话不如拿出来大家一起研究研究。。。
re: 使用扩展方法和静态门面类实现伪领域对象 Klesh Wong 2008-07-09 21:22
充血模型=贫血模型+数据访问?
这个说法不知从何而来?
贫血模型坚持实体是纯粹的数据载体那是毫无疑问的,但似乎充血模型是指带有业务逻辑、行为的业务实体吧?
Employee和Department某层次上讲是对等的实体,它们之间的关系是纯粹两者之间的联系,其数据访问应该是各自有独立的数据查询管理器去对应。。如果假定Employee的查询筛选要由Department来提供的话,那Department又要由谁来提供?
Department的GetEmployees应该是用来取得部门下所有员工的方法,代表两个实体间必然性的联系,并不应该是一种查询筛选,原则上GetEmployees也不应该牵涉到数据访问方法。当Department被IDepartmentDAO返回时,其GetEmployees应该能透明地提供其相关的Employee。
在充血模型中,Department应该提供一些业务相关的功能(而不是表现层或者数据层),如返回所有员工的总工资等:Department.GetTotalSalary()
re: 英文、简繁体中文 IT 词汇对照表 Klesh Wong 2008-07-09 13:49
以前是叫工程的,project也常译作工程...现在没用简体版的VS,倒是不太清楚..
项目多指Item
re: google投广告为何这般怪? Klesh Wong 2008-07-08 14:12
@石牌村夫
我想"乐子哥"说的是这个广告,而不是博主吧.
re: 英文、简繁体中文 IT 词汇对照表 Klesh Wong 2008-07-08 13:45
emulator -> 模拟器 (没听过人叫仿真器的)
project -> 多为"工程"
deadlock -> 应为"死锁"
algorithm -> 算法 (不一定是排序)
argument -> 参数 (自变量就是变更,引数的说法没听过)
re: Switch TOR's Identity Klesh Wong 2008-07-07 20:37
什么?
re: 软件开发中,不要把重点放在“雕琢”上 Klesh Wong 2008-07-04 17:43
那你怎么解释iphone的成功啊?
--引用--------------------------------------------------
jillzhang: @深蓝
使用参数并不能完全防止SQL Injection
-------------------------------------
举个例子
在存储过程中还拼SQL的不用说了
--------------------------------------------------------
有道理,不过在存储过程中还拼装SQL也是很不好的做法.应该尽量避免.
@HappyQQ
第一种方式完全不可取
第二种才是正规的方式,不会有SQL 注入问题.
...
1.过滤是不可取的方式
2.参数化传递可以避免SQL Injection,而且即使在参数中有SQL Injection的格式,一样可以被正确地插到数据库中. 原则上来说,所有的Connector都应该provide一个encode参数的功能,如果说使用了参数方式还是会有SQL Injection的情况发生,那这个Connector一定是第三方公司出品的劣质Connector
re: 我的3D引擎----云效果 Klesh Wong 2008-06-30 16:35
好
re: 日志维护一点心得 Klesh Wong 2008-06-27 20:15
发EMAIL一般会慢一点,太慢就是SMTP服务器速度不行了。
@黑马
严格来说……是很像……
re: 求助:如何能快速接手修改别人的系统 Klesh Wong 2008-06-27 18:03
4、5把数据库字段大小调整到与最长长度一致
然后就是看看代码烂到什么程度,能收拾就收拾一下算了,实在没办法就只有重写了。
@杨正祎(阿一)
晕,就是用"强暴楼主"的方式进行支持的意思吗?
ASP下面也有类似WebRequest的ActiveX组件
Paypal有一个示例就是用那个东东做的,支持SSL
另外,也可以通过XML组件代替WebRequest
这方面的资料应该可以通过装windows server 2003 sdk文档可以查到
jscript.net跟JS区别还是蛮大的,不支持内置类型prototype扩展,提供class和extend关键字作类的声明和继承等...速度功能上是强了,不过兼容性上是弱了.
vs2008里面没有jscript.net真是相当可惜啊.
re: 读取纯真IP数据库的公用组件QQWry.NET Klesh Wong 2008-06-19 22:29
楼主辛苦了
re: 我的3D引擎 Klesh Wong 2008-06-10 11:25
支持一下
re: 探讨高访问量网站优化方案(从图片角度) Klesh Wong 2008-06-05 15:35
@姜敏
用asp/php/.net/jsp在图片服务器上面做一个页面或handle接收客户端的post。
网页上上传文件的FORM不POST到WEB服务器转而直接POST到图片服务器。