改变ASP.NET动态编译时使用的临时目录位置

当系统分区的空闲空间越来越少的时候,任何能腾出空间的方法都是受欢迎的。比如说改变ASP.NET动态编译时使用的临时目录位置。

这个设置可以用于machine.config或者web.config配置文件中,是compilation元素的tempDirectory属性。详情可以参见http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfcompilationsection.asp

当然定期运行Disk Defragment Utility也可能让空闲空间稍多一些,更能提高系统性能。

Whidbey C#: 属性的getter,setter可以有不同的可访问性

C# 1.0版本下,可读可写属性的getter和setter必须有相同的visibility(可访问性)。这不能满足有些情况下的需求。2.0就解决了这个问题。如下面例子所示,Capacty的setter比getter的Visibility要小。

            public int Capacity

            {

                  get

                  {

                        return capacity;

                  }

                  internal set

                  {

                        capacity = value;

                  }

            }

            private int capacity = 0;

智力/知识测试:这样的代码拿到1.0的csc上编译,会得到什么样的输出呢?

风云再起 ── 理想主义与现实主义的碰撞

我们这边在讨论“各国定价”(更正:“微软中国澄清公司并未改变全球统一定价策略“),他们那边在讨论writing software for free是否能make a living。有时觉得,这世界上软件行业里类似宗教性的狂热者也真厉害,一点不同意见都听不得。

个人是比较认同Clemens Vasters观点的。

商业公司的最终目的是要赚钱,采取“各国定价”这样皆大欢喜的措施,估计也是从长远打算的结果,是为了占据市场的有利地位。

象我们这样的普通人需要通过工作(譬如写商业软件或企业软件) 赚钱,来养家糊口。但如果你本来就很富有或除了工作/生活外还有精力去写免费软件,或参加绿色和平组织推动世界和平,无论是为了理想还是名声,我是支持你的

深究“细节”

前几天看到 mvm 在一篇“细节体现差距”的 blog 讲 HK 的 ATM 是先吐卡后吐钱,而北京的 ATM 是先吐钱后吐卡,从而使 mvm 的朋友拿钱走人,却把卡丢失了。

既然是说“细节”,那我也来凑凑热闹,深究这个细节。

首先要说明的是,在北京各个银行 ATM 的先吐钱还是先吐卡的顺序并不相同,中国银行的 ATM 就是先吐卡,后吐钱,而其它的好几个银行就是先吐钱,后吐卡,所以 mvm 根据此“细节”来说明大陆和 HK 的金融服务差距,并不恰当  : P 。

其次,说说两种方式的优缺点:

1、先吐卡,后吐钱

优点:确保银行卡不会丢失,很少有人蠢到把卡拿走了,却把钱忘记了的这种程度,因为他(她)到 ATM 上就是去取钱的。

缺点:可能造成操作繁琐,给银行客户带来不必要的麻烦。

为什么呢?因为银行为了防范风险,在 ATM 上每次取现金的数额有限制,由 1000 – 3000 不等(一般每日最多支取 5000 元),如果我要在一个单次限额为 1000 的 ATM 上取 5000 ,就得插五次卡,如果我最后还想查询一下余额,又得插一次卡,“比较烦,比较烦,我最近比较烦”…

2、先吐钱,后吐卡

优点:可以在一次插卡后完成所有的操作(查询、取款、再取款、再查询…),给用户提供了完美的用户体验。

缺点:拿钱后乐晕了,忘记了拿卡。不过,现在好多 ATM 支持自动吞卡功能,即如果你忘记了拿卡,指定时间过后,ATM 会吞卡以免落后其它个人手中,到时候只能去柜台领取了。

别忘记了,现在有的 ATM 还打印凭条,这样钱、卡、凭条的先后顺序就更值得研究了,各个银行可能面对不同的客户群体,还要考虑他们的特点和使用习惯,学问哪 …

先吐卡,后吐钱,先吐钱,后吐卡 … ,都快成绕口令了。

不要改变GAC文件夹的ACL

任何计算机安全系统(包括.NET的CAS)的保证都可以在人为的破坏下荡然无存。

比如说GAC文件夹(其位置在%windir%\assembly)继承了%windir%的ACL(Access Control List)。这就保证了一般用户不可以任意往GAC中添加程序集(assembly)。由于这个保证,.NET运行时对GAC中的assembly自动赋予Full Trust的权限,而且略过Strong Name Signature Verification. (安装在GAC中的assembly必须被“强名称[strong name]”签名)

可是,如果ACL被人为改变,这里的安全保证就不存在了。