gem's profileWaiting…BlogLists Tools Help

Blog


    27/11/2009

    我绝对不好色

    据说,据强仔说,博客太过技术,就会失去看客,所以,赶紧PO一个吸引眼球的标题……总之,今次的更新可以说关于戏剧也可以说是关于艺术,反正绝对不是关于技术
     
    先是关于戏剧,继“不是商业片也不是文艺片而是幻灯片”的“见过大爷”之后,接二连三的看了几部国产电影:从当下风头正健的《风声》,到去年的小制作《李米的猜想》,再到XXXX的京剧样板戏电影--《沙家浜》!咳咳,从“XXXX”的形容词,到特地醒目的标红,再到最后出场的压轴地位,都应该看出《沙》是本段的Keypoint所在。将近3个小时,我一边看片,一边完成了五谷轮回、洗头洗澡等每日必修课,等又牺牲了睡前的宝贵时间才啃完这部鸿篇巨制。所以说,要欣赏这部比我大10来岁的电影,不光要有审美的情趣,艺术的眼光,最重要,是要有娱乐的心态呀。
     
    再是关于艺术…也是为了切题。话说手头这个项目,终于做的差不多了,该有的功能、操作的人性化考量都有了,就在这结题的最后一刻,忽然卡壳了!甲方说,界面的颜色只要黑白灰,显得太单调……于是开始调色,经过无数个日日夜夜的艰难尝试,终于改好了:
     
    温暖明媚的鸡屎黄做底色,清新雅致的鸭屎绿做按钮,科技感十足的老鼠灰做正文字体,至于toolbar和logo则用忧郁的瓦蓝点缀死鱼的肚皮白
     
    满怀对赞赏和鼓励的期待,把甲方请来鉴定……打击!毁灭性的打击哇~~~
    所以说,我绝对不好(据说是擅长的意思)色!
    20/11/2009

    DECS的启动与配置

    keyword:lotus domino 关系数据库 sql server 同步
     
    一、启动DECS服务
    1、服务器的notes.ini添加一行
        EXTMGR=decsext
    2、重启服务器
    3、Load decs
     
    二、配置数据源
    服务器的控制面板->数据源(ODBC)->添加
    注意:一定要配置成系统的DSN,若配置为当前用户,则notes端无法访问
     
    三、配置decsadm.nsf
    这个过程比较直观,帮助文档说的也比较详细
     
    用DECS做同步,虽然功能有限,不过如果只作简单的数据同步,还是比较方便的
    10/11/2009

    又蹉跎了2天…

     强仔说blog有堕落为技术文的危险倾向,好吧,那就添加点文学性的引言
     
    话说,Troubleshooting这种事情,就像便秘,令人极度痛苦又不得不缓慢而持续…
     
    ----------------我是废话与正文的分隔符----------------------------
     
    Keyword:ODBCResultSet、Data type、Crash
     
    代码:
     Dim con As New odbcConnection
     Dim qry As New odbcQuery
     Dim res As New odbcResultSet
     
    con.ConnectTo("ODBC数据源")
    Set qry.Connection=con
    Set res.Query=qry
    qry.Sql="SELECT * FROM TESTTABLE"
    Call res.execute
     
    问题:
    执行完以上代码之后,任何对res的操作,都会引起lotus的崩溃,RunOnServer的话就是Domino崩,Notes端直接运行的话,就是客户端崩
     
    原因:
    TESTTABLE中,含有nvarchar(max)字段,天杀的odbcResultSet不支持
     
    解决方法:
    相应字段改成text
     
    -----------------我是11.18修改的分割符-------------------
    进一步的测试结果表明,上述问题的真实原因是lotus不支持Unicode,所以该成varchar(max)就行
    为什么不用text呢?text的存储方式制约了效率,据说微软在sql server2008中,已经不支持该类型了
    同样一个存储过程和参数,text需要25秒,而varchar只要4秒
    08/11/2009

    Keyword:Domino ODBCConnection

    在2个错误上纠结了很久,都是关于在Domino上运行代理,连接关系数据库的
    所以新手注意:
    1、在Domino上新建ODBC数据源时,应该加入“系统DSN
    默认好像是加在“用户DSN”,这样会导致Notes端无法访问,错误提示如下:
    Connector 'odbc2',Method -connect- (71)
     
    2、ODBCconnection的ConnectTo操作带用户名和口令时,发生的灵异现象
    如果不到用户名和口令,只需con.ConncetTo("DSN数据源名称")
    但是若需代理RunOnServer,上面写法就不行了
    因为DSN无法记录口令密码,执行到ConnectTo语句时,Domino端会跳出对话框要求输入用户名和口令,在等待用户名和口令期间Notes端也进入半死不活的僵死态
    解决方案之一就是在ConnectTo中带参数,于是灵异现象发生了……
    若直接写作con.ConnectTo("数据源","用户名","密码")
    这句测试代码就是无法通过语法检查
    郁闷!郁闷!郁闷!郁闷!
    改作
     if con.ConnectTo("数据源","用户名","密码") = false then
    end if
    奇迹出现了…
     
     
    时间总被蹉跎在TroubleShooting上狗脸流光容易把人抛,红了樱桃,绿了芭蕉
     
    02/11/2009

    有容,处变亦坦然

    近来总有些焦虑,一来季节变换,入秋之后格外感时伤怀;再者天生性格如是,容易为鸡零狗杂的事牵肠挂肚操心碎肺
    上午,小白发来几条短信,分享之后,忽然释怀…

    GIGI在《礼物》中唱:
    每个熟悉的哀乐喜怒
    藏在心底最温暖的深处
    没经历过挥之不去的痛苦
    不懂珍惜手中的礼物

    我想,等待与磨砺,其实是为了学会珍惜即将的幸福。始终相信:
    一定会幸福,不一定是最快,一定是最好的
    ------------------我是男士止步,女士乱入的分割线-----------------------
    ps:统计blog 更新的频率,居然基本上每月一次…那么与其叫日志,不如叫x经算了尴尬就是日子不是那么准…
    14/10/2009

    转:中科院院长路甬祥院士接受专访

    ●在今后的1020年,很有可能发生一场以绿色、智能和可持续为特征的新的科技革命和产业革命,将会改变全球产业结构和人类文明的进程

    ●围绕新科技革命,一场占领未来发展制高点的新的世界竞争正在全面展开

    ●拥有十几亿人口的中国的现代化是人类发展史上的大变革、大事件,能否抓住新科技革命的历史机遇,培育新的发展模式,走出一条绿色、智能、普惠、可持续的发展道路,将在很大程度上决定着我国现代化的进程和方向

    温家宝总理在不久前的经济形势座谈会上说,世界正处于科技革命的前夜,这是实现跨越式发展、占领未来经济发展制高点的有利时机。我们必须把握机遇,推动我国经济尽快走上创新驱动发展的轨道。

    为什么说当前世界正处在科技革命的前夜?科技革命最可能在哪些领域取得突破?这场即将到来的科技革命对中国意味着什么?我国经济在转入创新驱动发展的进程中还存在哪些障碍?围绕这些问题,记者日前对全国人大常委会副委员长、中科院院长路甬祥院士进行了独家专访。

    当今世界科技正处在革命性变革的前夜

    记者:国际金融危机发生以来,世界正处在科技革命的前夜的说法频频见诸报端。做出这种判断的依据是什么?

    路甬祥:科技革命的发生,取决于现代化进程强大的需求拉动,源于知识与技术体系的创新和突破。

    全球200多年的工业化,仅仅使不到10亿人口实现了现代化,但自然资源已面临枯竭的威胁,生态环境遭受巨大破坏。以能源为例,化石能源时代终将过去,悲观估计有100年左右,乐观估计还有200年左右。化石能源的广泛使用,污染环境,加剧了全球气候变暖,对环境和人类生存造成巨大的影响。

    由此可以预见,未来包括中国在内的数十亿人口实现现代化的愿望与努力,与地球自然资源供给能力和生态环境承载能力的矛盾将日益尖锐;中国、印度等国家实现现代化,不可能再沿袭传统的依赖攫取不可再生资源的经济增长方式,不可能再沿袭历史上少数国家以集聚世界多数资源为手段的发展模式。这就迫切需要人类开发新的资源来源,创新发展模式和发展途径,创建新的生产方式和生活方式。这一需求与矛盾,强烈呼唤着科学和技术的革命性突破。

    记者:从科学技术自身的发展来看,是不是也到了需要突破的时候?

    路甬祥:科学革命和技术革命都是在长期知识积累基础上的突变,表现出一定的规律性。

    先看科学革命。它是科学思想的飞跃,源于现有理论与科学观察、科学实验现象冲突,表现为新的科学理论体系的构建。自20世纪下半叶以来,尽管知识呈爆炸增长态势,但基本上都是对现有科学理论的完善和精细化,未能出现可以与上半世纪的相对论等六大成就相提并论的理论突破或重大发现。

    再看技术革命。它是人类生存发展手段的飞跃,源于人类实践经验的升华和科学理论的创造性应用,导致重大工具、手段和方法的创新,表现为人的能力和效率的质的提升。从近现代技术革命发生的周期看,每隔一个世纪左右发生一次技术革命。

    科学的沉寂至今已达60余年,发生于20世纪30—40年代的第三次技术革命距今也已有近80——新的科技革命已是箭在弦上。

    记者:国际金融危机会不会加快科技革命的到来?

    路甬祥:历史经验表明,全球性经济危机往往催生重大科技创新与突破,引发制度和管理创新;同时,依靠科技创新、制度和管理创新创造新的经济增长点和新的发展方式,是摆脱危机和持续发展的根本出路。这次国际金融危机,无疑将加快科技创新和新科技革命的到来。

    所以,无论是从科技发展面临的外部需求来说,还是科学技术内在矛盾判断,我们有充分的理由相信,当今世界科技正处在革命性变革的前夜。在今后的10—20年,很有可能发生一场以绿色、智能和可持续为特征的新的科技革命和产业革命,科技创新与突破将创造新的需求与市场,将改变生产方式、生活方式与经济社会的发展方式,将改变全球产业结构和人类文明的进程。

    即将到来的新科技革命,既是对我们的巨大挑战,又是中华民族实现伟大复兴的重大历史机遇。从当前和今后一个时期看,依靠科技创新调整我国产业结构、创造新的经济增长点,是化危为机的根本手段;从长远看,拥有十几亿人口的中国的现代化是人类发展史上的大变革、大事件,能否抓住新科技革命的历史机遇,培育新的发展模式,走出一条绿色、智能、普惠、可持续的发展道路,将在很大程度上决定着我国现代化的进程和方向。

    在能源与资源、信息、先进材料、农业等领域将会发生革命性突破

    记者:根据您的判断,新科技革命可能在哪些领域取得突破?

    路甬祥:准确预见科技革命何时发生、在哪些领域发生是困难的,但也并非完全无迹可寻。中科院组织300多位科学家自2007年秋开始,花了1年多时间研究的中国至2050年的科技发展路线图显示,在能源与资源、信息、先进材料、农业、人口健康等领域将会发生革命性的突破。

    在能源与资源领域,人类必然会迎来后化石能源时代和资源高效、可循环利用时代;在信息领域,几乎所有现有的信息技术到2020年前后都会遇到难以继续发展的重大障碍;在农业领域,必然要进入生态高效可持续的时代,不仅将继续发挥其保障食物安全和国民经济发展等传统功能,还将担负起缓解全球能源危机、提供多样化需求和优良生态环境等新使命;在人口健康领域,到本世纪中叶全球人口可能达到90亿,人类必须控制人口增长,提高人口质量,保证食品、生命和生态安全,攻克影响健康的重大疾病,将预防关口前移,走一条低成本普惠的健康道路。所有这些,都呼唤着在相应的科学技术上有革命性的突破。

    记者:除了上述战略领域,在基本科学问题上会有哪些突破?

    路甬祥:专家们认为,未来几十年,下列基本科学问题将可能会产生重大突破——

    在宇宙演化方面,对暗物质、暗能量、反物质的探测,将使人类进一步深化乃至从根本上改变对宇宙的认识;

    在物质结构方面,人类正在进入调控时代,可能实现对构成物质的原子、分子甚至电子的调控,进而在光//热高效转化、光合作用、光催化,能量储存与传输等领域产生新的突破;

    在生命起源与进化方面,合成生物学的出现打开了从非生命的化学物质向人造生命转化的大门,为探索生命起源和进化开辟了崭新途径,将可能导致生命科学和生物技术的重大突破;

    意识的本质是当代最具挑战性的基本科学问题,一旦突破将极大深化人类对自身和自然的认识,引起信息与智能科学技术新的革命。

    上述领域中任何一个领域的突破性原始科学创新,都会为新的科学体系建立打开空间,引发新的科学革命;任何一个领域的重大技术突破,都有可能引发新的产业革命,为世界经济增长注入新的活力,引发新的社会变革,加速现代化和可持续发展的进程。

    围绕新科技革命,一场占领未来发展制高点的新的世界竞争正在展开

    记者:金融危机发生后,发达国家在迎接新科技革命上是如何部署的?

    路甬祥:美国、日本、英国、德国等发达国家都把科技创新作为走出危机的根本力量,积极备战可能发生的新科技革命,布局未来发展,培育新的竞争优势和经济基础。

    例如,美国计划将GDP3%以上用于研究和开发,投入强度将超越20世纪60年代太空竞赛时的水平,并通过一系列配套政策,促进清洁能源、医学和保健体系、环境科学、科学教育、国际合作等领域的创新和发展,力图保持领先优势和全球经济的领导地位;日本提出了“ICT新政,旨在3年内创造100万亿日元规模的市场新需求,推动相关领域的产业结构改革,提升国际竞争力。

    可以说,围绕新科技革命,一场占领未来发展制高点的新的世界竞争正在全面展开。

    中国必须抓紧行动,以免与新的科技革命再次失之交臂

    记者:如此看来,中国必须抓紧行动,以免与新的科技革命再次失之交臂。

    路甬祥:确实是这样。我国必须要高度重视,及早统筹谋划我国科技发展战略,明确至2050年影响我国现代化进程的重点领域、重大科学问题、关键核心技术问题及其实现途径,走中国特色自主创新道路,前瞻布局,重点突破,为新科技革命的到来做好准备。

    记者:您认为我们应该在哪些方面超前部署、重点突破?

    路甬祥:具体说来,我们必须依靠科技创新,构建支撑我国全面建设社会主义小康社会、实现现代化的八大经济社会基础和战略体系——

    一是构建我国可持续能源与资源体系,大幅提高能源与资源利用效率,大力发展战略性资源的大陆架和地球深部勘察与开发,大力发展节能减排技术、可再生能源与新型清洁替代资源。

    二是构建我国先进材料与智能绿色制造体系,加速材料与制造技术绿色化、智能化、可再生循环的进程,促进我国材料与制造业产业结构升级和战略调整,有效保障我国现代化进程材料与装备的供给与高效、清洁、可再生循环利用。

    三是构建我国无所不在的信息网络体系,发展提升智能宽带无线网络、网络超算、先进传感与显示和先进可靠软件技术,建设智能中国,消除数字鸿沟,走出一条普惠、可靠、低成本的信息化道路。

    四是构建我国生态高值农业和生物产业体系,促进我国农业产业结构的升级,发展高产、优质、高效、生态农业和相关生物产业,保证粮食与农产品安全。

    五是构建满足我国十几亿人口需要的普惠健康保障体系,推动医学模式由疾病治疗为主向预测、预防为主转变,将当代生命科学前沿与我国传统医学优势相结合,在健康科学方面走到世界前列。

    六是构建支撑我国人与自然和谐相处的生态与环境保育发展体系,系统认知环境演变规律,提升我国生态环境监测、保护、修复能力和应对全球气候变化的能力。

    七是构建我国空天海洋能力新拓展体系,大幅提高我国海洋探测和应用研究能力,海洋资源开发利用能力,空间科学与技术探测能力,对地观测和综合信息应用能力。

    八是构建我国国家与公共安全体系,发展传统与非传统安全防范技术,提高监测、预警和应急快速反应能力。

    总之,应对国际国内经济和社会发展的严峻挑战,调整产业结构、转变发展方式,最根本的要靠科技的力量;迎接可能发生的新科技革命挑战,赢得发展先机和优势,最重要的是提高自主创新能力。

    在可能发生科技革命的重要方向上,我国基本上处在前沿跟踪的水平,真正由中国人率先提出和开拓的新问题、新理论和新方向寥寥无几

    记者:当前,我国正在积极推动经济社会尽快走上创新驱动发展的轨道。在您看来,前进的道路上还面临哪些挑战和障碍?

    路甬祥:从宏观层面上看,主要面临以下挑战:国际金融危机的冲击和影响,激烈的世界经济科技竞争,能源资源、生态环境、人口健康等方面的约束进一步增强,传统与非传统安全等严峻挑战。这些挑战关系到现代化建设的全局。

    从科技自身发展来看,我国创新能力和体制机制还远不能适应应对新科技革命的挑战和现代化建设的需要。突出表现在——

    原始科学创新能力不足。在可能发生科技革命的重要方向上,我国基本上处在前沿跟踪的水平,真正由中国人率先提出和开拓的新问题、新理论和新方向寥寥无几。

    关键核心技术受制于人。我国许多重要产业的对外技术依存度仍很高,先导性战略高技术领域布局薄弱,直接影响我国产业结构升级、新兴产业发展和国家安全。

    体制机制尚不完善。中国特色的国家创新体系尚不完善,科技、经济两张皮的问题尚未根本解决。现行的一些科技宏观管理体制,制约着国家创新体系各单元作用的有效发挥,政府主导作用往往异化为部门利益,难以真正集中力量办大事;市场基础作用往往异化为无序竞争,尚未形成竞争有序、合作高效的机制。

    此外,我国准确把握世界科技发展大势和国家长远发展需求进行前瞻部署的能力不强;有效吸引、培养和造就创新创业人才的政策与制度环境尚未系统建立;创新团体的活力和自主权、创新人才的自信心和积极性,都需要大幅提高。(人民日报记者赵永新)

    28/09/2009

    关键字:lotusscript 动态表格 创建 编辑 读写

    keyword:lotusscript dynamin table create edit read write

    以下代码,实现了从现有文档的表格中读取数据,并填写入新建文档的表格中:

    Sub Click(Source As Button)
     Dim NewUIWorkspace As New NotesUIWorkspace
     Dim NewNoteSession As New NotesSession
     Dim CurrentDB As NotesDatabase
     Dim NewDoc As NotesDocument
     Dim AuthorNotesName As NotesName
     Dim TableNotesRichTextItem As NotesRichTextItem
     Dim columnHeaderStyle As NotesRichTextStyle
     Dim i As Integer
     Dim columnStyles(0 To 4) As NotesRichTextParagraphStyle
     Dim headerColor As NotesColorObject
     Dim dataColor As NotesColorObject
     Dim TableNotesRichTextNavigator As NotesRichTextNavigator
     Dim TableNotesRichTextTable As NotesRichTextTable
     Dim dataStyle As NotesRichTextStyle
     
     Dim SectionNotesView As NotesView
     Dim SectionNotesViewNavigator As NotesViewNavigator
     Dim SectionNotesViewEntry As NotesViewEntry
     Dim SectionNotesRichTextItem As NotesRichTextItem
     Dim SectionNotesRichTextNavigator As NotesRichTextNavigator
     Dim SectionNotesRichTextTable As NotesRichTextTable
     Dim SectionNotesDocument As NotesDocument
     
     Dim SectionTableNotesRichTextItem As NotesRichTextItem
     Dim SectionCellNotesRichTextItem As NotesRichTextItem
     Dim SectonTableNotesRichTextRange As NotesRichTextRange
     Dim SectonCellNotesRichTextRange As NotesRichTextRange
     Dim SectonParagraphNotesRichTextRange As NotesRichTextRange
     Dim SectonTableNotesRichTextNavigator As NotesRichTextNavigator
     Dim SectonCellNotesRichTextNavigator As NotesRichTextNavigator
     
     Set CurrentDB = NewNoteSession.CurrentDatabase
     
     
     '新建文档
     Set NewDoc = New NotesDocument(CurrentDB)
     NewDoc.form = "form1"
     
     
     Set AuthorNotesName = NewNoteSession.CreateName(NewNoteSession.UserName)
     Call NewDoc.AppendItemValue ( "DepartmentDairyName",AuthorNotesName.OrgUnit1 )
     
     '画表
     Set TableNotesRichTextItem = NewDoc.CreateRichTextItem("DepartmentDairy")
     
     '设置表头格式
     Set columnHeaderStyle = NewNoteSession.CreateRichTextStyle( )
     columnHeaderStyle.Bold = True
     columnHeaderStyle.FontSize = 20
     columnHeaderStyle.NotesFont = TableNotesRichTextItem.GetNotesFont("Arial", True)
     
     '设置列宽,5列
     For i = 0 To 4
      Set columnStyles(i) = NewNoteSession.CreateRichTextParagraphStyle
      columnStyles(i).LeftMargin = 0
      columnStyles(i).FirstLineLeftMargin = 0
     Next
     columnStyles(0).RightMargin = 8 * RULER_ONE_CENTIMETER
     columnStyles(1).RightMargin = 8 * RULER_ONE_CENTIMETER
     columnStyles(2).RightMargin = 8 * RULER_ONE_CENTIMETER
     columnStyles(3).RightMargin = 3 * RULER_ONE_CENTIMETER
     columnStyles(4).RightMargin = 4 * RULER_ONE_CENTIMETER
     
     '设置表头色彩
     Set headerColor = NewNoteSession.CreateColorObject
     Call headerColor.SetRGB(239,239,239)
     Set dataColor = NewNoteSession.CreateColorObject
     Call dataColor.SetRGB(255,255,255)
     
     '创建空表
     Call TableNotesRichTextItem.AppendTable(1,5,,,columnStyles)
     
     Set TableNotesRichTextNavigator = TableNotesRichTextItem.CreateNavigator()
     TableNotesRichTextNavigator.FindLastElement RTELEM_TYPE_TABLE
     
     Set TableNotesRichTextTable = TableNotesRichTextNavigator.GetElement
     TableNotesRichTextTable.Style = TABLESTYLE_TOP
     TableNotesRichTextTable.SetColor headerColor
     TableNotesRichTextTable.SetAlternateColor dataColor
     
     '画表头
     TableNotesRichTextItem.AppendStyle columnHeaderStyle
     TableNotesRichTextNavigator.FindNextElement RTELEM_TYPE_TABLECELL
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     TableNotesRichTextItem.AppendText "column1"
     TableNotesRichTextItem.EndInsert
     TableNotesRichTextNavigator.FindNextElement RTELEM_TYPE_TABLECELL
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     TableNotesRichTextItem.AppendText "column2"
     TableNotesRichTextItem.EndInsert
     TableNotesRichTextNavigator.FindNextElement RTELEM_TYPE_TABLECELL
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     TableNotesRichTextItem.AppendText "column3"
     TableNotesRichTextItem.EndInsert
     TableNotesRichTextNavigator.FindNextElement RTELEM_TYPE_TABLECELL
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     TableNotesRichTextItem.AppendText "column4"
     TableNotesRichTextItem.EndInsert
     TableNotesRichTextNavigator.FindNextElement RTELEM_TYPE_TABLECELL
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     TableNotesRichTextItem.AppendText "column5"
     TableNotesRichTextItem.EndInsert
     
     '设置单元格式
     Set dataStyle = NewNoteSession.CreateRichTextStyle()
     dataStyle.Bold = False
     dataStyle.FontSize = 10
     TableNotesRichTextNavigator.FindNextElement
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     Call TableNotesRichTextItem.AppendStyle(dataStyle)
     TableNotesRichTextItem.EndInsert
     
     '遍历最新的科室日结文档,以填充表项
     Set SectionNotesView = CurrentDB.GetView("view0")
     Set SectionNotesViewNavigator = SectionNotesView.CreateViewNav
     Set SectionNotesViewEntry = SectionNotesViewNavigator.GetFirstDocument
     
     While Not SectionNotesViewEntry Is Nothing
      If Not Datevalue(SectionNotesViewEntry.Document.Created) = Today  Goto FinishOverToday  
      
      Set SectionNotesDocument = SectionNotesViewEntry.Document
      Set SectionNotesRichTextItem = SectionNotesDocument.GetFirstItem("SectionDairy")
      Set SectionNotesRichTextNavigator = SectionNotesRichTextItem.CreateNavigator
      SectionNotesRichTextNavigator.FindFirstElement(RTELEM_TYPE_TABLE)
      
      Set SectionTableNotesRichTextRange = SectionNotesRichTextItem.CreateRange
      Call SectionTableNotesRichTextRange.SetBegin(SectionNotesRichTextNavigator)
      Call SectionTableNotesRichTextRange.SetEnd(SectionNotesRichTextNavigator)
      Set SectionTableNotesRichTextNavigator = SectionTableNotesRichTextRange.Navigator
      
      Set SectonCellNotesRichTextRange = SectionNotesRichTextItem.CreateRange
      Set SectonParagraphNotesRichTextRange = SectionNotesRichTextItem.CreateRange
      
      Call SectionTableNotesRichTextNavigator.FindFirstElement(RTELEM_TYPE_TABLECELL)
      Call SectionTableNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TABLECELL)
      Call SectionTableNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TABLECELL)
      Call SectionTableNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TABLECELL)
      Call SectionTableNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TABLECELL)
      
      '从第2行开始复制表项
      While  SectionTableNotesRichTextNavigator.FindNextElement (RTELEM_TYPE_TABLECELL)   
       Call TableNotesRichTextTable.AddRow(1)
       
       TableNotesRichTextNavigator.FindNextElement
       Call SectonCellNotesRichTextRange.SetBegin(SectionTableNotesRichTextNavigator)
       Call SectonCellNotesRichTextRange.SetEnd(SectionTableNotesRichTextNavigator)
       Set SectionCellNotesRichTextNavigator = SectonCellNotesRichTextRange.Navigator   
       TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator   
       Call SectionCellNotesRichTextNavigator.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
       Do
        Call SectonParagraphNotesRichTextRange.SetBegin(SectionCellNotesRichTextNavigator)
        TableNotesRichTextItem.AppendText SectonParagraphNotesRichTextRange.TextParagraph & Chr(13)    
       Loop While SectionCellNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)   
       TableNotesRichTextItem.EndInsert
       SectionTableNotesRichTextNavigator.FindNextElement
       
       
       TableNotesRichTextNavigator.FindNextElement
       Call SectonCellNotesRichTextRange.SetBegin(SectionTableNotesRichTextNavigator)
       Call SectonCellNotesRichTextRange.SetEnd(SectionTableNotesRichTextNavigator)
       Set SectionCellNotesRichTextNavigator = SectonCellNotesRichTextRange.Navigator   
       TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator   
       Call SectionCellNotesRichTextNavigator.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
       Do
        Call SectonParagraphNotesRichTextRange.SetBegin(SectionCellNotesRichTextNavigator)
        TableNotesRichTextItem.AppendText SectonParagraphNotesRichTextRange.TextParagraph & Chr(13)    
       Loop While SectionCellNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)   
       TableNotesRichTextItem.EndInsert
       SectionTableNotesRichTextNavigator.FindNextElement
       
       
       TableNotesRichTextNavigator.FindNextElement
       Call SectonCellNotesRichTextRange.SetBegin(SectionTableNotesRichTextNavigator)
       Call SectonCellNotesRichTextRange.SetEnd(SectionTableNotesRichTextNavigator)
       Set SectionCellNotesRichTextNavigator = SectonCellNotesRichTextRange.Navigator   
       TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator   
       Call SectionCellNotesRichTextNavigator.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
       Do
        Call SectonParagraphNotesRichTextRange.SetBegin(SectionCellNotesRichTextNavigator)
        TableNotesRichTextItem.AppendText SectonParagraphNotesRichTextRange.TextParagraph & Chr(13)    
       Loop While SectionCellNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)   
       TableNotesRichTextItem.EndInsert
       SectionTableNotesRichTextNavigator.FindNextElement
       
       
       TableNotesRichTextNavigator.FindNextElement
       Call SectonCellNotesRichTextRange.SetBegin(SectionTableNotesRichTextNavigator)
       Call SectonCellNotesRichTextRange.SetEnd(SectionTableNotesRichTextNavigator)
       Set SectionCellNotesRichTextNavigator = SectonCellNotesRichTextRange.Navigator   
       TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator   
       Call SectionCellNotesRichTextNavigator.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
       Do
        Call SectonParagraphNotesRichTextRange.SetBegin(SectionCellNotesRichTextNavigator)
        TableNotesRichTextItem.AppendText SectonParagraphNotesRichTextRange.TextParagraph & Chr(13)    
       Loop While SectionCellNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)   
       TableNotesRichTextItem.EndInsert
       SectionTableNotesRichTextNavigator.FindNextElement
       
       
       TableNotesRichTextNavigator.FindNextElement
       Call SectonCellNotesRichTextRange.SetBegin(SectionTableNotesRichTextNavigator)
       Call SectonCellNotesRichTextRange.SetEnd(SectionTableNotesRichTextNavigator)
       Set SectionCellNotesRichTextNavigator = SectonCellNotesRichTextRange.Navigator   
       TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator   
       Call SectionCellNotesRichTextNavigator.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
       Do
        Call SectonParagraphNotesRichTextRange.SetBegin(SectionCellNotesRichTextNavigator)
        TableNotesRichTextItem.AppendText SectonParagraphNotesRichTextRange.TextParagraph & Chr(13)    
       Loop While SectionCellNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)   
       TableNotesRichTextItem.EndInsert 
       
      Wend
      
      
      Set SectionNotesViewEntry = SectionNotesViewNavigator.GetNextDocument(SectionNotesViewEntry)
     Wend
     
     
     
    FinishOverToday:
     Call NewDoc.Save(True,True)
     Call NewUIWorkspace.ViewRefresh
     
    End Sub

    25/09/2009

    用lotusscript动态绘制表格

    关键字:lotusscript、动态表格、修改、dynamic table
     
    做了lotus的汇总报表,从现有文档中提取所需内容,并自动汇总成一张新的表格,效果如下:
     
    实现方法
    新建一个表单(本例中名为"科室日结"),并在其中添加一个RichText域(本例名为"SectionDairy"),然后用代码实现绘制功能。
    就我现在所知,只有在RichText域中的表格才能直接修改。
     
    代码看似复杂,其实不难,必要的地方有注释。具体如下:
     
    Sub Click(Source As Button) 
     Dim NewUIWorkspace As New NotesUIWorkspace
     Dim NewNoteSession As New NotesSession
     Dim CurrentDB As NotesDatabase 
     Set CurrentDB = NewNoteSession.CurrentDatabase
     
     '新建文档
     Dim NewDoc As NotesDocument
     Set NewDoc = New NotesDocument(CurrentDB)
     NewDoc.form = "科室日结"
     
     '画表
     Dim TableNotesRichTextItem As NotesRichTextItem
     Set TableNotesRichTextItem = NewDoc.CreateRichTextItem("SectionDairy")
     
     '设置表头格式
     Dim columnHeaderStyle As NotesRichTextStyle
     Set columnHeaderStyle = NewNoteSession.CreateRichTextStyle( )
     columnHeaderStyle.Bold = True
     columnHeaderStyle.FontSize = 20
     columnHeaderStyle.NotesFont = TableNotesRichTextItem.GetNotesFont("Arial", True)
     
     
     '设置列宽,5列
     Dim i As Integer
     Dim columnStyles(0 To 4) As NotesRichTextParagraphStyle
     For i = 0 To 4
      Set columnStyles(i) = NewNoteSession.CreateRichTextParagraphStyle
      columnStyles(i).LeftMargin = 0
      columnStyles(i).FirstLineLeftMargin = 0
     Next
     columnStyles(0).RightMargin = 8 * RULER_ONE_CENTIMETER
    ' columnStyles(0).Alignment = ALIGN_CENTER
     columnStyles(1).RightMargin = 8 * RULER_ONE_CENTIMETER
    ' columnStyles(1).Alignment = ALIGN_CENTER
     columnStyles(2).RightMargin = 8 * RULER_ONE_CENTIMETER
    ' columnStyles(2).Alignment = ALIGN_CENTER
     columnStyles(3).RightMargin = 3 * RULER_ONE_CENTIMETER
    ' columnStyles(3).Alignment = ALIGN_CENTER
     columnStyles(4).RightMargin = 4 * RULER_ONE_CENTIMETER
    ' columnStyles(4).Alignment = ALIGN_CENTER
     
     '设置表头色彩
     Dim headerColor As NotesColorObject
     Dim dataColor As NotesColorObject
     Set headerColor = NewNoteSession.CreateColorObject
     Call headerColor.SetRGB(239,239,239)
     Set dataColor = NewNoteSession.CreateColorObject
     Call dataColor.SetRGB(255,255,255)
     
     '创建空表
     Call TableNotesRichTextItem.AppendTable(1,5,,,columnStyles)
     
     Dim TableNotesRichTextNavigator As NotesRichTextNavigator
     Set TableNotesRichTextNavigator = TableNotesRichTextItem.CreateNavigator()
     TableNotesRichTextNavigator.FindLastElement RTELEM_TYPE_TABLE
     
     Dim TableNotesRichTextTable As NotesRichTextTable
     Set TableNotesRichTextTable = TableNotesRichTextNavigator.GetElement
     TableNotesRichTextTable.Style = TABLESTYLE_TOP
     TableNotesRichTextTable.SetColor headerColor
     TableNotesRichTextTable.SetAlternateColor dataColor
     
     '画表头
     TableNotesRichTextItem.AppendStyle columnHeaderStyle
     TableNotesRichTextNavigator.FindNextElement RTELEM_TYPE_TABLECELL
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     TableNotesRichTextItem.AppendText "工作事项"
     TableNotesRichTextItem.EndInsert
     TableNotesRichTextNavigator.FindNextElement
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     TableNotesRichTextItem.AppendText "工作进展"
     TableNotesRichTextItem.EndInsert
     TableNotesRichTextNavigator.FindNextElement
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     TableNotesRichTextItem.AppendText "上级批示"
     TableNotesRichTextItem.EndInsert
     TableNotesRichTextNavigator.FindNextElement
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     TableNotesRichTextItem.AppendText "承办人"
     TableNotesRichTextItem.EndInsert
     TableNotesRichTextNavigator.FindNextElement
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     TableNotesRichTextItem.AppendText "备注"
     TableNotesRichTextItem.EndInsert
     
     
     
     '遍历最新的日结文档,以填充表项 
     Dim DairyNotesView As NotesView
     Set DairyNotesView = CurrentDB.GetView("日结") 
     
     Dim DairyNotesViewNavigator As NotesViewNavigator
     Set DairyNotesViewNavigator = DairyNotesView.CreateViewNav
     Dim DairyNotesViewEntry As NotesViewEntry
     Set DairyNotesViewEntry = DairyNotesViewNavigator.GetFirstDocument
     
     
     '设置单元格式
     Dim dataStyle As NotesRichTextStyle
     Set dataStyle = NewNoteSession.CreateRichTextStyle()
     dataStyle.Bold = False
     dataStyle.FontSize = 10
     
     TableNotesRichTextNavigator.FindNextElement 
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     Call TableNotesRichTextItem.AppendStyle(dataStyle)
    ' Call TableNotesRichTextItem.AppendParagraphStyle(ALIGN_LEFT)
     TableNotesRichTextItem.EndInsert
     
     While Not DairyNotesViewEntry Is Nothing
      If Not Datevalue(DairyNotesViewEntry.Document.Created) = Today  Goto FinishOverToday
      
      Call TableNotesRichTextTable.AddRow(1)
      
      TableNotesRichTextNavigator.FindNextElement
      TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator  
      TableNotesRichTextItem.AppendText DairyNotesViewEntry.Document.GetItemValue("DairyProject")(0)
      TableNotesRichTextItem.EndInsert
      
      TableNotesRichTextNavigator.FindNextElement
      TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator  
      TableNotesRichTextItem.AppendText DairyNotesViewEntry.Document.GetItemValue("DairyProgress")(0)
      TableNotesRichTextItem.EndInsert
      
      TableNotesRichTextNavigator.FindNextElement
      TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator  
      TableNotesRichTextItem.AppendText DairyNotesViewEntry.Document.GetItemValue("DairyRemarks")(0)
      TableNotesRichTextItem.EndInsert
      
      TableNotesRichTextNavigator.FindNextElement
      TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator  
      TableNotesRichTextItem.AppendText DairyNotesViewEntry.Document.GetItemValue("DariyTaskUndertaker")(0)
      TableNotesRichTextItem.EndInsert
      
      TableNotesRichTextNavigator.FindNextElement
      TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator  
      TableNotesRichTextItem.AppendText DairyNotesViewEntry.Document.GetItemValue("DariyReserved")(0)
      TableNotesRichTextItem.EndInsert 
        
      Set DairyNotesViewEntry = DairyNotesViewNavigator.GetNextDocument(DairyNotesViewEntry)  
     Wend
      
    FinishOverToday:
     Call NewDoc.Save(True,True)
     Call NewUIWorkspace.ViewRefresh
     
    End Sub
    12/09/2009

    ZT:调程序的小女孩

    实验室里冷极了,没有窗户,不知道是白天还是黑夜。这是一周的最后一天——周末。在这又冷又黑的晚上,一个蓬头散发的小女孩在工位上坐着。她从家里出来的时候还穿着一件外套,但是有什么用呢?那是一件很大的外套──那么大,不知是哪一年买的。她工作的时候的,就把它脱掉了,实验室的师弟嘲笑说,可以拿它当抹布。

    小女孩只好一个人做实验,一双小脚冻得红一块青一块的。她的破显示器屏幕上有一大段程序,手里草稿纸上还有一大段。这一整天,程序还是没调过,谁也没帮过她。
    可怜的小女孩!她又冷又饿,哆哆嗦嗦地调程序。显示器的光落在她的干枯的长头发上,那头发卷曲着披在肩上,看上去很久没梳,不过她没注意这些。每个桌上都堆满了论文,实验室飘着一股油墨的香味,因为这是论文deadline的时间——她可忘不了这个。

    她在一行代码上停了下来,蜷着趴在桌子上。她觉得更冷了。她不敢跟老板说,因为她程序没调过,没拿到一个数据,老板一定会骂她的。再说,换做别的题目跟这个一样难。她们头上只有paper,虽然网上可以下到一些现成的代码,还是仍然没法用。

    她的头脑几乎绝望了。啊,哪怕一次小小的成功,对她也是有好处的!她敢把上万行的代码修改一遍。编译运行一下,来找找问题么?她终于按下回车键开始运行。哧!程序开始输出信息了!一行一行的log开始出来了!她把小手拢在显示器上。多么温暖多么明亮的字符啊,简直像一支小小的蜡烛。这是一道奇异的火光!小女孩觉得自己好像坐在一个19寸液晶大显示器前面,显示器还是全新锃亮的,颜色鲜艳,字迹清晰,上边显示着程序输出的正确结果,多么舒服啊!哎,这是怎么回事呢?她刚把头伸出去,想看的仔细一些,程序crash了,大显示器不见了。她坐在那儿,眼前的破显示器上一行刺眼的segment fault。

    她又编译了一遍运行。程序又开始输出信息了,给出log了。显示器的光落在桌子上,那儿忽然变得像打印出来的paper那样洁白工整,她可以一直看到paper上的字迹。IEEE的logo,会议名称和日期,Abstract和Instroduction。更妙的是这篇paper的一作,赫然署着自己的名字!看上去那么诱惑,一直向这个穷苦的小女孩走来。这时候,程序又crash了,她面前只剩一张又硬又旧的桌子。

    她又运行了一遍。这一回,她感觉自己坐在布置整齐的会议室里。条幅上写着“博士毕业答辩”,比她去年师姐毕业时用的条幅还要大,还要美。红色的条幅上贴着那几个白色的黑体字,投影仪屏幕上许多幅美丽的彩色画片,跟顶级会议里的presentation一个样,在向她眨眼睛。小女孩向画片伸出手去。这时候,程序又crash了。只见ppt上的图片越升越高,最后成了在天空中闪烁的星星。有一颗星星落下来了,在天空中划出了一道细长的红光。

    “有一个什么人快要死了。”小女孩说。唯一疼她的师姐毕业前的时候告诉过她:一颗星星落下来,就有一个灵魂要到图灵那儿去了。

    她又编译了一遍。这一回,她把所有的数组size都设大了。师姐出现在亮光里,是那么温和,那么慈爱。

    “师姐!”小女孩叫起来,“啊!请把我带走吧!我知道,程序一crash,您就会不见的,像那漂亮的显示器,发表的paper,布置好的答辩会议室一个样,就会不见的!”

    她赶紧按了回车键,要把师姐留住。一大堆输出信息发出强烈的光,把实验室照得跟白天一样明亮。师姐从来没有像现在这样高大,这样美丽。师姐把小女孩抱起来,搂在怀里。她们俩在光明和快乐中飞走了,越飞越高,飞到那没有代码,没有论文,也没有毕业的地方去了。

    第二天清晨,这个小女孩坐在工位上,两腮通红,嘴上带着微笑。她死了,在周末的实验室累死了。新一周的太阳升起来了,照在她小小的尸体上。小女孩坐在那儿,手还按着在不知用过多少年的键盘上。

    “她想自己把程序调一下……”人们说。谁也不知道她曾经看到过多么美丽的东西,她曾经多么幸福,跟着她师姐一起走向新世界的幸福中去。
    07/09/2009

    祖母之!!!

    生气又要开始加班,周一、三晚上7点加到10点!!!禽兽啊!!!逼得像我这样文明的人都要破口大骂:
    祖母之!!!祖母之!!!祖母之!!!
    -------------
    给上网本装了个windows 7,比预想的好
    -------------
    10月1日-10月4日,厦门海峡音乐节,有一些我最近比较喜欢的歌手和乐队参加,很令人心驰神往啊。
    可是……一来,想回家和亲人一起过中秋;二来,我一个人去不安全……纠结困惑
    01/09/2009

    食一打蚝,荐一部书

        晚上原本约好教练学车的。下班前,干女儿短信过来,去吃烧烤?…矛盾、纠结、犹豫…三分之一秒的慎重考虑,毅然作出决定!一打蚝、两只羊腿、又两只茄子,满足的回来…
        饱嗝中洋溢着幸福的蒜香~恍惚间想起笠翁《闲情偶寄》吃凉拌萝卜丝的文字:
            生萝卜切丝作小菜,伴之以醋及他物,用之下粥最宜,但恨其食后打嗳,嗳必秽气。予尝受此厄于人,知人之厌我亦若是也。故亦欲绝而弗食。然见此物大异葱蒜,生则臭,熟则不臭,是与初见似小人,而卒为君子者等也。虽有微过,亦当恕之,仍食勿禁。
        到这儿,已经很明确的要推荐的书是《闲情偶寄》了…要评价的话,就3个字“才子书”,其他的懒得介绍了。。。
    21/08/2009

    ZT:在VMware虚拟机上搭建2003集群环境

    本文将在VMware虚拟机上模拟实现windows2003集群环境,这里记录下整个过程,希望对大家提供些参考。

    一、环境准备
    1、首先需要安装VMware虚拟机软件,本次安装使用的是VMware5.5版本。
    2、然后在VMware上新建windows2003企业版虚拟机,然后在虚拟机设置里将光驱配置为windows2003企业版安装镜像(ISO文件)。启动虚拟机开始windows2003企业版的安装,整个安装过程和在本地机器上安装系统一样,安装完系统后需要安装SP1。
    3、本次的集群环境模拟我们需要三台服务器,所以我们将第二步完成安装的windows2003虚拟机拷贝两份,这样就准备好了三台服务器的系统环境。三台机器中第一台我们用做域控制器(名称叫做AD),另外两台用做集群的两个节点服务器(分别叫做C1和C2)。
    这里需要注意的是,系统安装过程中会生成SID等基础信息,我们这里通过拷贝的形式复制了两台虚拟机,那么三台服务器的SID等基础信息都是一样的,这样在域登陆的时候会出现问题,所以需要对拷贝的两台服务器进行重新封装。
    封装方法:在win2k3安装光盘\support\tools\deploy.cab中提取sysprep.exe和setupcl.exe到本地硬盘,然后运行sysprep.exe,并“选择不重置激活的宽限期”,然后点击“重新封装”,系统自动重启,重启后对SID等基本信息进行重新设置即可。

    二、配置网络
    1、关闭两台节点服务器,在虚拟机设置里分别为两台节点服务器(C1和C2)各增加一块网卡。
    2、分别启动三台虚拟机服务器,对三台虚拟机服务器进行网络配置。
    对AD服务器配置计算机名称为AD,IP地址为100.100.100.1,掩码为255.255.255.0,DNS为100.100.100.1 。
    对C1服务器配置计算机名称为C1,网络邻居属性里将看到两个本地连接,将其中一个重命名为“public”,另一个重命名为“private”。然后配置public IP地址为100.100.100.2,掩码为255.255.255.0,DNS为100.100.100.1 。配置private IP地址为10.10.10.2,掩码为255.255.255.0,然后在高级中禁用NetBIOS和取消DNS地址注册。
    对C2服务器配置计算机名称为C2,网络邻居属性中的本地连接进行同样的重命名。对public配置IP为100.100.100.3,掩码为255.255.255.0,DNS为100.100.100.1 。配置private IP地址为10.10.10.3,掩码为255.255.255.0,同样禁用NetBIOS和取消DNS地址注册。
    说明:private用做两台节点服务器的“心跳”,public用做公网访问。
    配置完成后用ping命令测试网络连通性。

    三、配置域
    1、在AD服务器上,打开“管理工具”里的“配置您的服务器”,然后选择“添加或删除角色”,会打开“配置服务器向导”,点击下一步,然后选择“第一台服务器的典型配置”,点击下一步,然后输入域名(这里以nxbuntu.com为例)。点击下一步,需要输入NetBIOS名称,这里采用默认,点击下一步,进入“DNS转发配置”,这里选择“否,不转发查询”,点击下一步,确认安装的服务器列表,点击下一步,开始服务器的配置。这里会提示需要关闭其他所有程序,选择确定。等待服务器配置完成后系统会自动重启,重启后确认“服务器配置完成”即可,这样就在AD服务器上配置好了AD和DNS服务器。
    2、因为两台节点服务器做集群后,就等于一台虚拟服务器,需要集群名称和IP地址,所以要在DNS中增加一个虚拟的主机。打开AD服务器上“管理工具”里的“DNS”管理器,在左边目录树中选择“AD”下的“正向搜索区域”中添加主机。主机名称为“CT”(该名称也就是集群名称),IP地址我们设置为100.100.100.5 。
    3、启动两台节点服务器(C1和C2),将两台服务器都加入到域中(nxbuntu.com)。加入方法是在“我的电脑”属性中“网络身份”里面选择加入域,输入域名称“nxbuntu.com”,然后系统提示需要域管理帐号权限,输入AD服务器的域管理帐号(这里我们AD服务器的管理员Administrator同时也是域管理帐号,输入Administrator和密码)。确定即可加入该节点服务器到域中,重启后登陆系统是在输入用户名和密码后,点击“选项”后现在“登陆到域nxbuntu.com”即可登陆到域中。

    四、设置磁盘阵列
    我们将要创建两个共享SCSI硬盘集群必须的仲裁盘和应用程序共享磁盘。
    1、在C1节点服务器中新增仲裁盘和共享磁盘。在C1节点服务器虚拟机配置中,选择新增磁盘,然后选择“新建虚拟磁盘”,点击下一步,选择“SCSI”磁盘类型,点击下一步,输入磁盘大小(这里设定仲裁盘大小为500M)0.5G,打上“Allocate all disk space”,点击下一步,在磁盘文件保存目录窗口中点击“浏览”,选择磁盘文件保存目录,选择“All Files”后在文件名输入况中输入“Q.pln”,然后保存,这样我们将新增了集群环境所需的仲裁盘,同样的方法我们新增一个2G大小的共享磁“Z.pln”。
    然后分别选择新增的仲裁盘和共享磁盘,点击右侧的“高级”,修改SCSI nodes号为“SCSI 1:1”和“SCSI 1:2”。这是因为我们创建虚拟机时默认采用的也是SCSI磁盘,所以需要将nodes设置在不同的区段。
    2、在C2节点服务器上加入仲裁盘和共享磁盘。在C1节点服务器虚拟机配置中,选择新增磁盘,然后选择“使用现有虚拟磁盘”,(这里和节点C1不同),然后选择“Q.pln”文件所在位置将加入了仲裁盘,同样的方法可加入共享磁盘。
    3、进入C1节点服务器虚拟机文件存放目录,用记事本打开后缀名为“.vmx”的虚拟机文件(该文件是虚拟机的配置文件),然后在文件最后添加一行
    disk.locking = FALSE
    同样在节点C2服务器虚拟机文件中也添加该行代码。该参数的作用是打开磁盘共享模式。
    4、分别启动两台节点服务器C1和C2,在“磁盘管理”中即可看到有两个未初始化的磁盘,需要对它们进行初始化(但不要进行动态转换)并建立主磁盘分区,分区格式采用NTFS,仲裁盘盘符设置为“Q”,共享磁盘盘符设置为“Z”即可(这里两台节点服务器都需要进行相同的操作)。

    五、集群安装
    1、在节点C1服务器中,点击“管理工具”里的“群集管理器”,然后选择“创建新群集”,弹出群集创建向导,输入域名“nxbuntu.com”,群集名为“CT”,点击下一步,选择节点服务器,这里默认是节点“C1”,直接点击下一步,向导开始自动收集信息,完成后点击下一步,输入群集IP地址,这里输入IP地址为:100.100.100.5(这里的群集名和IP地址是我们在DNS管理器中新增的主机名和IP地址),然后选择下一步,输入域管理账户(这里是Administrator和相应的密码),点击下一步,向导开始自动配置群集,直到完成即可。
    2、在节点C2服务器中,点击“管理工具”里的“群集管理器”,选择“添加节点到群集”,然后输入群集名称CT,点击下一步,然后选择C2节点服务器,系统会自动收集信息,完成后下一步输入域管理帐户密码,然后系统会自动完成配置。
    3、在“群集配置”里“网络”中private属性里,选择“只用于内部通讯(专用网络)”,然后确定。
    19/08/2009

    转载:Domino集群

    1、注册新服务器

      administrator   -   配置   -   注册   -   服务器

      注册一个你要新增的服务器。

      2、安装配置附加服务器

      1:拷贝新的SERVER   ID到新服务器数据目录;

      2:拷贝主服务器上的names.nsf到新的服务器数据目录;

      3:修改主服务器配置文档,将新的服务器加入可以访问主服务器的权限里面;

      4:配置的时候,选择添加附加服务器,服务器id为你拷贝过去的serverid   

      3、新建群集(cluster),并将两个服务器加入这个群集

      administrator   -   配置   -   所有服务器文档   -   选中一个服务器然后点击添加到群集   -   如果当前没有群集那么选择新建   -   加入第二、第二...个服务器。

       

      4、建立两个服务器连接

      aministrator   -   配置   -   连接   -   添加连接   -   添加一个从附加服务器到主服务器的连接。   

      5、建立群集cluster端口并修改服务器文档和notes.ini文件

      1:分别为两个服务器添加群集连接端口:  

      administrator   -   配置   -   右边工具栏   -   服务器   -   设置端口   -   新建一个端口比如cluster,类型为tcp  

      2:修改两个服务器配置文档,在端口-Notes网络端口里面添加cluster,网络地址为当前服务器的ip或主机名,并启用他;  

      3:修改notes.ini文件,添加如下配置:  

      Server_Cluster_Default_Port=cluster  

      TCPIP_TcpIPAddress=0,10.0.1.1:1352     //根据你自己的服务器ip地址来设置  

      cluster_TcpIPAddress=0,10.0.1.1:1352   ////根据你自己的服务器ip地址来设置  

      4:重起两个domino服务器。  

       

      6、新建复本和权限设置

      必须拷贝的复本:  

      names.nsfadmin4.nsfcatalog.nsf     (如果你用到domino   ca,那么加   certca.nsfcertsrv.nsf)  

      新建所有你需要的应用数据库复本到附加服务器。  

      添加附加服务器的权限到每一个你需要的数据库,最好是一个服务器群,然后添加,以便以后增加新的服务器,一般默认的localdominoserver服务器群就包含了这些服务器。       

      7、测试群集是否成功运行

      domino控制台敲入:show   cluster   ,可以看到群集的基本信息,一般为:  

      ---  

      Cluster   information:  

      Cluster   name:   Cluster_1,Server   name:   server1     //(你的群集名称和当前服务器名)  

      Server   cluster   probe   timeout:   1   minute<s>  

      Server   cluster   probe   count:   1200  

      Server   cluster   defalut   port:   cluster   //(你设置的cluster端口)  

      Server   availability   threshold:   100  

      Server   availability   index:   100   <state:BUSY>  

      Server   availability   default   minimum   transaction   time:   3000  

      Cluster   Members   <2>:     //(你的所有群集服务器成员)  

      Server:   server1/test/server,   availability   index:100       //(你的主服务器)  

      server:   server2/test/server,   availability:   BUSY     //(你的附加服务器)  

      ---  

      备注:availability   表明群集和各成员服务器正常。 

    27/07/2009

    捣练子

     
    捣练子
     
    幽岭静
    海无烟
    策马山间紧纵鞭
    白眼熙尘名利客
    云穿坞入衍华年
    ------------------
    虽是单位50周年征文的应酬之作,但水准还是相当高的(天使羞涩状…)
    优点:
    1、一收一放,节奏感很强
    2、、切题!相当的切题~
    03/07/2009

    关键字:ADO SQL Server 存储过程 返回记录集

    只需在存储过程的开头添加一句:
     
    SET NOCOUNT ON
     
    吾尝终日而思矣,不如须臾之所学而……没错,问题就这么解决了!
    10/06/2009

    最喜欢过生日了~

    今年闰五月,有3个生日,今天610第一个,619第二个,710第三个
    天使好期待生日蛋糕礼品盒
    29/05/2009

    唯一的家乡是我从不能朝仰的远方

     昨晚睡前绿豆汤喝多了点,半夜起来的时候,mp3里恰恰传来一句“唯一的家乡是我从不能朝仰的远方~”狗脸忽然很欷歔
     
    ---------------------------------------------
         《南国的孩子》
          
      风扬起了你的黑发 
      你不经心地甩过鬓颊 
      笑可以天然地飘洒 
      心是一地草野 
      唯一的家乡是我从不能朝仰的远方 
       
      夜晚你含泥土的气息 
      纯然原始的粗犷 
      冷地热着的眼神消长 
      你握有誓言般的梦想 
      即不能停止流浪,流浪 
       
      回声中, 有人呼喊 
      有人悼念 
      有人不言不语地明白 
       
      你是南国来的孩子 
      有着不能缚的性子 
      身上披覆了寓言而浑然不知 
      奔跑着忘我的快乐悲伤都放肆 
      阳光也不愿阻止 
       
      你是南国来的孩子 
      人要爱人要恨的样子 
      血里流窜着远在古老的故事 
      手心刻划上帝的仁慈与未知相似  

      与未知相似,相似
    05/05/2009

    我左青龙 右白虎 肩膀纹个米老鼠

     
    减字木兰花
     
    风凉云淡
    星冷月残孤鸦叹
    影曳灯斜
    瑟瑟啾啾残虫喋
     
    叶飞天肃
    榭北窗西经行处
    梦浅宵长
    漫漫悠悠紧思量
     
    ---------------------------
    无意中翻出以前的碎纸片,提醒我年轻的时候也是文学青年~
    已经想不起来是什么时候写的了,搞不好还是上个世纪,某个失眠的秋夜…
    那时候应该还年轻,所以才会有心情强说愁。
    好吧,我承认,这个标题是为了形成高度的反差
    25/04/2009

    南京!南京!

    30万亡灵的沉重,拍出一部成功的商业片,但是哪一个中国人能把这个题材仅仅当作商业片来欣赏?

    就这样了,一段永远令人心恸的历史,使得任何对这个题材电影的结构、技巧、深度…的批评和挑剔,都会显得很冷血。

    20/04/2009

    “三国杀”

    昨天玩了2把“三国杀”,有点儿意思。
    两把的“主公”都是linwen,而我…两把都是“奸臣”
    第一把比较乌龙,自己把“奸臣”看成“忠臣”,杀死所有的“反贼”之后,还一心一意辅佐“主公”杀死了另一位“忠臣”
    第二把就相当成功了大笑陪着“主公”,隔岸观火的看着两只“忠臣”互相残杀……最后以一滴血之差,惜败于“主公”,算是相当不错的成绩了