18

三月

2010

在.net中使用MongoDB[一]插入数据

Author: 化石 | Categories:编程|

目前mongodb官方还不提供.net驱动,我原来想,是不是就只能通过C++/CLI来访问了。所幸.net社区还是比较活跃的,有很多“山寨”的.net驱动。在官方网站上找到一个叫mongodb-csharp的项目,应该是比较靠谱的。

下载MongoDBDriver-Debug_2010-03-01.zip,解压缩,里面包含3个程序集:

MongoDB.Driver.dll
MongoDB.GridFS.dll
MongoDB.Linq.dll

通过第一个程序集就可以访问数据库,做简单的SUID操作了。Mongodb-csharp使用起来倒也简单,代码非常简洁。让我们看看插入数据的代码:

using MongoDB.Driver;

Mongo mongo = new Mongo();
mongo.Connect(); // 连接服务器

Database db = mongo.getDB(”org”); // 获取数据库

IMongoCollection collection = db.GetCollection(”user”); // 获取集合
Document doc = new Document();
doc["name"] = “fossil”;
doc["age"] = 25;
doc["blog"] = null;
doc["birthday"] = DateTime.Today;
collection.Insert(doc); // 插入文档

db.Logout();

mongo.Disconnect();

MongoDB非常接近RDMBS,很多概念都能在关系型数据库中找到对应。比如都有服务器和数据库的概念,集合对应表,文档对应记录。上面的代码中,我们尝试保存字符串,数字,null和时间类型的值,都很方便。

MongoDB中的文档其实就是一些键值对的集合。每个文档都有一个”_id”键,其值的类型是ObjectId,对应mongodb-csharp中的MongoDB.Driver.Oid类型。在插入时可以指定_id的值,如果不指定的话,在插入成功后,doc对象会被自动添加一个key为”_id”的键值对。可以考虑将这个key作为自动编号的”主键”来用。

MongoDB.Driver.Oid对象转换成字符串的时候有点奇怪,如果调用oid.ToString()方法的话,会发现返回的是被两个引号引起来的一串数字。不知道这个类库的作者是怎么想的,反正我是不需要这两个引号。用下面的方法来获取不带引号的字符串:BitConverter.ToString(oid.Value).Replace(”-”, “”).ToLower();

IMongoCollection.Insert方法有四个重载,也可以传入Ienumerable类型,一次保存多个文档。

说了这么多,还是运行一下看看效果吧:

1. 启动MongoDB

2. 编译执行

3. 在客户端Shell中查询看数据是否已经插入成功。输入:

use org
db.user.findAll()

如果你还不知道怎么启动服务程序,或者不会使用客户端的话,可以看这篇日志

12

一月

2010

再谈Javascript中的字符串连接性能

Author: 化石 | Categories:编程|

3年前,Ajax开始火热起来的时候,很多关于Javascript的书都会谈到js中字符串相加的性能优化问题。解决的方法就是使用Array的join方法。这个方法确实很妙,在IE6,IE7下能提升大约5倍的性能。

3年后,偶然发现join比+=高效的说法不再正确了,在某些浏览器里。简单测试了一下,在IE 8,Chrome 4,Opera 10,Safari 4中直接使用字符串相加的方法要优于使用数组join,看来新浏览器都已经对此做了优化——除了Firefox。

有兴趣的同学可以去测试一下,网上的测试代码一大把,都是雷同的。注意测试的先后顺序会影响测试结果:比如先测+=再测join和先测join再测+=的结果有差异;前后两次join的结果也不同。

另外,arr[arr.length] = text 执行起来也比 arr.push(text) 略微快些。

18

十二月

2009

mongoDB初体验

Author: 化石 | Categories:编程|

mongoDB是最近比较热的NoSql数据库之一,它保存的是类似json的数据集合。虽然读写效率不及其它key-value数据库,但是也比RDBMS要高很多了。json数据相比key-value更有层次,开发速度应该会更快一些。不过借助一些开发框架,基于kv的开发应该也很简单,我只是胡乱说说。一般程序员都会关心保存是否方便,查询是否简单,这个也是mongoDB的优势。mongoDB有windows版本,而且json比较有爱,可以很方便地输出给前端。

官方号称mongoDB非常适合保存大尺寸,低价值的数据。这个是什么意思?500年都不会有人去翻动的一个企业的规章制度,以及500年前某个领导的慷慨致辞,或者年会录像。这些东西以前是文本,现在是视频,非常适合大尺寸,低价值的标准。有个数据库非常适合保存低价值的数据?这很容易让人联想到SqlServer2008的FileStream类型,它也很适合保存这些东西。是不是我们可以用mongoDB来搞个分布式的文件系统?好像很适合用来当文档管理系统的后台数据库。

不管怎样,先玩玩她再说。

阅读全文

20

十一月

2009

Chrome OS 首批演示和技术讲解视频汇总

Author: 化石 | Categories:其它, 编程|

谷歌于美国西部时间11月19日上午10点(北京时间11月20日凌晨2点)在美国总部举行了Chrome操作系统的新闻发布会,谷歌产品副总裁Sundar Pichai和谷歌Chrome操作系统工程总监Matthew Papakipos两位高管对Chrome OS进行现场演示。请看Google官方发布的6段Chrome OS视频:

阅读全文

11

八月

2009

3PAR 存储架构解析

Author: 化石 | Categories:编程|

作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明
网址: http://www.dbanotes.net/arch/3par_arch.html

对于国内存储市场来说,3PAR 是不折不扣的后来者。也是个相对陌生的存储产品,以至于其竞争对手的人员甚至都不知道这家公司已经杀入中国市场。

3PAR 在 1999 年成立,几个创始人主要出自 Sun ,前身叫作 3PARdata , 2008 年上市。要知道在存储技术领域竞争还是比较激烈的,EMC / HDS 等控制着高端存储的主要市场,3PAR 能突破技术壁垒并最后成功上市,没两把刷子那是绝对做不到的。

InSpire 硬件结构

3PAR 背板采用全网状的连接结构,每个控制器节点之间高速直连。因为是全网状的,所以基本上一个链路坏掉只影响直连的两个节点的通信,对其它节点无影响。每个控 制器节点内置一块硬盘,用于操作系统安装。控制器节点最多可以扩展到 8 个,是 3PAR 存储最核心的组件。

相比之下,HDS 架构采用全光线交换方式(Universal Star Network),而 EMC 是采用直连矩阵方式(新一代产品采用虚拟矩阵架构–Virtual Matrix ,其实已经放弃了直连矩阵架构了)。这些连接方式的孰优孰劣历来是厂商攻击竞争对手的着眼点,能否最大限度发挥性能是用户最需要关心的。

3Par_full-MESH.jpg

3PAR 针对 I/O 指令和数据移动使用不同的计算芯片。I/O 指令(元数据/控制Cache)用 Intel 的芯片,而 数据移动/Cache 则使用专门设计的 ASIC 芯片来完成。

3Par_Controller_Node_IO.jpg

因为有专门的硬件 ASIC 芯片用于 RAID 5 XOR 校验,3PAR 号称有了其第三代 ASIC 芯片,实现的 RAID 5 是业界最快的,甚至 SATA 盘也能有不错的性能表现。(从 Oracle 公司测试的数据来看,和 RAID 10 速度的确相差无几。)

InForm 操作系统软件与虚拟化

3PAR 的操作系统叫 InForm,最初就是面向层次化的设计。与其他存储不同的是,3PAR 所有磁盘被分成 256MB 统一大小的小盘(Chunklet),可以根据需要用多个 Chunklet 组成 RAIDlet(逻辑磁盘)。因为这个独特的设计方式,3PAR 是可以很容易做到不同容量的磁盘混用,同一个 RAID 组里都可以有不同大小、不同转速的磁盘混用,这是其他存储做不到的。而且,所有的磁盘都可以利用,因为Hotspare Chunklet 以更小的单位分散在不同的磁盘上,也不再需要单独留热备盘。空间利用率可以更充分一些。

3Par_3level_virtualization.jpg

多说一句,有这个冗余机制,3PAR 更换磁盘也是与众不同:直接抽磁盘盒子(一个盒子可是四块磁盘啊),我当初看到 3PAR 技术人员这么操作真是着实吓了一跳。

因为固定大小的 Chunklet 的存在,可以将 I/O 更为均匀的分散到多个磁盘上。

3Par_balance.jpg

对于熟悉Oracle 的朋友来说,会发现这和 ASM 的思想非常接近。因而也可以和 Oracle 数据库进行无缝集成:

3Par_Thin_Provision_Oracle_ASM.jpg

因为软件做得非常具有易用性,日常管理与维护远远没有其他高端存储那么复杂,新增磁盘这种事情,都是一行命令之后底层自动处理。其实在 Thin Provisioning 方面 3PAR 也是很值得一说的,比一些厂商的伪 Thin Provisioning 具体多了。限于篇幅,不赘述。

3PAR 在美国有很多金融证券行业的客户,也有 Web 2.0 行业的客户–MySpace 。在保证 I/O 响应在 10ms 以内的前提下,3PAR 的 IOPS 能力非常优异(这才是卖点,不难理解其客户多集中在证券、金融领域)。虽然有些厂商号称能得到更高的 IOPS ,但那是在 I/O 响应时间很差的情况下的数据。要说明的是,现在随着一些存储厂商在高端服务器上也支持 SSD ,未来几年如何还要再看。

前两年 3PAR 推行所谓 Utility Storage(功用存储) 理念,现在貌似改成敏捷存储了。说实话,我觉得敏捷存储真的挺适合的,3PAR 命令行批量创建 LUN 真的很让人感觉舒服。当然,也在宣传云存储和绿色存储的理念,那是题外话了。

3PAR 原来只做中高端市场,只有 T 这一个系列,现在也开始关注中低端市场了,推出了 F 系列的产品。软硬件体系基本没变,倒是没仔细看过。

(Note: 相关图片主要来自 3PAR 公开资料.)

10

八月

2009

新电脑

Author: 化石 | Categories:活着, 编程|

禾白的电脑年老体弱,无规律间歇性不能开机,因此周日和禾白一起去百脑汇配了台新电脑。配置如下:

CPU:Intel Core 2 Quad Q9400/盒装 ¥1320
主板:华硕 P5Q Turbo ¥990
显卡:铭瑄 极光9800GT巨无霸 ¥690
内存:金士顿 DDR2 1066 2G骇客神条(KHX8500AD2/2G) 两条共¥400
硬盘:希捷 1TB SATA2 32M(7200.12/ST31000528AS) 两块共¥1300
电源:¥280
机箱:AOC 睿彩6062B ¥160
顺便买了个TP-Link的无线路由:TP-Link TL-WR841N ¥180

总计¥5340,成交价¥5280,另外要了一根DVI的线和一根HDMI的线。

这个配置虽说不算顶级,不过也算不错的了,可以说是相当不错。

CPU

本来打算买Q8400的,只是没货,所以换成Q9400。老板很豪迈地说,这两个CPU价格只差30块钱,我后来网上一查差了300块钱。网上报价要1590,实际上没那么贵。

Q8400和Q9400没有频率上的差别,不过缓存大小差了近一倍:前者L1=4×32K / L2=2×2M,后者L1=4×64K / L2=2×3M。另外,Q9400支持Virtualization(虚拟化)技术。因为基于硬件的虚拟实现能提供更好的性能,应该很适合像我这样要开虚拟机工作的同学们。

再往上,Q9550和Q9400差异貌似只是在倍频上——一个是8.5X,一个是8X,也没什么好考虑的了。

主板

P43和P43芯片组都是intel最后一款基于LGA775的芯片组,它们之间的区别大概就是P45支持Cross Fire技术,而P43不支持。我和禾白都不是游戏玩家,只是我想玩玩磁盘阵列,所以本来选了华硕的P5QL-E 。不过又是没货,后来在老板的哄骗之下买了现在的板子。

不过可耻的是,虽然已经组装好了,系统也装好了,但是到目前为止,还不确定是否成功启用了RAID模式,也没能修改RAID模式。这个板子的南桥是ICH10R,号称支持RAID0、RAID1、RAID5和RAID10。我想切换到RAID10模式。研究了半天,没能成功,暂时放弃了。

显卡

最终买到的也不是当初想好要买的那款,那款又没货了。对显卡不敏感,没什么好说的。9800GT的卡,1G显存,可以启用Vista的Aero特效。上次给禾白装Windows7,妄图在MX440显卡上开Aero,最终屎败。这次再装Win7,应该能成功了吧……

内存

本来禾白想要买金士顿 DDR2 1066 4G骇客神条套装(KHX8500D2K2/4G)的,套装的散热片和漂亮,像两把蓝色的梳子。还是没货,最后换了普通散热片的那种,两者除了散热片不同之外,其它都一样。也罢,反正内存插在机箱里也看不到。

硬盘

去之前在网上看中了联强代理的希捷盒装硬盘,价格¥650。只是老板说只有建达蓝德代理的,只好拿蓝德的盘了。大概是因为它是上海本地代理商的关系。两家的硬盘不一样,联强的是中国产的,蓝德的是泰国产的。价格当然也不一样,蓝德的应该¥600不到,被斩了一笔。

这个硬盘支持NCQ技术(好像SATA II硬盘都支持,囧),如果不是用来做RAID的话,在BIOS的南桥设置中打开AHCI模式(默认是IDE模式),可以很大程度上提升读写性能(7%甚至更高)。南桥芯片ICH6以上应该都支持。关于如何启用NCQ,可以参考这里

基本上没一个是有货的……

除了CPU和主板比预期要好之外(增加了金钱投入),其它配件品质都有所下降,小有遗憾。

27

七月

2009

微软向Linux Kernel贡献两万行代码

Author: 化石 | Categories:编程|

微软在GPLv2协议下向Linux Kernel 2.6.32贡献了3个Linux设备驱动,两万行代码。

微软开源技术中心主管Tom Hanrahan解释了微软作出这个非同寻常举动背后的动因:

我们有必要理解虚拟化的一个关键点。如果操作系统作为虚拟机运行,那么它得清楚这件事,这样就不会将调用直接发给各种外围设备了。在微软的术语中,我们称其为启迪(enlightenment)。Windows Server 2008就被设计成这样,因此它清楚何时作为虚拟机运行,何时在物理硬件上运行。

为了让Linux能在Hyper-V上拥有同样的体验,我们必须将这种启迪赋予给它。要想实现这一点则需要运行Linux设备驱动。

以前这些设备驱动是可以下载并用在Hyper-V的第一版上的,然而Linux社区使微软相信(通过Greg Kroah-Hartman,他是在这个议题上与微软进行交涉的第一人)增加Linux设备驱动的办法就是将其贡献给社区,这样任何商业或非商业发布者都能够随意使用、修改并分发它们了。

微软开源技术中心经理Hank Janssen(他领导的团队为这些驱动编写代码)承诺他们不会半途而废:

我们将继续更新驱动代码以不断增强其协同性,同时也希望社区中的开发者觉得这些代码对他们是有用的,值得为其付出。

451 Group的分析师Jay Lyman就微软的这个举动发表了自己的一些看法。他认为微软会保留这些代码的知识产权:

这些代码的版权属于微软,贡献者的荣誉归功于该工程的领导者Hank Janssen——微软开源技术中心的程序经理。

然而他的理解却是微软并不会声明任何专利权,因此也不会向使用代码的人索取任何费用:

我们不妨做最坏的打算,假设微软这么做是个阴谋:他现在为Linux贡献代码,然后去申请专利。但理论上是否存在这个可能完全取决于我们对GPLv2的理解。

…最终这是一个法律上的问题,或取决于律师的口才(显然这么说带有讽刺意味)。与此同时,我们认为微软通过GPLv2来贡献代码包含了一个承诺:不会对代码的使用收取费用,也不会对代码申请任何专利。

Lyman还解释了微软之所以这么做的原因所在:

Red Hat与Novell发布的Linux已经支持enlighten模式了,这要归功于与微软的合作开发。微软向Kernel贡献代码的一个好处是减少了重复开发工作,同时也降低了支持多种不同Linux实现的代价。一旦Kernel接受了代码,微软将以这些代码为基础进行未来的虚拟化集成开发。

这也意味着Linux的社区发布版也可以使用这些代码,这为微软在主机市场上开创了更多的机会,因为Linux的社区发布版如Ubuntu、Debian 与CentOS都是非常重要的。这也加强了这些社区操作系统挑战Red Hat与Novell的能力,而后者对于Windows来说是更加直接的挑战者。

别搞错了,微软之所以这么做是由其利益驱使的。他必须要满足使用多种操作系统和混合环境的企业用户的各种需求,微软已经从差异化其Hyper-V技术与虚拟化领导者VMware中受益无穷了。我们有理由相信相对于VMware来说,微软对Windows的虚拟化会对Linux提供更加友好的体验。

需要说明的是,Linux无需借助于上面提到的设备驱动就能运行在Hyper-V上,但性能却很差。这是微软首次向Linux Kernel贡献代码,也是首次在GPLv2下发布代码。

查看英文原文:Microsoft Is Contributing 20,000 Lines of Code to the Linux Kernel

4

七月

2009

23个.NET开源项目

Author: 化石 | Categories:编程|

Eric Nelson是微软技术的传道者,也是MSDN UK Flash的技术编辑,他编写了一个列表,列出23个UK开发人员推荐的.NET开源项目。微软的一些开源项目如ASP.NET MVC、DLR、IronRuby、IronPython、MEF等则未列入其中。

Eric尝试只包含一个测试框架和一个mock框架,即使有很多其它的项目同样入围。他列出了以下项目:

  1. [TEST] xUnit.net - 用于TDD的最好的测试框架之一。
  2. [TEST] RhinoMocks mocking framework – 通过创建mock使测试更简单。
  3. [TEST] White for automation of Windows applications – 用代码驱动Windows程序来测试。
  4. [TEST] Gallio Automation Platform – 可以运行很多测试框架,如MSTest、xUnit、NUnit以及MbUnit。
  5. [DATA] Fluent NHibernate – Fluent NHibernate让你可以用C#代码来设置映射关系。
  6. [OOP] StructureMap Dependency Injection/Inversion of Control - 解耦类和依赖。
  7. [OOP] Managed Extensibility Framework – 从静态编译程序转换到动态语言程序
  8. [APPFX] s#arp architecture for web applications – 用ASP.NET MVC和NHibernate快速开发web应用程序。
  9. [APPFX] OpenRasta REST based framework for building web applications – 让你的程序拥有一个REST API接口。
  10. [APPFX] CSLA.NET Application Framework – .NET开发综合框架
  11. [APPFX] Spring.NET Application Framework – Web开发综合框架
  12. [RUNTIME] Mono enables .NET on Linux and Mac – 在Linux、BSD和OS X上使用.NET.
  13. [UTIL] Sandcastle Help File Builder – 创建MSDN样式的文档。
  14. [HELPER] EasyHook for Windows API Hooking – 用托管代码扩展非托管代码。
  15. [HELPER] Json.NET for working with JSON formatted data – 用一条语句序列化.NET对象。
  16. [HELPER] Excel Data Reader for Excel 97 to 2007 – 将Excel文件读取到Dataset中
  17. [HELPER] #SNMP Library – 对SNMP的包装。
  18. [HELPER] DotNetZip Library – ZIP库和示例。
  19. [HELPER] Visio Automation Library – 用C#、VB和其它语言驱动Viso
  20. [HELPER] PHPExcel is not just about Excel! – 读写Execel 2007、PDF、HTML等文档的PHP类
  21. [HELPER] Argotic Syndication Framework for RSS, Atom, OPML and more – 读写聚合内容的库
  22. [HELPER] NLog logging library -让你的程序易于调试
  23. A great directory of C# Open Source software – 一个非常好的库、框架和工具列表

还有一些提交的项目没有进入列表:

  1. Castle
  2. MvcContrib
  3. Subversion
  4. Nant
  5. log4net
  6. Lucene
  7. CruiseControl
  8. MEF
  9. Paint.NET

一些使用MS-PL许可证的微软项目:

  1. ASP.NET MVC Open Source
  2. .NET Dynamic Language Runtime (DLR)
  3. IronRuby
  4. IronPython
  5. Silverlight Toolkit
  6. Ajax Control Toolkit
  7. Managed Extensibility Framework (MEF)

MS-PL是OSI认可的许可证,GNU也认可它为免费软件许可证,它允许任何人查看源代码、修改源代码并发布修改后的源代码。而且此许可证并不限 制代码只能运行在Windows上,这样就可以将代码移植到其它操作系统,例如Mono(Linux上的.NET)和Monolight(Linux上的 Silverlight)。MonoDevelop有一个插件,可以用来在Linux和Mac OS X上开发ASP.NET MVC程序。

转载自:http://www.infoq.com/cn/news/2009/07/23-.NET-Open-Source-Projects

英文原文:23 .NET Open Source Projects

21

五月

2009

一个检测文本字符编码的.NET实现

Author: 化石 | Categories:编程|

字符编码检测,大概在网络爬虫中应用比较多。不过网页的编码检测相对比较简单:web服务器一般都会返回EncodingType,实在不行,也可以去http-equiv属性为Content-Type的<meta>标签中去找。如果说要检测txt文本文件,那就难搞了。除了带BOM头的unicode编码的文件之外,其它的文件到底是什么编码,绝对是个未知数。

这么有挑战性的工作,要我来做,那肯定搞不定,只好去找别人的实现了。

略微google了一下,结果还是挺多的。不过大多数实现貌似都源自于Mozilla的universalchardet。大概的思路就是根据字符分布的概率来判断,有兴趣的同学可以参考这里:A composite approach to language/encoding detection。另外还有同学翻译了中文版:一种语言/编码检测的复合方法

不过这些都不是可以直接拿来用的东东,还好有几个同学已经根据这个方法和Mozilla的C++代码自己实现了.NET的版本:

  1. NCharDet。这个貌似是一个基于JCharDet的版本。虽然搜索结果挺多,不过测试下来,准确性有待提高。
  2. nuniversalchardet。在google code上面找到的国产版本,翻译自juniversalchardet,是jchardet的升级版本。既然是jchardet的升级版本,效果自然要比nchardet要好。实际测试的结果也是,准确率很高
  3. chardetsharp。这个号称是直接从universalchardet翻译过来的,不过支持的语言数量实在是少了一些。而且作者有些时间没有更新过了……
  4. 还有一个java的简化版:http://dev.csdn.net/article/10/10961.shtm。有人把它直接转成C#版了,也不是很准确。
  5. 差不多就这些了……

最后我用了nuniversalchardet,代码调用比NCharDet简单很多,又准确。点击这里下载源代码,里面有测试项目,可以在那里看调用代码怎么写。

16

五月

2009

在新窗口中打开链接

Author: 化石 | Categories:编程|

在严格的XHTML文档模型中,a元素是没有target属性的。如果出现target=”_blank”, target=”_top”这样的属性的话,都将导致不能通过W3C的校验。transitional则没有这样的限制。虽然打开很多窗口会让任务栏变得很混乱(Firefox下可能会打开很多标签页),但是仅仅根据W3C标准就判定不应该使用target=”_blank”显然太过草率。根据我们的经验,太过绝对说法往往不怎么正确。

对于资深网虫来说,他们更喜欢所有的链接都在同一个窗口中打开,而由他们自己来决定是不是要在新窗口中打开。在Firefox里,可以按住Ctrl点链接,以强制在新标签页中打开一个链接。当他们在点到一个在新窗口中打开的连接的时候,感觉就像是踩到了一砣大便。有趣的是,在有些时候,比如看新闻,我个人更习惯在新窗口中打开一个页面。因为按Ctrl+W比按Backspace方便得多。这样看来,并非所有在新窗口中打开链接的做法都不可取,下面略微列举一下。

建议在新窗口中打开。如果打开一个链接会中断用户当前的操作的话,最好还是在新窗口中打开。比如:

  1. 广告链接
  2. 注册表单的用户协议
  3. 帮助
  4. 正在编辑的文章的预览链接
  5. 查看图片
  6. 下载文件
  7. 查看页面的可打印版本

不应该在新窗口中打开:

  1. 分页导航
  2. 返回链接
  3. 注销/退出链接

另外一些场景则比较自由。比如跨站链接,可以在新窗口中打开,因为目标页中可能并没有返回到原始页面的链接。

PS:独立博客的好处就是你想写什么都没人管的着(老婆和老大哥除外),这样的文章要是放到博客园首页的话,很多人就会大叫“博主还是把文章移到新手区吧”。但是谁不是从新手晋级到高手的呢,真是奇怪。

15

五月

2009

在IIS6.0中启用gzip压缩功能

Author: 化石 | Categories:编程|

如果网站上有比较多的客户端资源(如js和css)的话,启用gzip是一个很有效的提高网站访问速度的做法。

1. 在IIS“网站属性”对话框的“服务”标签页中,钩选“压缩静态文件”的复选框。

2. 在命令行中输入“iisreset -stop”,停止IIS服务。

3. 因为默认只压缩htm/html/txt文件,所以要修改 %windir%/system32/inetsrv/MetaBase.xml 配置文件中的 IIsCompressionScheme 节点。(可以搜索“/gzip”来快速定位)

修改“HcFileExtensions”属性,添加css和js。

另外一个属性比较有意思,那就是HcDynamicCompressionLevel属性。网上很多人都说这个是设置压缩比的,0表示不压缩,10表示最高压缩比。实际上这个属性对静态文件压缩没有任何影响,可以忽略掉。

4. iisreset -start,启动IIS。可以用firebug的网络功能来看一下js文件的体积是不是减小了。

PS:另外几个提高访问速度做法是

  1. 启用内容过期,为静态文件增加过期时间的Http Header
  2. 减少图片数量

记录一下备忘。

27

四月

2009

南方周末十大热门的一些鸡毛小事

Author: 化石 | Categories:好玩, 编程|

无标题文档,这是南方周末的十大热门之一……

阅读全文

18

四月

2009

64位操作系统下.net调用32位dll时出错

Author: 化石 | Categories:编程|

原先写的.net程序在切换到64位操作系统下之后出错了。

一个错误出现在.net调用一个32位COM程序时,提示如下错误信息:

Retrieving the COM class factory for component with CLSID {GUID} failed due to the following error: 80040154.

另一个是加载一个包装win32 dll的.net dll出现的,提示:

Could not load file or assembly ‘NamespaceName.ClassName’ or one of its dependencies. An attempt was made to load a program with an incorrect format.

Google“64位 80040154”,没有什么有用的结果。后来搜索“64bit 80040154”,在第一个结果里就找到了答案。看来老外又一次走在了我们前面。不多说了,按照这位MVP的说法,是因为64位程序不能在同一地址空间内加载32位程序。也就是说,64位程序无法调用32位的win32 dll,以及in-process形式的32位COM。解决的办法,要么编译一个64位的dll,要么把COM改造成independent progress形式

找到了原因,接下来的事情就简单了。把程序编译了一个64位的版本,测试,可以正常运行了。

17

四月

2009

Windows Server 2003 x64 Edition尝试中

Author: 化石 | Categories:编程|

在试用了89天Windows 7后,我重装了系统。这次是Windows Server 2003 x64 Edition,在VeryCD上下载到的英文版。为什么这么清楚地记得我用了89天Windows 7呢?因为Visual Studio 2008 90天试用版还有1天就要过期了……为什么要装2003 x64版呢?因为我还没玩过任何x64版的系统……

x64系统会有各种软件和驱动兼容性问题,虽然已经有心理准备了,但是问题不断还是让人有点不爽。

1、区域设置问题

由于是英文版,安装很多非unicode的中文应用程序都是乱码,首当其冲的就是winrar。不过这个问题我有经验,在控制面板的“区域和语言选项(Regional and Language Options)”的高级选项卡中把语言设置成简体中文就可以了。不过当我选语言的时候,傻眼了,根本没有简体中文这一项。猜测是系统安装的时候默认没有安装中文语言。于是打开IE,选择View菜单->Encoding->Chinese,果然提示没有安装这个语言,询问我是不是要安装。于是很轻松的,装上了中文语言。再回到区域和语言选项,把语言和区域都设置成“Chinese(RPC)”,位置设成“China”,搞定。

阅读全文

16

四月

2009

如何在VS2008中编译64位程序

Author: 化石 | Categories:编程|

安装64位操作系统不是编译64位程序的必要条件,关键是要装64位程序的编译器。虽然标题写着如何在VS2008中编译,但其实2005也是类似。

1. 选择“Build” – “Configuration Manager”菜单,打开配置管理器。点击新建解决方案平台。

new solution platform

阅读全文

16

四月

2009

几个提供个人免费数字证书的网站

Author: 化石 | Categories:编程|


Bloggers

  • Fossil Jue

    Fossil Jue | 化石 Fossil Jue's Feed

    Programmer

  • Young Mu

    Young Mu | 禾白 Fossil Jue's Feed

    Web/Interaction Designer

douban.fm

RSS

    google reader
    my yahoo
    鲜果
    哪吒
    九点