| Luke's profileLukePhotosBlogLists | Help |
LukeLuke Fan的共享空间 |
||||
|
March 23 所有购买了正版Rad Studio、Delphi或C++Builder2009的客户,可以上网免费的下载TMS Smooth Controls Pack我们现在已经将这套组件放到了公司的网站上,大家可以登陆网址 http://cc.embarcadero.com/item/26725 进行下载,请注意,你必须使用激活过正版产品的用户名进行登陆才可以下载。关于这套组件的详细介绍,请查看网址http://www.tmssoftware.com/site/advsmoothcontrols.asp 。 我看了一下,一套非常绚丽的界面组件。 贴几个图片上来给大家看看。
July 23 在Dreamhost上设置GMail和各种Google服务的方式本站的主机是放在美国的DreamHost服务器上的。 速度总的来说还是可以接受的,个人比较喜欢的是DreamHost的管理功能,或者叫控制面板的功能非常强大,而且支持SSH登陆。使得这个主机供应商在同类价格的各个服务商之中,功能最完整,对RoR的支持也是最好的(现在已经支持到Rails 2.02了)。 另外很多辅助的功能也比较让人喜欢,比如邮件系统、SVN等等。我已经给本站设置了一个SVN的服务器,供开源项目使用。 但也有不尽如人意的地方,比如邮件系统中的WebMail模式,不支持中文,使用Outlook或其他邮件客户端,首发中文邮件都没有任何问题,但是在WebMail页面上就死活不行。另外,办公相关的功能也不够完整。 几个月之前就发现了DreamHost可以整合Google的邮件和办公相关功能,当时很是激动了一把。赶快进行尝试,当设置了Google邮件系统代替DreamHost本身的邮件系统之后,使用直接使用 http://mail.codegear-cn.com 即可登陆GMail网站,并使用GMail进行邮件首发处理,如果设置了其他的相关办公功能,则可以通过 http://start.codegear-cn.com 访问自设的Google门户网页,通过 http://docs.codegear-cn.com 即可访问google文档站,通过 http://calendar.codegaer-cn.com 即可访问google的日历网站。 其中文档网站的功能是可以让大家上传并共享自己的文档,而且可以在这些文档中进行全文检索。如果一个团队可以将所有的日常文档都上传到文档站上,那么就再也不用担心文档共享与交流的问题了。如果你需要查找一些特定的内容,也可以直接在团队共享的文档中进行搜索。这对于经常需要进行文本作业、方案作业的团队来说,绝对是一个巨大的帮助。 日历站,可以帮助大家设置日历、约会、定时提醒等功能。这种功能其实很多软件都提供的。但是要想在团队内部共享这些东西就比较麻烦了。目前比较成熟的方式就是使用微软的Exchange Server或者IBM的Lotus Domino服务器。当然了,Yahoo和很多其他网站也提供相应的功能,但是这种直接由网站提供的日志功能共享的时候比较麻烦。毕竟那是在一个门户网站上,门户网站上所有的客户在共享日历的时候都是站在平等的位置上的。google的日历站就没有这个问题了,我们通常都是只对本域内部的用户进行共享,很少需要将日历发布到全世界。 另外,如果大家懒得自己做网页的话,也可以通过使用 http://sites.google.com/a/codegear-cn.com 网站,来让google替你完成相应的功能。 一切都是那么的美好,但是当设置完成之后,却发现,所有这些域名都不可以访问。上网一查才知道,原来这些域名属于是某种转译域名,国内的网管是不允许这种域名的。 一切的梦想成空。 上周到加拿大去出差,在加拿大这些域名都是可以访问的,而且也记录了转译以后的域名。大家可以通过直接访问这些转译的域名来访问这些服务。虽然麻烦了一些但总的来说还是可以接受的。 起始页:http://partnerpage.google.com/codegear-cn.com 邮件页面: http://mail.google.com/a/codegear-cn.com 文档页面:http://docs.google.com/a/codegear-cn.com 日历页面:http://calendar.google.com/a/codegear-cn.com 自助站点页面:http://sites.google.com/a/codegear-cn.com 大家可以自己设置一下试试。 February 21 Blackfish SQL 数据库管理系统在嵌入式系统中的应用1 BlackFish SQL是一个什么样的产品 BlackFish SQL是CodeGear公司最新推出的一种在管理代码平台上运行的支持SQL标准的、高效的小型数据库产品。 1.1 支持标准的SQL-92 BlackFish SQL支持各种数据库方面的国际标准,其中包括最基础的SQL-92。它同时还具备很多大型、企业级数据库才具备的功能,比如支持存储过程(Store Procedure)、触发器(Trigger)、用户自定义函数(User Define Function)、在线交易处理(OLTP)。同时支持使用管理语言(比如Java、C#、Delphi、Basic)直接编写存储过程、触发器和用户自定义函数。 1.2 支持Unicode 目前,很多应用或设备都要求能够在不同的语言环境下进行发售和部署。比如同时在中国大陆、香港、台湾、日本、韩国等亚洲国家所使用的编码系统都是这些国家自己设置的,是不相同的。举个例子,我们大陆使用的字符集编码方式是GB2312,这个字符集中包含了英文、简体中文、繁体中文、日文等字符。台湾使用的是Big5字符集,其中也包含了这些字符。但是同样的一个字符在不同的字符集中所对应的却是不同的编码。这就导致了同样一段文字在不同的字符集下显示出来的结果完全不同的现象。为了应对越来越国际化的应用需求,国际软件界普遍认识到,应该有一种字符集能够统一的支持目前人类所使用的所有字符,这就是Unicode。目前比较新的数据库产品都支持将数据保存为Unicode格式。 Blackfish SQL支持现在主流的Unicode编码集,同时支持进行Unicode分类、检索、查询以及排序。 1.3 具有很多大型数据库所提供的功能 BlackFish SQL具备很多大型数据库才拥有的功能。这个产品既能支持嵌入式设备,也能支持大型服务器。 这些特性包括:支持64位CPU、多核CPU和均衡多CPU并行处理(SMP,多个相同的CPU同时处理)。 同时支持本地链接、远程链接以及嵌入程序内部的运行方式。 1.4 完备的可靠性和非常高的性能 数据库的可靠性主要体现在数据库本身的数据安全性方面。普遍的做法是对数据进行备份,然后在出现问题的时候进行恢复。 而备份技术从总体上可以分为离线备份和在线备份,其差异在于:离线备份进行的时候,必须中止数据库服务器的使用,停止所有的数据服务,停止响应所有的数据请求;而在线备份则恰恰相反,在进行备份的时候,允许数据库服务器继续为各种应用提供不间断的数据服务,持续的响应各种数据请求。这就是说,离线备份只能在数据库服务器不工作的时候才能进行,而在线备份可以随之进行。BlackFish SQL所采用的就是在线备份技术。 当然,在线备份技术也不是完美的。虽然在线备份的时候,数据库服务器可以继续提供服务,但是由于在线备份对于数据库服务器的压力很大,进行一次完整的在线备份,往往意味着数据库服务器的响应速度会在备份完成之前的这一段时间里面变慢。为了解决这个问题,BlackFish SQL特地加入了一个最新的技术——增量备份。增量备份的工作方式就是,只进行一次完整的备份,然后每隔一段时间,将这一段时间数据库所发生的变化备份作为一个数据更新增量,备份到原来的那个完整备份上面去。这样一来,BlackFish SQL就可以极大的缩短每一次备份所需要的时间,最终达到让客户可以在不知不觉中完成日常的数据备份工作。 1.5 BlackFish SQL具有极高的运行速度 BlackFish SQL具有非常高的使用性能,这个产品可以以三种方式运行:作为系统的一个服务、作为系统上的一个独立运行的应用、嵌入到特定的应用程序里面。其中将BlackFish嵌入到特定的应用程序里面的方式,从物理上来看就相当于这个应用程序可以通过BlackFish所提供的功能模块,直接访问数据文件。这无疑是最具效率的一种数据访问方式,因为使用这种方式进行数据访问的过程中没有任何通常数据库服务器提供服务时所需要的中间过程,而这些诸如网络通讯、权限认定等中间过程在整个数据请求的周期中所占的比例是非常高的。 1.6 部署成本非常低廉,而且可以做到零维护 很多数据库产品需要安装,并在运行的过程中需要进行复杂配置,但是BlackFish不需要这些。这个产品在使用之前不需要任何安装过程,只要将所需要的文件复制到需要运行的系统中即可,而且如果采用嵌入应用程序的运行方式,需要复制的文件只有一个。 BlackFish SQL只需要在系统中占用1M空间即可运行,而不是像某些大型数据库那样需要几百M甚至上G的空间才可以运行,其所占资源非常有限。 BlackFish SQL可以做到完全的零维护,一但程序开始运行,即不再需要任何维护。 2 对嵌入式系统目前开发状况的简单分析 2.1 多语言、多平台开发 目前同时维持多种语言或平台进行系统开发的现象在嵌入式开发的过程中还是非常普遍。这就意味着系统开发团队中会有很多不同的程序员,他们熟悉不同的开发语言和应用或开发平台,并使用这些语言或平台构筑嵌入系统的不同部分。 这些程序之间基本上是无法进行沟通和交互的。 他们按照自己所使用的开发技术分成一个个小群体。 信息和技术会保持在这些小团体甚至是个人手里,一旦这些团体或个人流失,这部分的技术也就流失了。 掌握不同关键技术的程序员成为团队内的不稳定因素,由于使用的是不同的开发技术,最终可能导致开发团队中每一个人都掌握一些关键技术。应用在被设计之后,就会被分配给不同的人,进行不同的技术开发,他们之间的职位完全没有可替代性。其中任何一个人员的流失都会造成整个项目的失败。 项目的升级、管理成本都非常的大。 这些不同的应用之间基本上无法进行信息共享和协同工作,他们只能独立的完成各自的功能。 这些应用中的C/C++的应用要在每次更换硬件或操作系统平台的时候重新编制、编译。这对于嵌入式系统的供应商来说,也是一个非常沉重的负担。 2.2 通过数据文件来满足数据处理的要求 这种方式的优点在于速度快、占用的空间最小,但是更新维护会变得异常麻烦。伴随着数据复杂程度的上升,维护的复杂程度也会相应的成几何级数上升。这种方式无法适应复杂的应用,只能支持那种只有极少量数据处理的场合。而且,由于使用了数据文件的方式,数据的备份、同步、灾难恢复都需要自己编程处理,这是非常麻烦的。而且,在多个应用都需要对数据进行操作的时候,就必须考虑到锁闭的问题。有些更新动作必须要将数据锁闭,然后再更新之后再解锁,否则的话就有可能造成数据信息的混乱。这些东西都需要程序员自己处理,而且这些代码会分散在不同的应用程序代码里面,一旦要修改非常繁琐。 3 嵌入式系统开发中新的需求与挑战 3.1 单一语言、单一平台开发 依赖比较强劲的虚拟机技术,可以彻底摆脱特定硬件环境的束缚。每次更换硬件平台之后不需要对原来的应用进行修改即可直接使用。所有的应用都是用一种技术开发出来的,程序员之间比较统一沟通,而且关键技术不会掌握在极少数人手里。 程序员招募和培训的成本极大的降低,每一个程序员的角色不再是不可替代的。他们相互之间的可替代性,比原来使用多语言、多平台进行开发的时期极大的提高了。 此外,网上有大量的开源代码可以直接使用,极大的降低了新功能开发的成本。 3.2 通过更强大的数据处理能力,实现更多的增值业务 以前功能比较简单的时候,添加功能的主要工作是编制新代码,各种功能是由一大堆相互独立的源代码堆砌而成的。现在,基本功能达到之后,添加新功能的主要工作就不再是编制代码,而是将现有的功能组合起来,加入更多的具有管理性、协调性、交互性的增值性质的功能。这些功能的运转,主要依赖于复杂的数据逻辑支撑。 未来,在管理性和交互性功能被普遍接受之后,新增的功能对于复杂业务逻辑的要求会越来越高。 4 嵌入式系统对数据处理的要求 随着客户对于嵌入式系统所能提供的功能提出了越来越高的要求,嵌入式系统越来越多的采用支持SQL标准的数据库产品来进行数据的处理。 它具有以下优点: l 可以直接使用标准的SQL语句来处理数据的写入和查询,不需要为每一种数据格式编写单独的数据处理模块。 而且,数据库服务器能够将更新交易、更新锁闭、数据备份、灾难恢复等功能从应用程序中统一的分离出来。 l 数据维护成本和数据复杂度基本无关,不管是十种还是一千种格式的数据,对于这些数据的具体操作程序来说,并没有太大的区别。 l 可以支撑更复杂的应用。 由于嵌入式系统的特殊性,并不是所有的数据库产品都适用于嵌入式应用。下面,让我们来分析一下嵌入式应用对于数据库产品的具体需求。 4.1 最重要的就是可靠性 嵌入式系统有一个最大的特征,就是分发数量巨大。绝大部分的嵌入式系统,其销售或分发的数量都是非常巨大的。 其结果就是,这些设备被售出之后,一旦出现软件质量问题,就是一个巨大的灾难。软件故障和硬件故障有着本质的区别:硬件的设计缺陷一般在出品前都会被检测出来,所以出现在客户面前的硬件故障一般都是个别的设备缺陷,数量不会太大。同一个批次的产品中的软件是完全一样的,一旦其中出现问题,那么这一个批次的所有产品就都有问题。所以这就要求,嵌入式系统使用的数据库产品具备最大的可靠性。而且,一旦出现了问题,最好有一定的自我恢复能力。 4.2 平台无关性 嵌入式系统的硬件环境一般是非常复杂的,每一个批次之间都有可能存在差异。这就要求应用于嵌入式系统的数据库产品必须做到与硬件或操作系统平台无关。最好是运行于虚拟机上,并且最好能够支持目前所有主流的虚拟机平台。 4.3 在低端硬件平台上,达到比较高的性能 嵌入式系统由于其体积和成本的限制,其硬件性能一般情况下不会太高。所以这也就要求应用于嵌入式系统的数据库产品在低端硬件平台上的运行性能必须比较高。 4.4 低廉的部署成本和绝对的零维护 嵌入式系统中的存储空间一般都比较小,这也就要求嵌入式系统中应用的数据库产品所占用的空间必须在嵌入式系统允许的范围内。而且,对于售出的嵌入式系统产品进行大规模的召回维修或者上门维修都不太现实,所以必须要求在这上面使用的数据库产品可以做到绝对的零维护。 4.5 支持SQL标准 为了能够应用大量的网络开源代码或程序员现有的经验,所以要求,数据库产品必须兼容SQL标准。 4.6 支持Unicode 为了能够进行国际化销售和分发,所以要求数据库产品必须能够很好的支持Unicode存储、排序、检索和查询。 4.7 同时支持嵌入式系统、普通桌面系统和服务器系统 很多情况下,我们都需要通过分发数据文件对嵌入式系统进行升级或功能调整。如果一种数据库产品只能支持嵌入式系统而无法在普通的桌面系统或者服务器系统上运行,那么,所有需要分发或者回收的数据文件都必须在嵌入式系统或嵌入式系统的仿真系统中进行处理,这将是一个非常繁琐的事情。最好能够使用同一种数据库产品,在数据维护人员的桌面系统或服务器系统上运行起来,并加载分离出来的嵌入式系统中的数据文件,进行数据的检测和维护。 4.8 数据库文件比较容易进行分离和同步 数据库中的数据文件应该能够进行比较方便的分离和同步,这样的话,通过各种网络对嵌入式设备进行远程的升级或维护就成为了可能,而且这个过程也可以变得更加的人性化。比如用户在自己的系统中进行了一定的特殊配置,那么在升级的时候,系统应该能够将用户自己所作的设置加以保留,并在此基础上将升级的数据注入到数据库之中。 5 BlackFish SQL对于嵌入式系统的支持 5.1 支持在线增量备份 BlackFish SQL支持在线增量备份技术。这项技术使得BlackFish能够经常性的将客户对数据库的修改和更新备份到比较安全的地方。而且这个过程不会给客户带来任何不便。有了对数据的备份,即使数据库信息有什么损害,应用也可以进行无缝的灾难恢复,绝对不会造成由于数据库的原因而导致必须派遣维护人员上门维修或者设备、系统的返厂维修。 BlackFish SQL作为一种商业产品能够提供完整的文档和技术支持服务,绝非一般的开源或免费产品所能比拟。 5.2 在虚拟机上运行,与平台完全无关 BlackFish SQL支持目前流行最广泛的虚拟机平台。这个产品既支持Java平台,同时也支持微软的.NET平台,可以运行于目前已知的绝大部分的嵌入式系统之中。 5.3 使用In-process方式运行,基本上可以达到与直接操作数据文件相近的执行效率 BlackFish SQL支持直接嵌入到应用中的运行方式,就是将BlackFish的各种功能直接作为一个外加模块嵌入到应用程序之中。应用程序通过这种方式来调用BlackFish服务,其工作流程上和直接调用数据文件是一致的。 5.4 不需要维护和安装 驱动数据库所需的额外文件只有一个,所需的额外存储空间也就是1M左右,绝对不会给嵌入式系统造成过多的存储和维护压力。 5.5 支持SQL-92 BlackFish SQL支持标准的SQL-92以及更新锁闭、更新交易处理、存储过程、触发器、用户自定义函数等数据库标准。 5.6 支持Unicode BlackFish SQL支持使用Unicode进行数据的存储、排序、检索、查询。 5.7 同时支持嵌入式系统、标准32位CPU、64位CPU、多核CPU和SMP BlackFish SQL不但能够运行于嵌入式系统,同时也能运行于普通的桌面系统和各种大型的服务器系统。嵌入式系统的开发商完全可以开发一个运行于Web服务器的大型应用,让客户在网页上自助的配置他们喜欢的设定,然后直接将这些设置通过BlackFish SQL数据库服务器写入分离的数据文件中,然后再将其下载同步到客户的嵌入式系统之中去。也可以发布一个运行于普通桌面平台的问题程序,使得客户可以通过标准的PC对其所拥有的嵌入式系统进行简单的维护。 5.8 数据库文件可以自由的分离,并在其它地方进行挂接 BlackFish SQL的数据文件,不需要任何配置,就可以直接挂接到服务器中进行使用。也可以非常方便的将其从服务器中分离出来进行迁移,极大的简化了嵌入式系统的维护和升级过程。 6 总结 客户对于嵌入式系统的功能性要求越来越高,嵌入式系统中软件的复杂度越来越大。为了应对这个变化,嵌入式系统的应用对于复杂数据处理的要求越来越高,而且,嵌入式系统的开发也正在向着单一语言、单一平台的方向发展。 BlackFish SQL是一款专为嵌入式系统设计的、非常适合于嵌入式系统应用的、支持SQL标准的、支持Unicode的高效数据库产品。 February 17 在dreamhost上部署Ruby on Rails应用的步骤现在发现,将RoR发布到Dreamhost上实在是太简单了。 February 07 欢迎参加2008年度的Delphi需求大调查http://video.codegear.com/survey/2008DelphiSurvey_SimplifiedChinese.html 上面是简体中文调查表的地址。由于这个调查表是我在过年放假期间翻译的,而且长度非常的可观。所以里面有一些错误,请大家千万谅解。用一句小品里的话,请领会精神,看在本人过年还要加班的份上,请大家一定要原谅我。 请大家积极踊跃的参加,完全不记名,不要有更多的顾虑。 我们CodeGear的各项资源都是非常稀缺的,特别是人力资源。所以如果希望CodeGear更重视中国地区的要求,请千万要多找些人来,认真填写这份调查问卷。
另外,本人的网站被封闭了,可能要一周以后才能开通。 主要原因是,我的网站是构建在国外的出租空间上。由于没有必要独立购买一个大的租赁空间,所以就通过代理,很多人合租了一个空间。年前,这个代理的一台服务器被中国政府屏蔽了,为了害怕更大的损失,这个家伙直接关闭了他代办的全部300多个网站,要求我们去申请ICP备案,等备案通过之后再予以开放。 我不知道这个事情应该说是谁的责任或者问题。总之比较郁闷,过完年再努力争取尽快开放网站。 January 31 最近的Blog会在我自己的网站上发布最近的Blog主要都会在我自己的网站上发表,http://ss.lukefan.com.cn/?1 欢迎大家访问我自己的空间。虽然管理水平上肯定和微软相去甚远,但是空间巨大100G。可以无限制的上传附件,爽死了。 January 15 我要被RoR的cache折磨死了将网站进行迁移之后,运行的结果却总是不对。 反复调整了多天之后总算发现了问题所在。由于原先的网站一直是以开发模式运行的,所以其中的caches_page语句一直都没有产生作用。这次将状态换成了production,完蛋了。每次只要是cache了一次之后,RoR就会在public目录里面保存一个同样文件名的html文件,比如cache了index之后,public目录里就会有一个index.html,cache了demo/list之后,public目录里面就会有一个demo目录,里面有一个list.html文件。如果我们cache了demo/show/1,那末我们就会得到/public/demo/show/1.html,下次将直接调用这些html文件,不再访问RoR程序。如果修改了代码,这些html文件不删除的话,那么修改的部分将不会显示出来。 本来是一种非常棒的技术,但是我却遇到了很多的问题。首先,计数器不工作了,网页中除了JavaScript的部分所有的动态信息都不工作了。然后,当我取消了对整页的cache,改为对页面中比较相对静态的部分进行cache之后,浏览器只显示出了被cache的那部分信息。实在是让人无法忍受。 最终删除了所有的cache处理,毕竟我的网站访问量不高,这点处理要求应该还是应付的过来的。 |
|
|||
|
|