2013年04月03日

注:引用http://www.jamesstroud.com/jamess-miscellaneous-how-tos/os-x-admin/fix-svn-revision-file-lacks-trailing-newline ,经过验证是可行的。

Fix svn: Revision file lacks trailing newline

How to fix the dreaded “svn: Revision file lacks trailing newline”.

DISCLAIMER: I know this is filed under OS X admin, but it is applicable to svn on any platform. Also, I can not guarantee this will not hose your svn repository, but I couldn’t see what was wrong with it. SVN seems to have a pretty robust repository structure.

Search terms: svn | subversion | fix | restore | correct | revert | repair | svn: revision file lacks trailing newline

Today I got the dreaded “svn: Revision file lacks trailing newline” error. This error arises when committing 4 GB or more to certain FSFS subversion type repositories. Although the problem is documented here, nothing on the web says how to get your subversion repository corrected after this apparent disaster. Below are the steps I used to get my repository rolled back to something that would work. As mentioned in the disclaimer above, I can not guarantee this won’t hose your repository in some way, but I could find no other way to repair it described on the web. I have performed the following steps with my repository and it seems to be working fine.

The Fix

  1. If you can, make a backup of your repository before you begin, just in case this procedure doesn’t get your repository working.
  2. Go to the repository database (“…/repo/db/”).
  3. Make a copy of the file “current” outside of your repository (above the “repo” directory, for instance).
  4. Change the number in the file “current” to one less than that number. For example, if the file current has the number “2259″ as the first number, change it to “2258″. There will be two other strings with letters and/or numbers. Just change the first number.
  5. In the “revs” directory of “repo/db”, move the file corresponding to the old number in the file “current” to a location outside of the repository. In the above example you would move the file “2259″ out of the repository.
  6. Repeat Step 5 for the directory revprops. In the example above, you would change to the “revprops” directory and move the file “2259″ out of the repository.
  7. Depending on how your svn repository is set up, you may want to restart your svn server, etc.
  8. You will want to make sure your repository is working fine before you delete any files you moved or created in Steps 3, 5, and 6.
  9. To get your big commits to work, you will want to just commit in smaller chunks. On unix, you can use the command “du”, etc. For OS X, you can go to the terminal and use “du -srkc” with the appropriate files to see how big the commit will be. Check the size of your commit before you add or import files. Also, this 4 GB limit might be corrected with a new build of svn using all of the latest libraries.
2006年10月07日

今天配置asp调试环境遇到问题。
系统Windows 2000 pro,IIS 5.0。
旧系统的环境中,安装了vs2003,设置IIS启动asp服务器端调试,在asp源文件中设置stop语言即可调试asp。
新安装系统惟一不同的是安装的vs2005,没法调试。但是在安装vs2005之前按照上面的方法是可以通过Microsoft Script Debugger进行调试的。
望各位博友支招,不吝赐教!小弟谢啦!

2006年09月06日

[转]中国国情与国际接轨

不过正是我想要说的,收跨行查询的那几天晚上就这么想的,想骂人!

中国银行和国际接轨,跨行查询收费,
接轨的那个国家你绝对想不到。
今天,
听到在看电视上专家对备受关注的ATM跨行查询收费的讨论,
才知道,
美国绝大多数的银行根本不存在什么所谓的跨行查询收费。
美国的绝大多数银行是股份制银行,
这种自己突然规定跨行查询收费的只有在垄断银行才会发生。
专家说,
如果国外只要有一个银行实行了跨行查询收费,
中国就会以和国际接轨为理由,
采用这种方式。
然后他们查阅了很多资料发现,
我们周围这些国家,
只有唯一一个巴基斯坦是跨行查询收费的。
看到这里我彻底晕了,
原来中国几家银行跨行查询收费的所谓和国际接轨,
居然是和巴基斯坦接轨啊。
中国政府制定政策的2大法宝:
有些决策者在制定政策的时候,
手里有两套法宝,
一套是“中国国情”,
一套是“与国际接轨”,
当制定不利于人民的政策时,
如房改,要求大家自己掏钱购买商品房,
就说是和“国际接轨”,
理由是,
人家外国都是自己买房子,
没有福利分房的说法,
但与此同时,
他们却恰恰忽略了人家外国土地私有这个关键因素,
中国人并不拥有土地的所有权,
土地都属于国家,
却要被迫付出昂贵的价钱购买一套只有使用权的商品房,
而当人们对此提出质疑的时候,
他们又会说这是中国特殊国情决定的。
又比如医改,教改,人家其他国家是免费医疗,
免费义务教育,但这一点他们又不与国际接轨了,
又强调中国国情了,
什么财力不堪重负啦之类,
结果导致大家看不起病,
上不起学。
又比如所谓“高薪养廉”,
据说是新加坡、香港的成功经验,
所以要和“国际接轨”,
所以五次三番地给公务员加薪。
但人家严格的监督制度,
对公务员近乎苛刻的约束,
廉政公署等等,
他们又不和国际接轨了,又强调中国国情了。
韩国首都汉城(现名首尔)只有14辆公务车,
这点他们就不愿意接轨,
中国现在一个乡镇政府14辆公车都不算多吧?
这就是中国国情。
美国有个燃油税,他们就要和“国际接轨”,
也要征燃油税,
但美国高速公路、大桥绝大多数是不收费的,
在美国养一辆车除汽油费外每年仅需170多美元,
这点他们又不和国际接轨了,
不仅养路费、车船税等等一大堆,而且到处设置关卡,
几乎路路收费。
全世界总共只有14万公里收费公路,
但就有10万公里在中国!
这就又是中国国情了.
美国格林斯潘加息了,
他们就要和“国际接轨”,
但美国购房享受退税,
购买第一套住房享受低利率,
对出租房屋屋主进行补贴以降低租金,
这些他们又不和国际接轨了,
又强调中国国情了,
不仅不对出租房屋进行补贴,
反而变本加厉地对出租屋提高税收,
导致这部分成本转嫁给租客,租金上涨。
世界绝大多数国家都是土地私有的,
人民买房的同时就买了地皮,具有永久所有权。
当然,他们在这一点上就不和国际接轨了,
因为中国国情特殊啊!
但是,当他们发现香港的使用权制度对自己比较有利后,
就立即和香港接轨了!
订了个70年使用权制度,
迫使人民祖祖辈辈不断花巨资购买有限使用权,
但香港是什么情况?
香港原先是殖民地啊!
英国只租用了99年啊,它搞个使用权无可厚非,
因为土地本不是它的,时间到了就要归还的,
你搞使用权到底是什么意思?
不是说中国是公有制吗?
不是全国人民拥有对一切生产资料的所有权吗?
但落实到的最后怎么变成绝大多数人都一无所有了呢?
怎么就变成必须购买本属于自己的土地使用权呢?
不懂吧!
但他们不管,
就因为对自己比较有利,
所以在这方面就和香港这个“殖民地”接轨,
就不和其他的国际接轨。
又比如,
油价要涨、电价要涨、水价要涨,理由还是和国际接轨,
说什么人家的都很贵,中国的油价水价电价便宜的很,
所以就该涨,
但说到人民的工资水平、福利水平、劳动保障制度,
就又不和国际接轨了,
就又强调中国的特殊国情了,
人家的工会都是工人选举产生,
实实在在代表工人权益,
这一点咱们就是不和人家接轨,
咱就是要让工会成为资本家压迫工人的帮凶,
原因还是:中国国情。
所以,
不要拿什么美国、英国的加息说事,
什么时候中国成为完全市场经济国家了,
国家官员民选产生了,
权力部门受公众严格监督了,
再说这些不迟!

2006年08月15日

首先申明不是做广告。

昨天在网上闲逛的时候看到了一款个人信息管理(PIM)的软件DailyPIM,做的实用大方,并且有免费版本,虽然交之专业版本有所限制,但是个人使用还是足够方便。

这是他官网上的介绍:

天天个人助理(DailyPim)是一款个人日常信息管理的软件,具有的功能有日记本、资料管理、文件管理、日程管理、理财、地址簿、网页快捕、收发消息、收发文件、邮箱监视器、查询天气、火车、航班、电话区号、邮政编码、定时关机等。

软件特点:

1. 可以记录日记、资料和文件;
2. 编辑器和Word格式兼容,可以导入导出Word,RTF,Html,Txt文件;
3. 编辑器可以插入表情图标,插入图片,背景图片,可以打印预览;
4. 日程管理图形化,分为每天和每月,便于您日程安排,还可以设置自动提醒;
5. 可以在局域网内收发消息和文件,文件传输可达2M/秒;
6. 多线程的邮件监视器,有新邮件时自动提醒,也可以远程管理邮件;
7. 支持换肤的功能,满足您对不同界面的要求;
8. 网页快捕功能,可在浏览器中直接保存网页到系统中;
9. 节点图标自定义,丰富的表情图标,例如QQ,MSN,泡泡等;
10.方便的便笺功能;
11.可以制作CHM电子书;
12.内置的英文朗读功能,可以帮助您学习英语;
13.内置资料库导出导入功能,可以在我们的网站上下载各类资料库;

天天个人助理(DailyPim)可能是国内功能最强大的个人信息管理软件。

下面是免费版与专业版的区别,不过对于我这种人来说,50元也是很大一个数目,就用用免费版本吧

DailyPIM专业版增加的功能
1.数据文件的压缩和备份
2.全文搜索
3.模版管理
4.插入表情图标
5.导入导出
6.网文快捕
7.收藏夹功能
8.背景图片
9.日程查询
10.远程删除邮件

另外,根据我的小聪明,他所有的内容都是放在一个.pim结尾的文件中的,所以只要备份好这个文件就可以备份自己的数据。并且这个文件是一个access的数据库文件,只是修改了后缀名,直接用access可以打开,密码是pipi2004。

2006年08月14日

摘自:http://searchwebservices.techtarget.com.cn/tips/172/2501672.shtml
英文原文:http://www-128.ibm.com/developerworks/grid/library/gr-heritage/

  网格与集群计算的区别

  集群计算实际上不能真正地被看作是一种分布式计算解决方案。不过对于理解网格计算与集群计算之间的关系是很有用的。通常,人们都会混淆网格计算与基于集群的计算这两个概念,但实际上这两个概念之间有一些重要的区别。

  网格是由异构资源组成的。集群计算 主要关注的是计算资源;网格计算 则对存储、网络和计算资源进行了集成。集群通常包含同种处理器和操作系统;网格则可以包含不同供应商提供的运行不同操作系统的机器。(IBM、Platform Computing、DataSynapse 和 United Devices 提供的网格工作负载管理软件都可以将工作负载分发到类型和配置不同的多种机器上。)

  网格本质上就是动态的。集群包含的处理器和资源的数量通常都是静态的;而在网格上,资源则可以动态出现。资源可以根据需要添加到网格中,或从网格中删除。

  网格天生就是在本地网、城域网或广域网上进行分布的。通常,集群物理上都包含在一个位置的相同地方;网格可以分布在任何地方。集群互连技术可以产生非常低的网络延时,如果集群距离很远,这可能会导致产生很多问题。

  网格提供了增强的可扩展性。物理临近和网络延时限制了集群地域分布的能力;由于这些动态特性,网格可以提供很好的高可扩展性。

  例如,最近 IBM、United Devices 和多个生命科学合作者完成了一个设计用来研究治疗天花的药品的网格项目。这个网格包括大约两百万台个人计算机。使用常见的方法,这个项目很可能需要几年的时间才能完成 —— 但是在网格上它只需要 6 个月。设想一下如果网格上已经有两千万台 PC 会是什么情况。极端地说,天花项目可以在分钟级内完成。

  集群和网格计算是相互补充的。很多网格都在自己管理的资源中采用了集群。实际上,网格用户可能并不清楚他的工作负载是在一个远程的集群上执行的。尽管网格与集群之间存在很多区别,但是这些区别使它们构成了一个非常重要的关系,因为集群在网格中总有一席之地 —— 特定的问题通常都需要一些紧耦合的处理器来解决。

  然而,随着网络功能和带宽的发展,以前采用集群计算很难解决的问题现在可以使用网格计算技术解决了。理解网格固有的可扩展性和集群提供的紧耦合互连机制所带来的性能优势之间的平衡是非常重要的。

  网格还是 CORBA?

  对于所有的分布式计算环境来说,CORBA 与网格计算表面的相似性可能比其他技术都要多。这是由于开放网格服务架构(OGSA)中网格计算和 Web 服务之间的策略关系所决定的。它们都是基于面向服务架构(SOA)的概念。CORBA 是很多任务关键的应用程序的骨干,从 1991 年创建以来不断发展成熟。在很多方面,CORBA 都是今天 Web(网格)服务的先驱。它提供了一个重要的基础,就像是几年之后 Java™ Remote Method Invocation(RMI)的地位一样。

  例如,Boeing 在自己的 DCAC/MRM(Define and Control Airplane Configuration/Manufacturing Resource Management 的缩写)应用程序中使用了基于 CORBA 的解决方案,尤其是管理商业飞机所采用的零部件配置和目录部分的应用程序更是如此(喷气式客机有很多零部件)。Peter Coffee 是 e-Week 的一名技术编辑,他最近分析说新 Cunard Queen Mary 2 远洋航线中所有的操作都是由 CORBA 支持的。

  CORBA 与网格计算之间的主要区别是 CORBA 假定是面向对象的(毕竟,这是名字中的一部分),但是网格计算没有采用这种假定。在 CORBA 中,每个实体都是一个对象,可以支持诸如继承和多态之类的机制。在 OGSA 中,存在一些与对象非常类似的概念,但是这并没有假定架构中有面向对象的实现。架构是面向消息的;面向对象是一个实现概念。然而,在 WSRF(Web Services Resource Framework)中使用形式定义语言(例如 WSDL,Web Services Definition Language)就意味着接口和交互操作都与 CORBA 中的定义一样,它们共享一个主要软件工程的优点,同时可以采用面向对象的设计呈现。

  另外一点区别是网格计算(OGSA)是在 Web 服务的基础上进行构建的。CORBA 与 Web 服务进行了集成,并与 Web 服务进行交互操作。CORBA 的一个问题是它假设了太多的 “端点”,这通常是参与 CORBA 环境的所有机器(客户机和服务器)。供应商的 CORBA 实现中也存在交互操作的问题,CORBA 节点之间在 Internet 上如何操作的问题,以及端点如何命名的问题。这意味着所有的机器都必须遵守特定的规则和特定的方法,只有这样 CORBA 才能正常工作(所有这些都假设采用与 IDL、IOR 和 IIOP 类似的协议)。在构建高可用、紧耦合、预编译的系统时,这是一种比较合适的方法。

  然而,在 CORBA 执行作业的方式和 Internet 方法之间缺少协作能力。CORBA 的确为 Web 服务标准的创建提供了灵感 —— 人们非常喜欢 CORBA 基础所提供的功能,并开始建立诸如 XML、WSDL、SOAP 之类的标准。他们通过在开放的 Internet 基础上构建 Web 服务对 CORBA 的交互操作能力和灵活性问题进行了改进,这种方法在服务请求者和服务之间采用的是松耦合和延后绑定技术。为了实现这种改进,OGSA 增加了一种 “软状态” 方法来进行容错。这些正是它们的设计目标。

  Web 服务架构是一个面向服务的架构,CORBA 也是。不过 CORBA 的目标不同 —— 它被设计用来构建相当封闭的集成系统。

  DCE 如何?

  顾名思义,分布式计算环境(DCE)与其说是一个架构,还不如说是一个环境,二者之间有一个重要的区别。DCE 可以定义为一个设计用来促进分布式计算的紧密集成的技术集;网格计算(以 OGSA 的格式)不仅仅是一个设计用来封装分布式计算众多复杂机制的架构。

  正如我们在对 CORBA 的介绍中看到的一样,在 DCE 中我们也可以看到紧耦合与松耦合方法之间的区别。DCE 技术包括安全性技术(DCE ACL 或 Access Control Lists)、对象和组件技术(DCE 分布式对象)、文件系统(DFS 或 Distributed File System)以及一个目录定义(DCE 注册项) —— 实际上,OGSA 可以在很多 DCE 技术基础上工作。

  例如,网格安全协议可以采用 GSI(Grid Security Infrastructure)格式,也可以采用适当的 Web 服务标准格式,可以用来与 DCE ACL 进行交互。很多网格应用程序都利用底层的 DFS(或其前辈 AFS,Andrew File System)。核心网格注册服务可以利用 DCE 注册项。

  尽管这些技术大部分都被认为是服务,但是 DCE 与其说是一个面向服务的架构,还不如一组技术的集合。它对于 SOA 环境中构建应用程序的支持是有限的,因为 DCE 主要是通过采用一些块来构建分布式应用程序,但是并不需要去构建分布式的面向服务的应用程序。

  网格计算与 DCE 之间另外一点重要的区别也与 CORBA 有关:OGSA 网格计算定义了以下 3 类服务:

  网格核心服务
  网格数据服务
  网格程序执行服务
  CORBA、DCE 和 Java RMI 并不会特别关注数据(DFS 之外的数据)或程序执行服务,因为这些技术都是远程过程调用(RPC)系统所必需的。(RPC 是一种协议,应用程序可以使用这种协议向网络中另外一台机器上的一个程序请求提供服务,而无需理解网络的详细信息。这是一个同步 操作,需要请求程序一直挂起等待远程过程返回结果,除非您使用了共享相同地址空间的轻量级进程(lightweight processe)。在网格核心服务(以及 WSRF)中定义和实现的很多服务都与 DCE 和 CORBA 中的基本服务类似。但是数据和程序执行服务是网格计算所特有的。

  最后,我们对网格计算和 CORBA 与 Web 服务标准的关系所总结的区别也同样适用于 DCE。同样,我们在 Web 服务中所看到的很多改进都得益于使用诸如 DCE 和 CORBA 之类优秀分布式系统的经验。

  最后来看一下 P2P

  诸如 KaZaA —— 由于一些版权问题,它总是以大字标题的形式出现 —— 之类的应用程序是最近吸引人们对点对点(P2P)计算的注意的主要原因。不过这种技术本身展示了一些有趣的分布式特性,如果在网格环境中使用这些特性,很多都会非常有用。

  首先,P2P 系统的特点是缺少集中管理点;这使它非常适合于提供匿名服务,或者提供一些反跟踪保护机制。另一方面,网格环境通常都有某种形式的集中管理和安全性(例如,资源管理和工作负载调度)。

  P2P 环境中这种没有集中点的特性引发了两个重要结果:

  P2P 系统的可扩展性通常都比网格计算系统好。即使我们要在响应能力的控制和分布之间达成某种平衡时,网格计算系统也天生不如 P2P 系统的可扩展性好。
  P2P 系统容忍单点失效的能力通常比网格计算系统更好。尽管网格比紧耦合的分布式系统的弹性更好,但是网格不可避免地要包含一些可能成为单点故障的关键元素。
  这意味着构建网格计算系统的关键是在分散与管理能力之间达成某种平衡 —— 这可不是件简单的事情。

  另外,网格计算的一个重要特性是资源都是动态的;在 P2P 系统中,资源的动态性天生就比网格计算系统更好,资源出现和消失的变化比网格中更快。对于 P2P 和网格计算系统来说,分布式资源的利用率是一个主要目标。给定一定的计算资源,这两种系统都可以尽可能地对这些资源进行使用。

  这两个系统之间最后一点区别是标准:与网格领域中的标准相比,在 P2P 中通常缺少标准。另外,有了诸如 Global Grid Forum 之类的实体,网格领域就有了一种机制来重新定义现有的标准并建立新标准。

  基于网格和 P2P 系统提供的互补优点,我们可以期望这两种方法最终会殊途同归,尤其是当网格达到 “网格间” 的开发阶段时,届时这两种技术都将成为一些公共工具。 

2006年07月31日

求ASP的某个加密组件C2G.XOR.1
主  题:求ASP的某个加密组件C2G.XOR.1
作  者:littlechen (littlechen)
等  级:
信 誉 值:100
所属论坛:Web 开发 ASP
问题点数:100
回复次数:8
发表时间:2006-5-7 10:52:39

小弟受朋友之托修改一段源代码
执行到Set objC2G = server.CreateObject("C2G.XOR.1")的时候卡壳了
急求用于加密的组件C2G.XOR.1,谢谢啦

发我邮箱,收到后给分
邮箱:littlechen1981@sina.com

再次感谢
——————————————————————————–

回复:sibang(好好学习-天天想上!) ※ 信誉:96 ※ 2006-5-7 12:03:16 ※ 得分:10

http://topic.csdn.net/t/20031227/17/2609556.html
——————————————————————————–

回复:littlechen(littlechen) ※ 信誉:100 ※ 2006-5-25 19:41:29 ※ 得分:0

已经找到这个组件了,在我的ftp站点有的下载
ftp://219.230.98.2/Software/Develop/c2gxor.exe
是一个老外开发的加密解密组件
不过这个版本需要将
Set objC2G = server.CreateObject("C2G.XOR.1")
改为
Set objC2G = server.CreateObject("C2G.XOR")
后使用。
仍然谢谢sibang(好好学习-天天想上!)
——————————————————————————–

回复:littlechen(littlechen) ※ 信誉:100 ※ 2006-5-28 9:43:13 ※ 得分:0

这个结帖给分的问题要请问网管了。
怎么给分呢?
我纳闷啊
——————————————————————————–

回复:kaijier(<空杯子>) ※ 信誉:100 ※ 2006-5-28 9:51:48 ※ 得分:2

交分不杀
——————————————————————————–

回复:lamking(卖空间,做网页 QQ:628557) ※ 信誉:100 ※ 2006-5-28 12:01:28 ※ 得分:2

点管理. 然后就可以给分了
——————————————————————————–

回复:littlechen(littlechen) ※ 信誉:100 ※ 2006-6-27 10:28:53 ※ 得分:0

唉,一帮饿鬼!
:)
——————————————————————————–

回复:addwing(招人的外行都说要"精通",不长眼看下有几个真正精通的) ※ 信誉:100 ※ 2006-6-27 10:34:31 ※ 得分:2

关注!
——————————————————————————–

回复:lazymale(无) ※ 信誉:100 ※ 2006-6-27 16:17:26 ※ 得分:84

up

该问题已经结贴 ,得分记录: sibang (10)、 kaijier (2)、 lamking (2)、 addwing (2)、 lazymale (84)、

现在这个ftp站点已经对外不匿名访问,该加密组件下载地址为http://littlechen.ys168.com

2006年07月26日

一直用着金山词霸2005的燕子,积累了很多词,突然金山词霸坏了不能用,很是伤心,自己的心血没了。拍着胸脯打着包票要帮她找回来。

先是去program files下面找,找了一大圈,没有一个文件像的。作罢,突然灵感来了,去Application Data文件夹下找,一眼就 被我发现了,真不愧为火眼金睛,地址为C:\Documents and Settings\Little Chen\Application Data\Kingsoft\PowerWord\NewWord\NewWord.dic,"Little Chen"是用户名咯。

无论如何,先把这个文件以及同文件夹下的文件备份了再说。如果金山词霸的生词本程序还能打开的话,导入这个备份即可;如果金山词霸的生词本程序不能运行了,那最简单的办法就是卸载了词霸再安装,安装好了后再导入这个备份,搞定!

2006年07月13日

昨天看了前几天散发的关于.net和j2ee的对比的两篇文章,因为是各自公司写的,都竭力的批判对方的产品。SUN说.net是1种语言1种平台,MS说j2ee编程代码量大、运行效率低。

无意争辩那个好坏,目前来说还真是公婆皆有理之说。看到.net运行与CLR(Common Language Runtime)之上,与JVM类似,只是目前微软还只出了windows的版本吧?但是有一个公司却推出了MONO,声称支持Linux、Solaris、FreeBSD和Windows。除了Intel x86系列的CPU(486及各类Pentium等)之外,还要支持Sparc、PowerPC和StrongArm处理器。胃口不小呐。看看它在linux下面怎么用的吧。(下面是摘抄的)

命令行应用

首先从Mono主页http://www.go-mono.com/下载软件。然后,执行下面的命令,安装所有RPM:

# rpm -ivh *.rpm

安装完成后,所有基本的动态执行库,包括System.Data.dll、System.dll、System.Drawing.dll、System.Web.dll和System.Xml.dll都被复制到/usr/lib下。接下来,在Linux文本编辑器中输入下面的内容,把文件保存为HelloMono.cs:

class HelloMono
{
public static void Main(string[ ] args)
{ System.Console.WriteLine(“Hello Mono”);
}
}

执行下面的命令编译C#文件:

# mcs HelloMono.cs

mcs是Mono的C#命令行编译器。与MS .NET SDK的csc编译器相似,mcs也有很多命令行选项。上面的命令将生成可执行文件HelloMono.exe。注意,这个执行文件不是Linux执行文件,而是一个.NET执行文件,或者说这个文件的可执行代码形式是中间语言(IL,Intermediate Language)。要运行这个执行文件,必须执行如下命令:

# mono HelloMono.exe

Linux控制台上将显示出“Hello Mono”。关于mcs和Mono的更多说明,请执行man mcs或man mono参考其man文档。

 

GUI应用

Mono不支持Windows Forms,但在C#编程中可用GTK #编写GUI。GTK #是GTK+图形库的C#支持工具,可从http://gtk-sharp.sourceforge.Net/下载。下载完成后,先要安装RPM:

# rpm -Uvh *.rpm --nodeps

解开gtk-sharp-0.2.1.tar.gz:

# tar zxvf gtk-sharp-0.2.1.tar.gz

进入子目录gtk-sharp-0.2.1,执行:

# ./configure --prefix=/usr
# make?
# make install

完成这一步骤之后,重新启动一次。与GTK#有关的所有动态代码模块(gtk-sharp.dll、atk-sharp.dll、gdk-sharp.dll、glib-sharp.dll以及pango-sharp.dll)都会被复制到/usr/lib目录。编译用GTK#制作GUI的C#程序时,必须通过-r参数引用它们。GTK#下载包中包含了几个示例程序,如HelloWorld.cs、Menu.cs、ButtonApp.cs等。编译这些文件的命令如下:

# mcs -r gtk-sharp -r glib-sharp HelloWorld.cs
# mcs -r gtk-sharp -r glib-sharp -r System.Drawing Menu.cs
# mcs -r gtk-sharp -r glib-sharp -r System.Drawing ButtonApp.cs

下面来看看如何通过-r选项引用前面各个.dll动态模块。执行startx命令启动X-Window,进入终端窗口,再进入示例程序所在目录,执行下面的命令分别运行各个程序:

# mono HelloWorld.exe
# mono Menu.exe
# mono ButtonApp.exe

Mono项目还在完善和发展之中,目前还没有移植好全部.NET类。但不管怎样,它对许多人来说将是一个好消息。有关Mono C#类库移植进展的信息,请访问www.go-mono.com/class-status.html。

考虑一个典型的服务器/客户机式.NET应用:最终用户只与客户端打交道,客户端最好是方便的GUI应用,许多人还会希望使用熟悉的Windows平台。但是,对于用户来说,服务器端使用Windows还是Linux完全无关。所以,服务器端可以用带有Mono的Linux构造,节省了配备专用Windows服务器的投资。Mono也将为应用迁移带来方便。如果Mono能够顺利发展,Windows开发者也将能够为Linux或其它非Windows平台开发应用。如果这样的话,不久之后出现一个类似Visual Studio .NET但免费或廉价的Linux开发IDE也说不定。

然而,所有这一切是否能够成为现实依赖于Mono是否能够茁壮发展,也依赖于Mono与Windows平台上的.NET框架兼容或相似程度。另外一些因素也很关键,例如Mono的性能、GUI的友好程度等。

比较传统网格与高性能计算

 

级别: 中级

Martin Brown (questions@mcslp.com), 自由作家, Consultant

2006 年 7 月 06 日

并行计算是一种将应用程序设计为能够在大型并行计算环境中工作的方法。在网格系统中,某一操作或等式的执行是为了给并行执行任务提供一种结构,工作单元的执行和接收顺序不是连续的,并且不依赖于前面的代码迭代。尽管从总体上说,这两种系统(并行计算和网格)的模型是趋同的,但这两个系统的传统编程模型仍然是不同的。在这篇文章中,我们将查看并行计算、网格和它们的趋同性。

高性能计算概述

术语高性能计算 (HPC) 指通常使用很多处理器(作为单个机器的一部分)或者某一集群中组织的几台计算机(作为单个计算资源操作)的计算系统和环境。有许多类型的 HPC 系统,其范围从标准计算机的大型集群,到高度专用的硬件。

大多数基于集群的 HPC 系统使用高性能网络互连,比如那些来自 InfiniBand 或 Myrinet 的网络互连。基本的网络拓扑和组织可以使用一个简单的总线拓扑,在性能很高的环境中,网状网络系统在主机之间提供较短的潜伏期,所以可改善总体网络性能和传输速率。

图 1 显示了标准总线拓扑中使用标准 Ethernet 的 HPC 解决方案或专门的网络连接解决方案的布局示例。

图 1. HPC 总线网络拓扑
HPC 总线网络拓扑

图 2 显示了一网状 HPC 系统。在网状网络拓扑中,该结构支持通过缩短网络节点之间的物理和逻辑距离来加快跨主机的通信。

图 2. HPC 网状网络拓扑
HPC 网状网络拓扑

尽管网络拓扑、硬件和处理硬件在 HPC 系统中很重要,但是使系统如此有效的核心功能是由操作系统和应用软件提供的。

HPC 系统使用的是专门的操作系统,这些操作系统被设计为看起来像是单个计算资源。正如您从图 1 和图 2 中可以看到的,其中有一个控制节点,该节点形成了 HPC 系统和客户机之间的接口。该控制节点还管理着计算节点的工作分配。

对于典型 HPC 环境中的任务执行,有两个模型:单指令/多数据 (SIMD) 和多指令/多数据 (MIMD)。SIMD 在跨多个处理器的同时执行相同的计算指令和操作,但对于不同数据范围,它允许系统同时使用许多变量计算相同的表达式。MIMD 允许 HPC 系统在同一时间使用不同的变量执行不同的计算,使整个系统看起来并不只是一个没有任何特点的计算资源(尽管它功能强大),可以同时执行许多计算。

不管您是使用 SIMD 还是 MIMD,典型 HPC 的基本原理仍然是相同的:整个 HPC 单元的操作和行为像是单个计算资源,它将实际请求的加载展开到各个节点。HPC 解决方案也是专用的单元,被专门设计和部署为能够充当(并且只充当)大型计算资源。


网格计算概述

网格对于高性能计算系统而言是相对较新的新增内容,它有自己的历史,并在不同的环境中有它自己的应用。网格计算系统的关键元素是网格中的各个节点,它们不是专门的专用组件。在网格中,各种系统常常基于标准机器或操作系统,而不是基于大多数并行计算解决方案中使用的严格受控制的环境。位于这种标准环境顶部的是应用软件,它们支持网格功能。

网格可能由一系列同样的专用硬件、多种具有相同基础架构的机器或者由多个平台和环境组成的完全异构的环境组成。专用计算资源在网格中并不是必需的。许多网格是通过重用现有基础设施组件产生新的统一计算资源来创建的。

不需要任何特别的要求就可以扩展网格,使进一步地使用节点变得比在典型 HPC 环境中还要轻松。有了 HPC 解决方案,就可以设计和部署基于固定节点数的系统。扩展该结构需要小心规划。而扩展网格则不用考虑那么多,节点数会根据您的需要或根据可用资源动态地增加和减少。

尽管有了拓扑和硬件,网格就可以以图 1 和图 2 中所示结构的相同结构为基础,但使用标准网络连接组件支持网格也是有可能的。您甚至可以交叉常规网络边界,在 WAN 或互联网上合并计算资源,如图 3 所示。

图 3. 网格网络架构
网格网络架构

作为执行模型和环境,网格还被设计成在操作和执行方面更具灵活性。尽管可以使用网格解决诸如 HPC 解决方案之类的计算任务,但网格可能更灵活,可以使用各种节点执行不同的计算、表达式和操作。网格并不只是一种没有任何特点的计算资源,可将它分布到各种节点中使用,并且一直运行到作业和操作都已完成。这使得网格在不同计算和组件的执行顺序对于剩余任务的连续执行不那么重要的地方变得更加实用。

利用这种可变长度灵活性和较孤立任务的网格解决方案的一个好例子是计算机合成电影和特技效果中的表演。在这里,生成的顺序并不重要。单帧或更大的多秒的片段可以彼此单独呈现。尽管最终目标是让电影以正确的顺序播放,但最后五分钟是否在最初的五分钟之前完成是无关紧要的;稍后可以用正确的顺序将它们衔接在一起。

网格与传统 HPC 解决方案之间的其他主要不同是:HPC 解决方案设计用于提供特定资源解决方案,比如强大的计算能力以及在内存中保存大量数据以便处理它们的能力。另一方面,网格是一种分布式计算资源,这意味着网格可以根据您的需要共享任何组件,包括内存、CPU 电源,甚至是磁盘空间。

因为这两个系统之间存在这些不同,因此开发出了简化该过程的不同编程模型和开发模型。


并行计算

HPC 解决方案的专用特性在开发应用程序以使用这种能力时提供了一些好处。大多数 HPC 系统将自己表现为单个计算资源,因此它成为一种编程责任,需要通过专用库来构建一个能够分布到整个资源中的应用程序。

HPC 环境中的应用程序开发通常是通过专用库来处理,这极大简化了创建应用程序的过程以及将该应用程序的任务分配到整个 HPC 系统中的过程。

最流行的解决方案之一是消息传递接口 (MPI)。MPI 提供了一个创建工作的简化方法,使用消息传递在各个节点之间交换工作请求。作为开发过程的一部分,您可能知道想要使用的处理器(在这里指单独节点,而非单独 CPU)的数量。HPC 环境中的劳动分工取决于应用程序,并且很显然还取决于 HPC 环境的规模。如果您将进行的工作分配依赖于多个步骤和计算,那么 HPC 环境的并行和顺序特性将在网格的速度和灵活性方面起到重要作用。

一旦分配好工作,就可以给每个节点发送一条消息,让它们执行自己的那部分工作。工作被放入 HPC 单元中同时发送给每个节点,通常会期望每个节点同时给出结果作为响应。来自每个节点的结果通过 MPI 提供的另一条消息返回给主机应用程序,然后由该应用程序接收所有消息,这样工作就完成了。图 4 中显示了这种结构的一个示例。

图 4. HPC 功能图
HPC 功能图

执行模型通常是固定的,并且连续到完成某个单个应用程序。例如,如果将一项任务分配给 256 个单元,而您的 HPC 系统中有 64 个节点,那么您需要 4 个过程迭代来完成工作。工作通常是并行完成的,在整个应用程序完成之前,所有 64 个节点都仍将保持忙碌。在整个过程中,HPC 系统充当一台机器。尽管消息已经被用来在多个计算节点中分配工作,但整个应用程序被有效地操作为一个单独的应用程序。

其他 HPC 库和接口的工作方式类似,具体的方式取决于开发用于 HPC 环境中的应用程序。无论什么时候,都可以将工作分配和执行看作一个单独的过程。尽管应用程序的执行可能要排队等候,但一旦应用程序开始运行,将立即在 HPC 系统的所有节点上执行该工作的各个组件。

为了处理多个同时发生的应用程序,多数 HPC 系统使用了一个不同应用程序在其中可以使用不同处理器/节点设置的系统。例如 256 个节点的 HPC 系统可以同时执行两个应用程序,如果每个应用程序都使用整个计算资源的一个子集的话。


网格编程

网格的分布式(常常是非专用的)结构需要为工作的执行准备一个不同的模型。因为网格的这种特性,无法期望同时执行各种工作单元。有许多因素影响了工作的执行时间,其中包括工作分配时间以及每个网格节点的资源的有效功率。

因为各个节点中存在的不同之处和工作被处理的方式,网格使用了一个将网格节点的监视与工作单元的排队系统相结合的系统。该监视支持网格管理器确定各个节点上的当前负载。然后在分配工作时使用该信息,把要分配的工作单元分配给没有(或有少量)当前资源负载的节点。

所以,整个网格系统基于一系列的队列和分布,通过在节点之间共享负载,在节点变得可用时将工作分配给队列中的每个节点,使网格作为一个整体得到更有效的使用。

响应和结果都同样地在网格控制器上进行排队,以便在处理完所有工作单元(及其结果)时将它们收集到应用程序的最终结果集中。图 5 中显示了这样一个示例。

图 5. 网格功能图
网格功能图

网格模型允许使用各种级别的资源、工作单元规模和分配级别,而不只是 HPC 解决方案使用的执行模型提供的那些。大多数网格支持使用每个将被排队和分配的应用程序的各种工作单元同时执行多个工作请求。例如,可以在一些节点仍然在完成 Job 1 上的工作时开始 Job 2 上的工作,为了完成工作,两项作业以某种动态的方式使用相同数量的可用节点。

此过程的灵活特性不但允许以更动态更适应的方式执行工作,还允许网格与各种硬件和平台一起使用。即使网格中的某些节点比其他一些节点更快或更慢一些,也不再有任何关系;它们可以在自己(比较)空闲的时间完成工作,并且结果将被排队。其间,更快的系统可能被分配更多的工作并完成更多的工作单元。

出现这种不利现象是因为需要更繁重的管理费用来观察和监视各个节点,以便能够在节点间有效分配工作。在异构环境中,还必须考虑不同的平台,并开发跨支持环境兼容的应用程序。但在网格空间中,Web 服务已简化了该过程,使分配工作变得更容易,不必担心这些不同。

在查看 Web 服务的效果之前,我们将查看 HPC 和网格之间的会合区域,并了解这将如何影响不同的执行模型。


会合区域

HPC 和网格环境之间存在一些类似之处,在许多方面,这二者都出现了一些会合和分歧,不同的团体利用了这两个系统的各自优点。许多网格环境已从 HPC 解决方案的扩展中产生,基于 HPC 环境中的工作,网格中使用的许多技术得到了优化和采用。

一些显而易见的类似之处是工作被分配到更小的单元和组件中的方式,以及各个工作节点之间的工作分配方式。在 HPC 环境中,这种劳动分配通常受到严格控制,并且是根据您的可用资源进行的。网格使用了一种更灵活的模型,该模型允许将工作分配给大小不标准的单元,因此可以在截然不同的网格节点数组之间分配工作。

尽管工作的分配方式上存在不同,但分配的基本原则仍然是相同的:先确定工作及其分配方式,然后相应地创建工作单元。例如,如果遇到计算问题,可以通过创建不同的参数集,利用将应用于每个节点的每个集合的变量来分配工作。

HPC 系统中使用的消息传递结构和系统也已开发并适用于网格系统。许多 HPC 消息传递库使用共享内存结构来支持节点之间的工作单元分配。

在网格中,共享的内存环境是不存在的。此外,工作是利用标准网络连接(通常使用 TCP/IP)上发送的不同消息来分配的。系统的核心没有什么不同:我们将交换包含工作参数的消息。只有交换信息的物理方法是不同的。


Web 服务的影响

尽管平台独立 HPC 系统非常常见(比如 MPI,它支持多个平台和架构),但 HPC 解决方案并不能直接使用,并且许多使用仍然依赖于架构的统一。

典型网格的不同特性导致工作分配方式发生了变化。因为网格节点可能基于不同平台和架构,所以在不同公用和私用网络上,需要某种以平台为核心的交换工作和请求的方法,该方法使分配工作变得更容易,不必担心目标环境。

Web 服务基于开放标准,使用 XML 来分配和交换信息。该效果实质上将消除在平台和架构间共享信息的复杂性。您可以编写一系列支持不同操作的 Web 服务,而不是编写跨网格执行的二进制应用程序,这些 Web 服务是为各种节点和平台量身订做的。部署 Web 服务的费用也比较低,这使得它们对于不使用专用计算节点的网格中的操作比较理想。

通过消除兼容性问题并简化信息分配方法,Web 服务使网格的扩展变得更轻松。使用 HPC 解决方案,通常必须使用基于相同硬件的节点来扩展 HPC 环境的功能。而使用网格,特别是在使用 Web 服务时,系统几乎可以在任何平台上扩展。

网格和 Web 服务的其他问题是由于不再应用关闭的 HPC 系统和内部 HPC 系统而导致的常见分配和安全考虑事项。在 WAN 或公用网络上使用网络节点时尤为如此。对于 HPC 解决方案,系统的安全可通过硬件的统一特性得到控制;对于某一位置上的所有机器,安全性更容易控制。

为了提高 Web 服务的互操作性,特别是在网格环境中,OASIS 团队开发了许多 Web 服务标准。这些标准都是通过其 WS 前缀来标识的。通用规范包含一些顶级 Web 服务支持和全面保护规范,用于发现 Web 服务和选项以及信息交换(通过 WS-Security)。

更深一层的标准提供了用来共享资源和信息的标准化方法(WS-Resource 和 WS-Resource Framework)、用来可靠地交换消息的标准化方法(WS-Reliable Messaging)、用于事件通知的标准化方法(WS-Notification),甚至是用于 Web 服务管理的标准化方法(WS-Distributed Management)。

出于安全考虑,可以将 WS-Reliable Messaging 交换与 WS-Security 标准包装在一起,这定义了用于身份验证、授权和消息交换加密的方法和过程。

通过将 Web 服务标准支持、安全规范和您自己的定制 Web 服务组件结合在一起,可以构建一个使用多个平台和环境的高效网格。然后可以在 LAN 环境中使用应用程序,或者安全地通过公用网络提供与典型 HPC 解决方案同样强大的计算资源,但具有扩展的灵活性和对网格技术的标准支持。


结束语

网格计算从技术上说是一种高性能计算机,但它在许多方面不同于传统的 HPC 环境。大多数传统 HPC 技术都是基于固定的和专用的硬件,并结合了一些专门的操作系统和环境来产生高性能的环境。相比较而言,网格可以使用日用硬件、不同平台,甚至被配置成可以使用现有基础设施中的多余容量。

尽管存在一些不同,但两个系统也有许多相似之处,特别是当您查看跨节点的工作分工和分配时。在两种情况下,都可以使用 Web 服务来帮助支持系统操作。通过使用开放标准并允许支持更广范围的操作系统和环境,Web 服务和网格技术可能在高性能计算解决方案的功效和灵活性方面带来很大的不同。


参考资料


关于作者

Martin Brown 成为专业作家已有八年多的时间了。他是题材广泛的众多著名书籍和文章的作者。他的专业技术涉及各种开发语言和平台 —— Perl、Python、Java、JavaScript、Basic、Pascal、Modula-2、C、C++、Rebol、Gawk、Shellscript、Windows、Solaris、Linux、BeOS、Mac OS/X 等等,还涉及 Web 编程、系统管理和集成。Martin 是 ServerWatch.com、LinuxToday.com 和 IBM developerWorks 的定期投稿人,并且是 Computerworld、The Apple Blog 和其他站点的正式博客,还是 microsoft 的主题专家 (SME)。您可以通过他的 Web 站点 http://www.mcslp.com 与他联系。


2006年07月04日

这段一直在看文章,也快有好几个星期了。看了不少,觉得很多地方有值得研究的必要。可是却没有任何新的想法,这不正常。“读一个博士需要做两件事:一是完全掌握一个科研领域,二是在这个领域开创新理论。 ”这据说是老美的观点,但是这不缺乏道理,目前对于国内虽然不尽然,可是这应该当做对自己的一个严格的标准,只有这样才能顺利的完成博士的学业。教研室的其他fellows的论文基本上都够了,自己还在起跑线上。看文章的时候一定要动动脑子,有点idea才行。