Archive for May, 2008

SVN简介及使用说明

简介及使用说明

作者:mirclle

一、概述

简单的说SVN是一个GPL版本控制软件,其创始人是从CVS项目中出来了,其目标就是替换掉CVS,SVN尽力维持CVS的用法习惯,并增加了一些很方便但CVS做不到功能,如目录改名等。笔者使用了两个月的SVN后,感觉SVN确实做到了。

二、SVN能够做什么

1、从CVS继承的功能

(1)、程式码版本的存储与维护

(2)、程式码版本的追踪回溯

(3)、程式码版本的分合控制

(4)、职员多人合作开发专案

(5)、程式码远端管理维护

(6)、程式码匿名截取

2、在CVS基础上增添的新功能

(1)、目录版本控制,目录更名

在CVS中,一个目录是没有版本历程的,假如原来一个名为doc/的目录,在经过一段时间之后,发现它应该要称为manual/比较恰当,此时我们只能建 立一个新manual/,把doc/目录下的档案复制过去,把manual/下的档案新增至CVS系统中,再把doc/删除。而且必须注意的是,在档案的 复制与删除过程中,我们也同样地遗失了这些档案的历史历程。版本控制最主要的资料就这样丢掉了。

但是在SVN中,目录与项目文件同样都是纳入版本控制之中。也就是说,我们可以随时要求SVN将某个项目文件恢复到某个时间点的状态,也可以对目录进行更名的动作。

(2)、对多个项目文件进行不分割送交

在CVS中,虽然我们可同时对多个项目文件进行送交,但是CVS并不保证一次的送交是不可分割的,而SVN的送交就没有这个问题。送交的结果不是全都进系统,就是全都没有进系统,不会只有一部分及系统的状况。

(3)、更佳的二进制资料处理

首先,SVN不主动更动项目内容,除非使用者加上这样的设定。再者,它使用可适用于文字与二进制资料的内容差异演算法,在项目储存上,文字与二进制资料都具有相同的优势。现在,不只是文字资料适合置于版本控制系统中,连二进制资料也可以很方便地放进来。

(4)、高效率的分支与标记

在SVN系统的标记是以目录的副本的方式建立的,而副本是以类似链接的方式来建立。也就是说,不管涉及的目录与项目有多少,它所花费的时间都是固定的,不会因为档案越多而耗时越久。同样的,SVN的分支也是以目录的副本来实现的。

注释:1-6条是SVN继承了CVS的特点,因此,在这里不再进行详细的描述。7-10条为SVN在CVS基础上增加的新功能。其他详细内容请参考关键词(SVN CVS SOURCESAFE 版本控制 源代码管理)。

三、名词解释

1、Check out——从服务器端取得代码

把服务器资料库里存放的某个项目代码取出来,放到本地主机中,这个动作叫做“check out”。使用具体步骤:进入要安装项目文件的目录中,点击鼠标右键,选择SVN Check out项,然后填写项目的原始路径和安装路径后点击“ok”即可。

2、Update——更新项目代码

以前checkout过的一个项目代码,当服务器上有了更新的代码,或者本地代码损坏或丢失,update可以自动判断本地哪些文件较旧,或者缺少,都会 自动更新。当然,你也可以删除掉本地代码,重新check out。使用具体步骤为:在要更新的项目上点击鼠标右键,选择“SVN Update”项即可。

3、Commit——将本地代码上传到服务器

当修改(增加,删除,修改等所有写操作)过本地代码后,这个动做会把新代码提交到SVN。如果本地代码做了修改,不执行commit操作,SVN服务器上 是不会有这个新版本的,也就是说其它人也得不到。对代码做过修改后,应尽快commit。使用具体步骤:在修改完待上传的项目上点击鼠标右键,选择 “SVN Commit”项即可。

4、Export——将项目导出到本地

如果想要得到一个完整的项目,且不需要再进行版本的改动,可以直接把该项目导出版本控制系统,成为一个普通文件进行使用。具体步骤为:单击鼠标右键,选择TortoiseSVN——>>Export项,然后填入要导出的项目既可。

5、Show Log——显示所有版本

如果项目成员想查看本地下载的属于版本控制内的某个项目以前的所有版本,就在该项目上单击鼠标右键,选择TortoiseSVN菜单下的Show Log项。则该项目的所有版本及其每个版本的修改信息都将显示在出现的新对话框下,供项目成员进行参考。

6、Update To Revision——恢复到某个版本

当项目成员想要把某个项目恢复到以前的某个版本时,在该项目上单击鼠标右键,选择TortoiseSVN菜单下的Update To Revision,于是,在出现的Update对话框中可以先点击“Show Log”来查看及确定要恢复到的版本号,或者直接将要恢复到的版本号填入“Revision”旁的编辑区内,最后点击“OK”。于是,该项目就恢复到想要 的项目版本了。

7、Add——增加文件

当项目成员想在项目中添加一个新文件时,请把该文件先拷贝到项目文件加下,然后,在该文件上单击鼠标右键,选择TortoiseSVN菜单下的Add项,于是,该文件就可以被添加到项目中了。

四、高级特性

1、Update to revision

Update默认更新到最新版本,update to revision则可以更新到指定版本(可以是更旧的版本)。

2、增删项目文件及目录的操作

增删项目内文件或目录,请一定使用svn add ,或svn del 或svn rename,然后做commit操作

Incoming search terms for the article:

ACM比赛经验

在天大,偶参加的比赛可以算是最多的了,说说比赛经验。
可能现在说早了点,需要大家在正式比赛之前再看一遍。
推荐此篇文章打印,与模板放在一起。

1. 比赛中评测会有些慢,偶尔还会碰到隔10分钟以上才返回结果的情况,这段时间不能等结果,必须开工其他题,如果WA,两道题同时做。交完每道题都要先打印。
2. 比赛时发的饭不是让你当时就吃的,那是给你赛后吃的。基本上比赛中前几名的队都没人吃,除非领先很多。
3. 很多选手,尤其是第一次参加比赛的,到一个新环境,全当旅游了,参观的参观,找同学的找同学,玩玩乐乐就把正事抛到脑后了,结果比赛自然没什么好成绩,这样的例子太多了。所以到参赛地后要时刻不忘自己是来比赛的,好好休息、备战。
4. 参赛前一天要睡10个小时以上,非常有助于保持比赛中的精力,很多时候比赛到3个多小时队员就没劲了就是这个原因。前一天晚饭与当天早饭要吃好,理由同上,要知道下顿饭得下午3点赛后才能吃。
5. 到新环境,时刻注意远离疾病,感冒肠炎病不大,却是成绩的天敌。
6. 英语不好,看不懂的,要勤查词典,懒一次就少一道题,远离奖牌。
7. 可以紧张,杜绝慌张,慌张是出题的敌人,任何时候,如果发现自己或者队友出现慌张的情况,提醒深呼吸。
8. 照着纸敲代码和sample数据时不要敲错,特别注意文字信息。
9. 第一道简单题交给队中最稳的人做,万一遇到麻烦也不要慌,如果有很多队都出了就更不必着急了,它必定是简单题,必定是可以很快做出来的,晚几分钟也比罚掉20分好。另外注意不要PE。
10. 最后一小时是出题高峰,谁松懈,谁落后。最后一小时出一道是正常,出两道更好。

以上各条均有出处,每条都包含着以往教训,每条都可能浪费掉你一年的努力,不可小视。
以下各条有些来自于其他学校,有些是总结:

11. 无论是否有人通过,所有题必须全读过,最好每道题都有两人以上读过,尽量杜绝讲题现象。要完全弄清题意,正确的判断出题目的难易,不要想当然。
12. 虽然讨论有助于出题,但是以往每赛区第一名基本都是各自为战,但是互相了解,觉得一道题适合其他人做就转手。
13. 保持头脑灵活,在正常方法不行时想想歪门邪道,比如换种不常见的特殊的数据结构,加预处理,限时搜索等。效率是第一位的,如果觉得DP麻烦就用记忆化搜索,总之考虑清楚后就要在最短时间出题。
14. 竞赛中更需要比平时稳定,程序出来后要检查重点地方,尽量1Y。对于WA的题,不要改一处就交,很可能还有错的地方,要稳,要懂得在压力下也要仔细。对 WA的题测试时要完整,必须每个点都测到,但不一定特别复杂。要考虑到测试的各种边界情况,比如矩阵可能为1*1或1*n或m*1。
15. 除非做出的人很多,否则最后考虑复杂几何题,精度造成的问题太多了。对double型操作要小心判断大小、绝对值等情况。一般情况下不要用float型。
16. 块复制要小心,检查相应的部分是否已经正确修改。
17. 纸上写程序要尽量完整,每道题上机时间(包括输入、测试和调试)不要超过一小时。程序出错如果一时无法排除就应该打印出来阅读而把机器让出来。
18. 提交时注意题号,不要交错题。由于PC^2的界面,这种情况时有发生。
19. 尽可能想到题目可以用到的数学的东西。
20. 初始化必不可少。
21. 数组行列下标不要弄反,位运算或字符串哪头是0和n不要搞反。
22. 提交时记得把所有的调试信息都关掉。
23. 实在迫不得已才可换人做题。
24. 有想法后,写程序之前想好时空效率。比赛中一般不会出现时限30秒以上的题(国外赛区除外),10秒及以上的一般不会超过3道。
25. 竞赛机会每年只有一次,训练了很长时间,如果比赛中出现疏失,那么今后一年都会后悔。对于不准备明年参赛的同学,更是要珍惜最后一次参赛机会。

附以前所写《组队赛说明》

1 要有做题比较多的队员,对于各种题型都有所涉及,做题稳,一般对前两道简单题能够保证快速,并且99%以上一次AC。
2 要有人专门应付数学与几何题,但复杂的几何题要放在最后做,对一些常用的函数要有模版准备。如精度控制,叉积,凸包等。
3 要有人能够对付麻烦的题,并保证一定的通过率,大多数的比赛都至少有一道这样的题,如 POJ 1913,TOJ 1092。
4 要有人对DP非常之熟,单次、双次、相对等情况都不在话下。对经典DP手到擒来。
5 要有人对稀奇古怪的算法都做过程序,涉猎广,对于数论、图论中的一些特殊结论都知道。如 TOJ 1584,ZOJ 1015,UVA 10733。
6 要有人对复杂的通用算法做过程序,如网络流中的最小费用最大流等等一系列的流,求割点/割边,启发式搜索/搏弈等。
7 模版要自己写,并且另两个人都认真读过,用以往题目进行多次的测试。模版要全,但要控制篇幅,因为很多赛区已开始限制页数。
8 要有人对 Linux/vi/gcc 系统熟悉,对PC^2熟悉,一定注意正式比赛时不要出现提交错题的情况。另外也要试用Dev-C++等Windows下的免费软件。总之熟悉比赛环境。
9 每次练习赛都要当作正式比赛来做,要确保所有的题都看过,赛后要把没做出来的题尽量补上。
10 可能的话多看看以往比赛的总结、照片和录象,缩短与正式竞赛的距离,避免正式竞赛时紧张得做不出题等情况。

最好的情况就是对于各种题目三个队员都能做,但是又各有侧重。
要保证出来一道题能够有人会做、敢做,至少也要知道做法

省赛比赛总结

周日省赛已告一段落。这次比赛,总体失误较大,没能发挥出自己的水平来。

比赛伊始,我们选了第四题,一个纯加减题,很快便拿下了这题。我们又转向了第二题,大致是算一个数的每一位之和是否能被这个数整除。由于自身因素,在算一个数的每一位之和时的出现错误,浪费不少时间,也导致提交错误。

接下来,我们做的是第一题,大致上是个一个点到其他所有点的最短路中的最大值问题。刚看到题,我们就想到Dijkstra算法,也真用了它依次求出每两个点的最短路,并从这些最短路中找出最大值来。调试提交之后返回超时。我们简单分析了一下,认为是在重复计算时浪费的时间。于是,便改用了Floyd算法,改用这种算法能够节省一些对于每两点之间求最短路时的重复的运算。不过依然超时,我们便先将其搁置了。

搁置图的题后,我们选择了第三题。仍然是个人失误,将算闰年的表达式写错,浪费了数次提交。总之,这样的例子还有挺多,都是由于某个小地方的不起眼的失误引起的损失。

总结这次比赛,失败之处主要有三:

一、个人失误

主要责任在我。多次出现较为低级的失误,且长时间未发觉,从而影响了整场比赛。

二、功底不牢

比赛中,如第一题,三人对Dijkstra算法了解不够全面,应用也不够熟练,以至于比赛时花了大量时间研究其应用。

三、对编程环境不熟悉

比赛所用的开发环境是Dev Cpp。我们三人对它都不太熟悉,在缩进等地方都花了挺大精力,浪费了不少时间。另外,由于较为依赖于Debug,突然换到一个自己不会操控其Debug的开发环境下,我们的效率也变得很低。

针对以上问题,我们制定了相应的方案,如下:

一、多做题

多做题,避免再度过多出现低级失误。

二、多接触、使用重要算法。

做题时,选择性的做些自己薄弱的题,如图论等,了解其基本思想,并尽量做到熟悉应用其代码。

三、少用Debug

平时多用脑子调试,少用Debug调试,尽量做到不依赖Debug,以免以后遇到没用过的开发环境时无从下手。

Two commonly used operations(两个常用操作)

Meets the preceding text(接上文)

It has been already introduced the common classes in my preceding text, and today, then let me introduce the operations of the two classes. Because my ability is limited, possibly i will write somewhat superficial, so welcome everybody to point out my mistakes, and i also welcome each position to discuss together with me.
1、Monitoring documents various events:

PowerPoint.Application CurApplication;
* monitoring opened or preserved documents, as follows

CurApplication.PresentationOpen +=

new Microsoft.Office.Interop.PowerPoint.EApplication_PresentationOpenEventHandler( this.PresentationOpen );

CurApplication.PresentationSave +=

new Microsoft.Office.Interop.PowerPoint.EApplication_PresentationSaveEventHandler( this.App_PresentationSave );


* writes the monitoring function, the above two monitoring homographic functions respectively are:

private void PresentationOpen(PowerPoint.Presentation presentation){}

private void App_PresentationSave(PowerPoint.Presentation Pres){}

so long as we places ours control in the corresponding function, then we can easily realize to their monitoring.
2、 enumerates all writings in a document
to analyze the operation,we can easily divides it into 2 more similar enumeration processes.
First one, enumerates in Presentation all Slide, its two pieces enumerate inside each Slide all Shape. Therefore, these writings then can be obtained very easily from this Shape.Concrete realizes are as follows specifically:

foreach (PowerPoint.Slide slide in this.Application.ActivePresentation.Slides){

foreach (PowerPoint.Shape shape in slide.Shapes){

string tmp = shape.TextFrame.TextRange.Text;

//Add your code here

}

}

like this, two simple operations completed. Although the operation is simple, but only you can use the application to be appropriate, then can realize fabulous effect. Anticipates everybody’s performance.

上文已经介绍了我常用到的一些类,而今天,则主要介绍这些类的两个操作。由于我能力有限,可能会写得有些肤浅,欢迎大家给予指正,也欢迎各位与我共同探讨。

1、监控文档各事件:

PowerPoint.Application CurApplication;

  • 监控打开、保存文档,如下

    CurApplication.PresentationOpen +=

    new Microsoft.Office.Interop.PowerPoint.EApplication_PresentationOpenEventHandler( this.PresentationOpen );

    CurApplication.PresentationSave +=

    new Microsoft.Office.Interop.PowerPoint.EApplication_PresentationSaveEventHandler( this.App_PresentationSave );

  • 写监控函数,以上两个监控对应函数分别为:

    private void PresentationOpen(PowerPoint.Presentation presentation){}

    private void App_PresentationSave(PowerPoint.Presentation Pres){}

只要将我们的操控放在相应函数中,便能轻松实现对他们的监控。

2、枚举一个文档中的所有文字

分析一下操作,容易将它分为2个较为相似的枚举过程。其一是枚举一个Presentation中的所有Slide,其二则是枚举每一个Slide里边的所有Shape。于是,这些文字便能很容易地从这个Shape中获得。具体实现如下:

foreach (PowerPoint.Slide slide in this.Application.ActivePresentation.Slides){

foreach (PowerPoint.Shape shape in slide.Shapes){

string tmp = shape.TextFrame.TextRange.Text;

//加入你的操作

}

}

这样,两个简单的操作就完成了。操作虽然简单,但只用应用得当,便能实现很不简单的效果。期待各位的表现。

VSTO常用类(Commonly used classes)

Both English version and Chinese Version

Since I’ve got several projects on hand,I’ve no too much time writting the blog.So just write casually!

Today,I just want to introduce some classes commonly used in mine project,and relations between them.

As I said before,my projects temporarily mainly aims at PowerPoint.Regarding the PowerPoint VSTO project,each time when one project is opened,there will produce a PowerPoint.Application object,in which, there are an ActivePresentation object and an ActiveWindow object.Each documents, is a Presentation.Obviously, ActivePresentation is the current documents.Now,I will give some classes commonly used in my project,and relations between them:

Class Relation
in which, SlideRange is the Slide set selected currently;easy to guess,ShapeRange is currently selected Shape set.
With these sets, we may enumerate obtain each element, for example:
foreach (PowerPoint.Slide CurSlide in CurSlideRange)
Thus, then can cselect all the element the enumeration.
In shape demonstrated the ordinary text,is stored up in TextEffect.Text.

And,through to the Presentation detection,we can detect the commonly used event in PowerPoint, like open presentation, preserve presentation, slide show and so on.You can turn to the first several articles specifically for codes.
I’ve to stop here today, if had any introduction not clear,contact me.
最近,手头上有几个项目,没太多时间写博客,随便写写罢!

今天,主要想介绍一些在我的项目中常用到的类,及他们之间的关系。

前面已经有过些介绍,我做的项目,暂时来说主要是针对PowerPoint。对于PowerPoint的VSTO项目来说,每个项目打开时都会应一个PowerPoint.Application类。这个类中,我常用到的是ActivePresentation和ActiveWindow。每一个文档,都是一个Presentation,很明显ActivePresentation便是当前文档。

以下,给出我的项目中用到的类,及其关系:

Class Relation

其中,SlideRange为当前选中的Slide集合;很容易猜测到ShapeRange为当前选中Shape集合。有这些集合,我们可以枚举获得每一个元素,如:foreach(PowerPoint.Slide CurSlide in CurSlideRange)。这样,便能完成对选中元素的枚举。

一个shape里显示的普通文本,储存在TextEffect中的Text里。

另外,通过对Presentation的侦测,我们能够侦测到PowerPoint的常用事件,如打开,保存,播放等。具体可以翻查前几篇文章。

今天就介绍到这儿了,如果有什么介绍得不清楚的地方,还希望大家多提醒我。

教育反馈系统(Education feedback system)

中英文版 Both Chinese version and English Version

寒假时接到一个项目,是关于教学反馈方面的。这个工程大致意思如下:

课堂上,老师为了便于掌握学生的学习情况,往往需要对学生的一些数据进行剖析。但单纯的举手什么的有时候很难满足老师们的需要。于是,便诞生了我们这个项目。通过计算机的处理,而列出一些数据,这样便方便老师掌握学生动态了。

具体实现,我们想设计这么一款软件,通过它老师能够设计一些题目,并给每个题目都赋一个答案。上课时,通过蓝牙或红外或许学生的输入,再处理这些输入并给出老师们想看到的条行图等具体数据。软件还能设置为记名答题和不记名答题两种模式。这样,便能便能对它的功能进行扩展。利用这款软件,用户们还能对被访问者的一些隐私内容进行调查;或者能在辩论赛等场合,用做抢答器或评委打分器。

考虑到Office使用的普遍性,我们又想将这款软件开发成PowerPoint 插件。老师只需要在需要添加题目的地方,使用我们的插件设置密码等项。这样老师便能能够正常编写这个文档,正常排版,而不用在我们的界面上勾画。

对于这个项目,由于某些问题,不便多说,望请谅解。若各位对这个项目有什么好的建议或意见,欢迎联系我。

Last winter vacation i receives a project,which is about the teaching feedback system. This project approximate meaning is as follows:
In the classroom, teachers for usually wanna keep abreast of student’s study situation,and they often need to carry on the analysis to student’s studying result. But pure raising hands to answer questions is like to be somewhat difficult to meet teachers’ needs. Therefore,our project was born. Through computer’s processing, and then lists some datas, througn these datas then teachers are able to grasp the student situation.
And the concrete implementing plan is as follows: we want to design such a software,which can design some questions endowed with an answer by the teachers.When attending the class,students could make use of the blue tooth or the infrared equipment to input the answer,then transform the datas to computer to process.After the datas analysed by the computer teachers can be given the strip good chart which teachers want to see. The software can also establish to record with a name or with no name two kind of patterns payable to bearer. Thus,we can then be able to carry on the expansion to its function.
Given the Office Suits are used so universally, we want to devilop a PowerPoint plug-in unit. Teachers only need to increase the topic goal place, uses our plug-in unit to establish the password and so on item. Then teachers can be able to compile this documents normally, normal typesetting, but do not use on ours contact surface outlines.
Regarding this project as a result of certain questions,i can’t talk more inconveniently so requesting your forgiveness. If everybody has any good suggestions or the opinions to this project, feel free to get in touch with me.

掌控数字化生活

首先我们来大胆地想象一番,只需操作简单的遥控器,躺在客厅里我们就可以欣赏到书房电脑中下载的大片;或者将不能及时收看的电视节目,通过电脑存储到移动硬盘上,什么时候想看就看;又或者边用客厅电视,边用书房电脑等等,那将是一件多么幸福和惬意的事情?这还不算什么,接下来再让我们想象一下更炫的。晚上睡觉之前把家中的智能闹钟定好时间,早上起来打个哈欠,洗漱刚刚完毕电脑提示您今天的形成安排,准备好了要查阅的邮件,接下来电视机自动打开开始播放您定制的新闻节目,同时微波炉内的早餐也已经准备好了,然后便开始你的早餐,早餐后汽车自动从车库开到了您的家门口,然后开车上班去,快下班的时候用你的手机给家里的电脑终端发个短信,告诉您的回家时间,电饭煲便开始为您准备香喷喷的米饭了,饭后便又是我们最初想象的场景,睡前热水器已经为您准备好了舒适的热水,洗个澡后躺在床上便又开始新的一天数字化生活……

想象过后让我们了解一下数字化生活的定义:以计算机技术和网络技术为基础,各种家用数字化设备有机结合在一起的智能化的网络家庭。这些家用数字化设备包括电话,电脑,信息家电等。总而言之,数字化家庭包括四大功能:信息、通信、娱乐和生活。从信息角度而言,电脑将作为服务器,将家中的数字化设备联接成一个网络,进行信息共享。从通信角度而言,家庭的通信功能极大扩展。未来上网设备将不再只局限于电脑一种,PDA、电视机、冰箱,微波炉都将能方便地上网。另外,数字化家庭将成为娱乐休闲的天堂,游戏、娱乐功能始终都居于核心位置,家庭成员还可以利用家用电脑控制电视、音响等传统娱乐设备,可以通过视频服务器或者无线个人终端点播电视节目、实现定时播放。另外,数字家庭的其他生活也将会彻底数字化,电脑将统一控制各种家电,一旦发生火灾、煤气泄漏、水管泄漏、盗匪闯入等异常情况,将会自动报警并拨打报警电话等等。

利用有线电视网络,你就可以轻轻松松上网;坐在办公室里或是在回家的路上,你就可以用手机对家中的电器进行遥控指挥,冰箱可以自动告诉你什么东西需要买了,或者自动指挥商务配送中心给你家送来;而当你回到家中的时候,根本不必手忙脚乱地掏钥匙,只需把脸凑近一个特殊的装置,房门就会为你自动打开……

目前能实现的数字家庭应用方向有:网络宽频、新潮电子、视听娱乐、智能家居等。 网络宽带:网络宽带是数字家庭网络一大部分,网络宽带可以承载多样化的互联网服务。除传统页面访问以及网络互动之外,网络购物、网络电话已经不是稀奇事情。而随着带宽条件的改善多媒体技术已经非常积极的介入了宽带网络的应用中。视听娱乐:数字视听娱乐是目前最易普及和大众化的数字家庭应用,视频和音频方面都有大量的产品可以供消费者选择,不足的方面是相应的视频和音频源由于数据量太大,还不能被目前的互联网以流媒体的形式进行支持。所以,对于一般用户,取得相应资源的方式相对困难。新潮电子:各种各样的数字家电产品,高科技含量高的产品。如可上网手机、网络MP3、迷你版PS2游戏机、视像眼镜、智能洗衣机、会吹凉风的鼠标、停电保鲜冰箱、汽车电器等。这些都是在之前的应用基础上经过数字化的改良和对应用本身的发展而形成的一种新应用。智能家居:包含可视门铃、智能闹钟、智能化背景音乐、智能化窗帘等等。它以住宅为平台,兼备建筑、网络通信、信息家电、设备自动化,集系统、结构、服务、管理为一体的高效、舒适、安全、便利、环保的居住环境。

智能家居可以定义为一个过程或者一个系统。利用先进的计算机技术、网络通讯技术、综合布线技 术、将与家居生活有关的各种子系统,有机地结合在一起,通过统筹管理,让家居生活更加舒适、安全、有效。与普通家居相比,智能家居不仅具有传统的居住功 能,提供舒适安全、高品位且宜人的家庭生活空间;还由原来的被动静止结构转变为具有能动智慧的工具,提供全方位的信息交换功能,帮助家庭与外部保持信息交 流畅通,优化人们的生活方式,帮助人们有效安排时间,增强家居生活的安全性,甚至为各种能源费用节约资金。

【行业背景】

1. 个性化与互动性成为互联网新发展方向

据相关统计数字显示,截至 2007年下半年,我国互联网上网人数已超过 2.23 亿,持续增加的网民数量,使我国互联网规模迅速扩大,并推动网络技术、业务推陈出新。在网络技术方面,目前,互联网在我国应用丰富, 网络发展方向是工具、服务平台和娱乐 ,现以 Web2.0 为特征的博客、分类信息等,使互联网向个性化和互动性方向发展。

2. 电子商务发展迅速

互联网加快了向传统行业和服务领域的渗透。垂直门户、个人网站迅速成长;电子商务交易额快速增长;实现电子政务、远程教育医疗、移动信息、在线数字内容等

3. 数字化家庭诞生

21 世纪,人类将迎来一个数字化时代,家庭也将步入数字化行列。数字化家庭将彻底改变人们传统意义上的生活与娱乐方式 。什么是数字化家庭?专家认为,数字化家庭应该是以计算机技术 . 自动控制技术和网络技术为基础,各种家用数字化设备有机结合在一起的智能化的网络家庭。包括四大功能:信息、通信、娱乐和生活, 数字家庭产品将走进人们的生活中,在中国将拥有十分巨大的市场潜力。随着个人电脑和互联网的普及,数码相机、刻录机、 DVD 、数字摄像机、 MP3 等产品的迅速发展,人们的生活正在被数字家庭产品包围着,使中国家庭获得全新的数字生活体验。

4. 电脑是数字家庭娱乐中心

在数字化家庭中可以连接的设备很多,像电话、 PC 、电视、音响、数码相机、摄像机、录像机、空调、冰箱、洗衣机、微波炉、电灯和电子门锁等等。要想实现上述设备的互连互通,这些家用设备都实现数字化是必要的前提,如电灯必须是数字化控制的电灯,音响也必须是数字化的音响,不然它们没有办法融入整个数字化的网络,满足数字化家庭的要求。 家庭数字化产品是数字化家庭的基础,没有各种家庭产品的数字化,就不可能实现数字化家庭。,电脑仍然是数字化家庭的中心电脑是最丰富的资源共享平台,具有最强大的计算资源、存储资源和可扩展性,是整个数字化家庭的大脑。
数字家庭娱乐中心什么样 , 娱乐化是 IT 的下一个方向 , 人们现在希望在家庭电视和立体声设备上欣赏数字内容 . 家长可将卧室或书房变成多媒体娱乐中心,用电脑播放最新的 DVD 电影,用自己喜欢的 MP3 音乐创建个人数字音乐点唱机,甚至设计数字化家庭影集来与朋友和家人共享。

5. 数字化生活方式

继电话、互联网技术的发展促进 ICT 2 次浪潮后,家庭数字化为主要内容的数字生活方式将是第三次浪潮的特征,数字化生活方式也正逐渐成为现实。随着计算机的文字、动画、视频、图像、声音及网络等综合处理能力的提高,计算机将与电话、电视等其它设备有机地结合在一起,并呈现出明显的智能化,集成与交互将是家庭未来电器的重要特征。交互式影视服务 交互式电视,交互式电影、交互式音乐)家庭办公(远程办公 视频会议电子报纸)联机消费,多媒体交互式教育 家庭图书馆 娱乐游戏 聪明电器。数字化生活可能成为未来生活的主要模式,人们离不开计算机,计算机也将更加丰富多彩。

【项目整体构想】

由上述分析,我们提出了构建数字化家庭的初步设想。

1. 构建数字化家庭网络:

设立一个家庭内部的终端主机作为服务器,将家中的智能家电与终端机连接,通过终端机中的智能系统与智能家电进行信息的交互,接收智能家电反馈的信息提供给用户,并传达用户发送的指令给相应的家电,并通过智能的家庭网关将内部局域网与外部电信网络进行连接,并提供相应的无限网络等未来技术的扩展支持。

2. 构建数字通信网络:

鉴于手机等移动通信设备功能的日益强大,3G甚至4G无线网络的飞速发展,将手机或PDA等移动通信设备通过无线网络与家中的智能终端主机连接,对家中的状况进行实时监控,实现对智能家电的远程控制,并接收由智能终端反馈的即时数据。

3. 构建数字化娱乐中心:

已个人电脑为核心,将个人电脑与个人游戏机家庭影音设备完美的连接起来,实现多重设备的完美互动,可以随时随地资源共享,既可以用电脑收看、下载电视节目,也能用电视欣赏电脑中的大片、玩游戏等,在互不干扰的同时,使得用户能够以更加舒适、个性化的方式享受家庭娱乐的乐趣。

4. 构建数字化办公环境:

仍然是以个人电脑为核心,将可视电话,手机,PDA等通讯设备相连接,搭建虚拟会议室,实现跨越时空的面对面交流,制定即时方案。将家中接收的电话或邮件即时通过手机或PDA反馈给用户,保证消息的及时性,极大的提高了工作效率。

【项目概述】

根据上述分析与设想我们不难发现,在未来的数字化家庭中无线网络以及手机将扮演越来越重要的角色,所以我们的开发项目课题便是实现3C产品(计算机Computer,消费电子产品Consumer Electronic,通讯Communication)与智能家居系统的互联管理以及数字媒体信息的共享,并利用手机等移动通讯设备通过3G/4G网络或Http协议实现对智能化家居的远程控制以及智能家居信息给用户的即时反馈。

而从目前数字化家庭生活的发展状况来看,仍处于一个起步阶段,一些智能家居的接口设置以及通讯标准仍没能够得到很好的解决,所以实现对所有家庭中的联网产品进行远程控制与信息反馈仍存在一定的困难。但是,目前基于电视机顶盒技术迅速发展以及以PC为核心的数字化家庭娱乐系统的风靡全球所以我们的初期目标便是实现对以PC为核心的家庭娱乐系统的远程监控与实时信息反馈系统。

【功能概述】

我们所开发的项目主要是要实现两部分功能:其一,利用手机等移动通讯设备利用无线网络与家庭内部的终端PC建立连接,并实现对联网的智能家居实现远程控制功能;其二,智能家居将其自身信息反馈给家庭内部的终端PC,然后由PC机通过无线网络或以短信的方式将其状况即时的反馈给用户。

我们的产品分3个模块:

a.手机端:开发手机端的用户操控平台,可以实施对家中智能化电器的远程控制,并接收相应的信息反馈;

b.PC 开发PC端用户信息处理平台,实现对智能化家居的监控以及对智能化家居的命令发送,并对智能化家居的反馈信息进行采集;

c. Web Service中转服务器:开发一个服务性网站作为用户注册平台,根据不同用户级别提供不同的服务,而网站本身将作为一个中转服务器,也就是将家庭的PC终端与用户的手机等移动设备进行绑定,实现消息的互动

实现产业化途径:

a. 用户客户端产品(包括手机端以及PC端操控平台的应用软件);

b. 产品服务(包括用户数据的安全,用户设备的绑定,用户家庭信息通过手机的即时反馈,以及产品的升级维护等全方位的服务,并根据用户的级别提供相对应的服务)。

c. 与各大智能化家居厂商联合,开发相应的接口技术,并进行相关的合作与宣传,达到互利互惠的目的,最终实现产品的产业化发展。

【技术创新点】

理念System Anywhere — You can access your system freely in anywhere!

1. 跨平台.

被控端部署平台:Windows, Linux, Mac, Solaris, *BSD

主控端部署平台:Sy***, 任何主流操作系统

优点:被控端部署平台对操作系统适应性广,依赖性低,有利于适应各种应用环境;

主控端对平台的依赖更低,权限允许的话,基本上可以在任何地方访问被控端,从而

实现System AnywhereYou can access your system freely in anywhere!)。

2. 基于XML HTTP(s)中转Server 的访问架构

优点:可以适用于任何可联通网络环境,降低部署成本;

只使用了基本HTTP协议,SysAnywhereYou can access your system freely in anywhere!)可以很方便地使用SSH, VPN等手段保证通信的安全。

3. 开放的Server API 接口

对授权的用户开放透明。信息不仅仅是单向传递和最初的简单交互,通过开放各种各样的API,用户可以开发出各自不同用途的插件,满足自己的个性化需求

优点:应用不再局限于SysAnywhereYou can access your system freely in anywhere!)本身的功能,客户可以根据需求定制自己的功能,增加了应用的灵活性。

【技术原理】

基于XHTTPWeb Service中转服务器是SysAnywhereYou can access your system freely in anywhere!)的通信中心。

被控端和控制端都通过Web Service中转服务器的API接口进行数据传输。

主控端主要是PC主控端,Web主控端和移动设备主控端,使用J2ME技术和Flex技术实

现。

控制端由python技术实现。由于python自身动态语言特点,可以方便实现管理节点自适应。

【市场前景分析】

从全球来看,发展数字化家庭一直是近几年来的趋势和热门话题。许多发达国家和各大厂商把发展数字家庭作为一项中远期的重要业务和尖端技术进行开发和研究。

在欧洲,数字家庭网络的核心是MHP(多媒体家庭平台),MHP是指以电视为中心构筑数字网络,使用一台机顶盒实现对来自卫星、无线电和有线信号的交互式操作,完成电子商务、银行转账等服务。

在韩国,数字家庭网络纳入了国家的战略规划,同时也是宽带接入普及后的一个自然应用。随着韩国宽带应用的普及以及数字化程度的提高,韩国政府已经将数字家庭网络视为其技术增长战略的关键部分和主要的经济增长点。

美国的数字家庭网络是在运营商提供融合业务的大背景下推动的。目前的业务已经能够将固定、移动、数据或IP业务应用进行智能整合,使用户持有的各种通信终端(如手机、PDA、固定电话、电脑等)实现个性化的无缝应用融合,形成个人通信设备网,即个人所持有的各种通信设备实现应用业务的互通和共享。

在国内,近几年来,随着宽带接入业务、智能家电等电子产品的普及以及用户对家庭电子产品的监控和资源共享需求的上升,数字家庭的概念和应用受到电信运营业和IT、家电产业的关注。

2003710日,信息设备资源共享协同服务标准(Intelligent Grouping and Resource Sharing,简称闪联)工作组在信息产业部支持下成立。闪联是新一代网络信息设备的交换技术和接口规范,在通信及内容安全机制的保证下,支持各种3Ccomputer, consumer electronics & communication devices)设备智能互联、资源共享和协同服务,实现“3C设备+网络运营+内容/服务”的全新网络架构,为未来的终端设备提供商、网络运营商和网络内容/服务提供商创造出健康清晰的赢利模式,为用户提供高质量的信息服务和娱乐方式。IGRS标已正式获批成为国家推荐性行业标准。闪联的出现,意味着数字家庭在网络接口上有了通用的标准,这为数字家庭的实现创造软环境。

200841日,中国移动面向8个奥运城市正式启动了TD-SCDMATD社会化业务测试和试商用,掀开了中国3G时代的大幕。3G指的是第三代数字通信,它在传输声音和数据的速度上大幅提升,能够处理图像、音乐、视频流等多种媒体形式,提供包括网页浏览、电话会议、电子商务等多种信息服务。国际电联的标准规定,第三代网络的数据传输速率在移动终端以车速移动时,为144kbps,室外静止或步行时速率为384kbps,而室内为2Mbps3G网络的推向应用,提高了移动网络的速度,为我国数字家庭推广提供了有效的硬件基础。

相信在市场需求的刺激,政府和各大厂商的推动,以及相关基础条件的具备,数字家庭在我国市场的实现已经为期不远。

预计今后两年内将有近 1 亿的家庭构建家庭网络,根据美国一家权威市场调查机构预计,到 2006 年,建设网络化家庭所带来的市场总值将高达 4500 亿美元,其中 3700 亿美元是智能信息家电硬件产品的价值,其余是软件和技术支持服务的费用。 2010 年, 50 %以上的新房将具有一定的智能型家居功能。同时,由于技术的标准化,这些新型家居将比比尔 . 盖茨耗资 6000 万美元建造的高科技别墅便宜得多。
智能家庭行业在中国正是市场快速形成期,这些提高人类生活质量的产品将构成世界范围内后 PC 时代的新兴 IT 市场。智能家庭系统提供面向家庭设备的网络平台,将各种与信息相关的通信设备、家用电器和保安装置联结成网络,进行集中的或异域的监控、控制和家庭事务管理,并保持这些家庭设施与住宅环境的和谐与协调。

【风险与问题预计】

目前来看,数字化家庭成为现实的最大障碍在于家庭终端设备的技术、规范和成本问题。

从整个系统来看,PC端所负责的部分可通过计算机软件实现,而远程设备(手机等)上的部分利用先进的网络也容易完成。而家庭终端设备上的传感器如何能准确地反应设备信息,控制芯片如何能很好地与PC端完成交互,以及这些部分附加在设备上所带来的成本增加,同时如何在老旧设备上增加这部分功能和不同品牌、不同类型、不同时期的设备在接口上的统一问题,将为整个数字家庭连成网络造成不小的困难。

当然,这些问题已不是无法解决。只要政府出面主导,制定一系列行业标准,硬件厂商加强研发力度,同时,各大厂商之间,包括硬件与软件厂商间增强相互协作与联系,严格执行行业标准,相信数字化家庭的时代必将来临。



VSTO进行时––开发日志之三(VSTO Development diary III)

接上文 http://www.5ushare.com/vsto/vsto%e8%bf%9b%e8%a1%8c%e6%97%b6%e2%80%93%e2%80%93%e5%bc%80%e5%8f%91%e6%97%a5%e5%bf%97%e4%b9%8b%e4%ba

已经是Office数据安全工程的第三天了,工程也已经完成了三分之一,值得欣慰的是工程最繁琐的阶段过去了。

下边,向各位具体介绍工程的进度,各位如果有什么意见或建议,随时可以联系我。

现在,实现的主要内容是打开文档时,读取当前模式及模式具体信息。当用户登录时(为设密码用户打开文档时),根据模式储存的信息,回推出文档内容,并显示。另外还做了的就是,将选定slides、shapes中的shape隐藏。

没实现的部分,其一是模式的管理,如模式的新建,删除与选取编辑;其二就是用户保存时,模式信息的储存。还有就是系统热键的注册。

在数据的储存方面,我想采用的是一个shape来保存密码,当前模式及各模式的具体信息。其中,储存密码的shape的Name用于标记是否文档已经设置了密码,AlternativeText储存密码。另外,将会有一系列的shape来储存相应模式的信息,它们的信息都储存都shape的AlternativeText中。一下给出两个储存信息的模板如下:

< action = hide ShapeName = aaaaa SlideIndex = 1 >

<action = replace ShapeName = aaaaa SlideIndex = 1 word = aa NewWord = vgv >

今天暂且写到这里,欢迎有兴趣的朋友与我联系。

It’s the third day for the “Office Data Security” project,and the project have been completed 1/3.And i feel very satified because the most difficult stage has passed.

And then,i will introduce the concrete process to all of you.If anyone of you have any problems ,feel free to contact me.

At present,”when open the document then read the current parttern and the concrete information” part has been came true.When users register logged in,according to the pattern storage’s information,returns the documents content,and show it.

In addition,what i have done is make the part choosed dideaway.And now we also have three main problems:the first one is the pattern management,like pattern newly built,deletion and selection and edition;
the second one is the parttern information’s storage when users save the document;the third one is the system hot key’s registration.
In data storage aspect,what i wanna use is preserve the password,current pattern and various patterns concrete information by a shape.The Name in the shape is used to identify whether the document has been tagged.And the AlternativeText file is used to storage the password.
Give two templates of the information storaging to as follows:

< action = hide ShapeName = aaaaa SlideIndex = 1 >

<action = replace ShapeName = aaaaa SlideIndex = 1 word = aa NewWord = vgv >

It’s over today,welcome the friends who is instrsted to get in touch with me.

VSTO Installment

View Chinese version 中文版 http://www.5ushare.com/vsto/vsto-%e4%b9%8b-%e5%ae%89%e8%a3%85%e7%af%87.html

The VSTO request VS and Office ,VS may be the VS2005 or VS2008.And Office also has Office03 or Office07 that is
available.
So long as corresponds installment corresponding VSTO could use.It is noteworthy that between Office03 and 07
has the big difference, therefore two kind of VSTO cannot use in the same period.

You can download the VSTO at at Microsoft’s officials on-line
http://www.microsoft.com/downloads/details.aspx?FamilyID=f5539a90-dc41-4792-8ef8-f4de62ff1e81&displaylang=en
After installment, open VS2005, then you could see VSTO in the initial page.
STO project establishment is also very simple, only need open the new construction window.
Then you can see the Office node in VB or VC#,
then you could establish corresponding PowerPoint or Word and so on project. As for project running,
when you open procedures and so on PowerPoint, transfers your procedure automatically.
 The actual content, will later have detailed elaboration

Begin to VSTO

see in Chinese version  中文版 http://www.5ushare.com/vsto/vsto-%e4%b9%8b-%e5%88%9d%e5%a7%8b%e7%af%87.html

After installed VSTO,then you can use it.Here, i only give a a simple introduction VSTO project establishment and simple development to you.The concrete development and the skills,i will make the introduction later.
The tools i used are VS2005 and Office2007 ,the programming language is C#.
If you have installed the VSTO.Open VS2005, and then click the new project item,you can see the following window.

VSTO in VS2005
Take the PPT as the example.Newly built a“PowerPoint external connection procedure” project.
This will produce a ThisAddIn.cs document.Inside separately by following two function

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
}private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}
Here cites a simple example. Returns every time when opens documents, to this documents
carries on the key words the search.The code is approximately as follows, the detail question will have the introduction in later.

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{

//Monitor the event of Open a Presentation and save
this.Application.PresentationOpen +=
new Microsoft.Office.Interop.PowerPoint.EApplication_PresentationOpenEventHandler(this.PresentationOpen);

}
Then, write this function .

private void PresentationOpen(PowerPoint.Presentation presentation)
{

foreach (PowerPoint.Slide slide in this.Application.ActivePresentation.Slides)
{
foreach (PowerPoint.Shape shape in slide.Shapes)
{
//To see whether the Str_KeyWord exist in the Presentation
string tmp = shape.TextFrame.TextRange.Text;
int i = tmp.IndexOf(Str_KeyWord);
if (-1 != i )
return true;
}
}

}

 

Thus, our simple search completed.