RSS 2.0 Feed
2004-10 Entries
摘要:上一周看到这两篇文章,一直时间不充裕,这两天把它们译出,给大家做个参考。(本文仅为了传播更多的信息而提供,并不表示本人赞同其观点和看法。另:翻译可能有瑕疵,可以参照原文指正。谢谢!)   C# vs. Java:相反的思维方式(Part II) 作者: Aaron Hohnson   发表于: September 21, 2004 大家都看到了 Malcolm Davis 刚刚发表的那篇“C# vs. Java:相反的思维方式”了吧?你也注意到:sourceforge 上 Lucene.NET 的主持者关闭了项目,带着他们的玩具回家去了吧?我接着 Malcolm 的话题,说说这两件事之间的关系。 大体而言,.NET 社区的参与者总是在谈论 Microsoft 推出的最新的、最强大的东西:MapPoint Location Server,SQL Server,Longhorn,ASP.NET 2.0,Visual Studio,所有来自雷德蒙(Redmond,微软总部所在地)的产品。相反的,Java 社区的程序员在那里谈论 JBoss,Hibernate,Struts,Eclipse,这些东西没有一个来自硅谷。 Malcom 的文章说,.NET 开发者接受 Microsoft 提供的工具和服务,我想这在很大程度上是对的。.NET 开发者很少花时间,开发持续层方案(persistence layers),web 应用程序框架(web application frameworks)或者缓存解决方案(caching solutions),因为 Microsoft 已经为这些问题提供了 Microsoft 解决方案。但是仅仅是因为 Microsoft 提供了这些工具吗?那为什么 JSF,JDO,NetBeans 不能成为 Java 技术 Blog 站点的主流声音呢?拿 ASP.NET 和 JSF 作一个细致的比较,它们并没有太多的不同,但 ASP.NET 和 Visual Studio 一起被广泛应用,而 JSF 却很少人用并且饱受嘲弄。我认为 Malcom 是对的,的确是思维方式的差异早就了这一切。 回过头来看看 Lucene.NET 的那群人吧:他们为什么关闭了开源的项目,他们为什么不再继续为这个很优秀的想法贡献他们的时间和精力呢?或许 .NET 社区对他们工作的反响,让他们无法继续维持下去了吧!使用 google 在 weblogs.asp.net 上搜索“lucene”只得到了 17 项结果,而在 jroller.com 得到了 2570 项结果。Lucene 已经存在很长时间了,但 Lucene.NET 的那群人们把东西包起来另起门户,其中一个原因可能就是:几乎没有人关注他们的工作:大家都在忙着研究 SQL Server 的全文检索,这才是 Microsoft 提供的解决方案(当然,需要为每个处理器花费成千的美元购买许可)。在 Java 世界,Lucene,Struts,Tomcat 之所以繁荣,也是因为为一个大的开源项目工作,给开发者带来了足够的威望。而当你投身于一个开源项目,却很少人注意时,沮丧的你也许也要寻找另外的动力。在 Lucene.NET 这个事例中,money 是他们的动力,所以他们关闭了项目,转而贩卖他们的个人版本和商业版本。他们或许能得到双倍的美元吧,但我打赌一年以内,不会有多少人谈论 seachblackbox.com 的。 那么我的观点是什么呢?是说 .NET 开发者很贪婪,不关心社区吗?不是这样的。我认为,这两个社区有不同的司机:.NET 开发者盯着 Microsoft,关心 Microsoft 提供的解决方案,如果他们在车窗外看到了好东西并拿来使用,Microsoft 可能会最终进入这个领域,并发布产品或者提出解决方案,这样,以前的工作就完全被否定了。Microsoft 是 .NET 社区的司机。Java......[阅读全文]

posted @ | Feedback (53) |

摘要:.pbcode { FONT-FAMILY: Verdana; BACKGROUND-COLOR: #eeeeee } 讹传确实很害人! 大家学习 ASP 一开始就知道要保护 Access 数据库被直接下载,那时流行的做法是:将 Access 数据库比如 data.mdb 改名为 data.asp。这是一个很严重的“讹传”。 因为这种方案并不管用:比如 http://www.abc.com/data.asp ,我们直接在 IE 中敲地址得到是一个空白页面。如果查看此页的“源代码”,然后保存为 data.mdb,我们发现 Access 并不识别它。这就是这一讹传流传很久的表面现象。 其实,简单的写一行 HTML,类似下面的: <A href="http://www.abc.com/data.asp">点这里下载</A> 然后保存为 test.html 到你的桌面,然后打开它,右击该链接,选择“另存为...”,注意存盘时把扩展名改为 mdb,这时你得到的这个 data.mdb 就可以成功的在 Access 里面打开了。 现在,随着大家认识的提高,持有上面这样“天真”想法的人已经不多了。 今天,在搜索东西偶然看到一篇文章,因为其中引用了我的一篇旧文,所以发现了它: 防止ACCESS数据库被下载的9种方法 [整理版] (截至目前,这篇文章已经被浏览了150多次,引用高达70多次。另外google搜索的结果表明:它已经被转载至很多地方。) 在这篇文章中有一条方案是无效的,文章是这么写的: 3.数据库名前加“#”  只需要把数据库文件前名加上“#”,然后修改数据库连接文件(如conn.asp)中的数据库地址。原理是下载的时候只能识别“#”号前名的部分,对于后面的自动去掉,比如你要下载:http://www.pcdigest.com/date/# 123.mdb (假设存在的话)。无论是 IE 还是 FlashGet 等下到的都是http://www.test.com/date/index.htm (或index.asp、default.jsp等你在 IIS 设置的首页文档)     另外在数据库文件名中保留一些空格也起到类似作用,由于HTTP协议对地址解析的特殊性,空格会被编码为“%20”,如 http://www.test.com/date/123 456.mdb,下载的时 http://www.test.com/date/123%20456.mdb。而我们的目录就根本没有 123%20456.mdb 这个文件,所以下载也是无效的。这样的修改后,即使你暴露了数据库地址,一般情况下别人也是无法下载!  “#”号方案的不可行性:其实在较早的一篇博客堂文章中已经提到这个问题了。将“#”号替换为“%23”就可以突破这个“关卡”了,比如: http://www.abc.com/#data.mdb,就直接在浏览器中输入: http://www.abc.com/%23data.mdb 就可以下载了! 空格方案就不必多说了,我在本机的试验证明,在浏览器地址栏中直接写 http://localhost/test data.mdb 没有任何问题很顺利就下载到了这个 test data.mdb,不知作者是什么解决方案。 希望这次“讹传”能够就此很快结束!不要给更多的人带来坏影响!...[阅读全文]

posted @ | Feedback (29) |

摘要:应对新的发展潮流,微软强力推广 Smart Clients 概念,在这一领域的竞争对手包括 Macromedia 的 Rich Internet Applications。 企业级程序架构经历了这些阶段: (1)单机版程序:最初的程序仅在一台机器上运行,操作也完全在这台机器上进行。它适应当时电脑并不十分普及、网络连接并不十分便捷的年代。 (2)Client/Server架构:网络的发展,单机版程序满足不了企业管理等各方面的需求,企业需要将来自终端的数据汇总到服务器,统一管理。 (3)Browser/Server架构:C/S有部署繁琐、更新难度高等缺点。Web技术的发展,给企业新的选择。Browser/Server可以让企业应用随时、随地,只要有浏览器即可使用。 C/S 的缺点主要是部署、更新的问题,需要在众多终端机器中安装程序;遇到更新,也需要一台一台做。 B/S 的缺点主要是受制于HTML的限制,无法像C/S那样使用丰富的效果来展示数据,用户体验比较难以保证。另外,稳定的客户端/服务器连接,也是必要条件,网络中断将是B/S无法运行。 经过一些比较,我认为,Macromedia 推广的 Rich Internet Applications 更像是从 B/S 出发,关注于解决 B/S 的缺点。而 Microsoft 推广的 Smart Client 则更像是从 C/S 出发,关注于解决 C/S 的缺点。 比如:Macromedia Rich Internet Applications 理念的重要实践者 Flex,就是利用了“Flash 客户端在全世界的高普及率(高达95%以上)”、“Flash 相比 HTML 而言丰富的展现能力”这些已有优势,在服务端根据 mxml(Macromedia 扩展的 XML 标记语言)的标记,动态的生成 Flash SWF 文件返回给浏览器客户端,并以此向用户提供接近 C/S 一般的用户体验。(Flex 等技术接触时间较短,如有谬误,敬请指出。) 微软给出的 Smart Client 示例,重点向我们展示了 Auto-Update自动更新,Offline离线状态下的数据处理等特征;而它本身也是在已有的 .NET Windows Forms 技术或者 Office 技术等基础上,补足了一些以往的缺点。 另一方面,Smart Client 概念宣传中,强调了一点叫做“可以使用本地资源”的特征,我认为这是个“进攻手段”,正好打在 Rich Clients 的软肋上,因为 Flash 很难操作本地的一些资源,比如访问文件系统就非常困难:Flash 可以很方便的从网络中下载并读取一个 XML 文件,却不知道怎样才能把它保存到本地。(当然,只要使用者同意,Flash 可以很容易的访问你的麦克风、摄像头等多媒体资源,这一点倒也是很方便的。)毕竟 Flash 更多的是运行在浏览器中的,在浏览器环境中的 Flash 的确是不应该能够访问文件系统的。不知是不是因为技术原因,Macromedia 为什么也同时不允许 standalone 的 Flash 访问文件系统。类似的,Flex 的 RoadMap 中说,他们将会实现 Offline 特征;而且还会在将来发布 .NET Native 的版本。   就目前而言,Smart Clients 和 Rich Internet Applications 应该各有各的优势和市场。Smart Clients 应该更适合于企业级程序的模式,因为它就是在那个基础上发展来的。添加了自动更新,解决了企业非常头疼的部署难题的 Smart Clients ,相信能受到企业的欢迎。另一方面,Rich Internet Applications 在需要更多丰富效果的、面向......[阅读全文]

posted @ | Feedback (21) |

摘要:开源的项目有不少在成名之后转向商业发展。 FreeTextBox 就是一个,它在 1.6.5 版本之后发布的 2.0 开始了商业路线,2.0 提供了 DLL 方式的免费版本,源代码版本则必须购买商业的许可 licence;不过它留下了 1.6.5 版本的源代码,还是可以看到大部分的内部细节,但 2.0 版本中添加的对 Mozilla 浏览器的支持部分只有通过它生成的 HTML 和 JavaScript 脚本去窥测。 Lucene 是 Java 世界中常用的索引 API,使用它提供的方法可以为文本资料创建索引,并提供检索。(参考:NLucene 和 Lucene .NET) NLucene 是第一个的 .net 移植,也是一个有 .net 风格的版本,使用 .net 的命名规范和类库设计。不过 NLucene 项目的 leader 由于精力原因,只发布了 1.2beta 版本。Lucene.NET 项目出现后,NLucene 就没有新的计划了。 Lucene.NET 当初号称要做 up-to-date 的 .net Lucene 移植,它只在命名方面采纳了 .net 的建议,主要目标倾向于和 Java Lucene 兼容:一个是索引格式兼容,达到可以共同工作的目的;一个是命名接近(只相差很少,比如大小写等),目的是可以方便开发者使用 Java Lucene 相关的代码和资料。就风格而言,我喜欢 NLucene 的风格,因为它看起来更像 .NET 一些(个人观点)。 过了国庆节回来,就发现 Lucene.NET 项目已经放弃了开源计划,转向了商业。它居然把 SourceForge 上已经开源的文件也删除了。 与此同时,SourceForge 上又出现了 dotLucene 项目,出于对 Lucene.NET 的抗议,dotLucene 几乎将 Lucene.NET 的代码原封不动放在上面作为他们的起点。(https://sourceforge.net/forum/forum.php?thread_id=1153933&forum_id=408004)...[阅读全文]

posted @ | Feedback (9) |