Subversion 服务器的建立

Friday, March 30, 2007

作为一个非专业的程序设计人员,原来编程序要进行版本控制总是使用winrar压缩,今天尝试了一下Subversion(SVN),感觉的确很好用,以后就用它代替rar了。不知道用来对word文档或者其他的进行控制行不行。使用SVN首先要建立SVN服务器。这方面教程网上很多,写这篇blog的目的是帮助自己记录,免得以后到处找资料,如果对你有一点用就更好了。Subversion有一本很好的图书教程 使用Subversion进行版本控制  免费PDF或者HTML,多语言版本,内容齐全,同时意味着复杂,这也是写这篇blog的原因。

这篇blog的目的是 照着它操作即可以配置出局域网内可以直接使用的Subversion服务器

1. 下载Subversion服务器,地址http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 选择setup.exe结尾的安装版本,如果你喜欢非安装版本也可以,自己配置环境变量的路径就可以了。

2. 安装Subversion 客户端TortoiseSVN,地址http://tortoisesvn.net/downloads,同样选择安装版本,有需要可以同时下载语言包。客户端不是必须的,但是使用它可以在图形化界面下进行操作。TortoiseSVN是比较流行的Windows下的客户端。安装后没有自己的界面,而是直接集成在资源管理器(右键菜单)里面。

3. 建立版本库(Repository),既存放文件的地方。使用TortoiseSVN到欲建立版本库的目录如E:\svn\repository右击,TortoiseSVN——在此创建版本库。选择本地文件系统。另外一种BDB方式没用过。

4. 启动Subversion服务器。这里我们直接使用Subversion服务器,其他参看图书教程。启动服务器有两种方式

    a. 命令行输入 svnserve -d -r E:\svn\repository 启动服务。这个是临时方法,即命令行窗口在使用过程中不能关闭,关闭服务器就停止了。

    b. 把subversion当作windows的服务。命令行输入 sc create svnservice binpath= "\"e:\program files\Subversion\bin\svnserve.exe\" --service -r E:\svn\repository" displayname= "SVNService" depend= Tcpip 。binbinpath指向svnserve.exe所在目录。后面一个指向刚刚建立的版本库。注意语句里面的空格不要随意增减减少,否则会出错。

5. 导入工程。选择工程的根文件夹,右击--TortoiseSVN——导入。版本库URL填写Subversion所在服务器IP及欲建立工程目录如svn://10.14.91.244/PISDKDemoProject,导入信息中输入对项目的描述,如图

1

这一步同样可以在装有TortoiseSVN的客户端上面进行操作。

6  浏览服务器

右键——TortoiseSVN——版本库浏览器,输入服务器地址svn://10.14.91.244,便可看到服务器上面项目

2

7 签出程序,找到欲下载程序的目录。

右键——SVN检出,紧接着输入服务器URL和路径如svn://10.14.91.244/PISDKDemoProject。

这样便可以看见目录图标上面有一个小勾。便表示目录已经和服务器绑定了,从而实习下载或者提交等操作。

......

[阅读全文]

利用PI-SDK读取和写入snapshot或者archive的示例

Thursday, March 29, 2007

一个很简单的程序。实现PI-SDK读取和写入snapshot或者archive。以测试读取和写入int和float的数据,bool和string类型没有测试,估计需要修改,但是原理是一样的。界面如图,从上到下,从左到右操作就可以了。

sdkdemo

 

很简单的版权说明,呵呵

×××××××××××××××××××××××××××××××××××××××××××××

利用PI-SDK读取和写入snapshot或者archive的示例

(c) 皮生 (http://sacranto.blogspot.com) 2007

最后更新 - 3/29/2007 20:55

These code are provided AS IS. You can copy it, use it, and distribute it as long as this statement are not removed.

×××××××××××××××××××××××××××××××××××××××××××××

 

下载地址:这里 或者右边共享文件里面的PISDKDemo.rar

......

[阅读全文]

PI-SDK错误-2147220424的解决方法

最近有不少人通过IM问我关于PI-SDK开发的问题,正好我也好久没有看了,把原来学习的时候写的一个利用PI-SDK读取snapshot和archive的例子拿出来重温了一下。调试运行结果竟然不通过,记得原来这个例子是OK的,看了以下错误出在Server对象的Open方法上,这个方法是用于连接数据库的。仔细看了SDK的文档,连接字符串的写法、用户名和密码均正确,但是就是连不上,每运行到这里就跑出异常-2147220424。异常提示“ServerID returned from server does not match that currently configured on this machine. The server at the path for the opened handle may have changed. ”我理解的大意是服务器的句柄变化,返回的ServerID和机器的当前配置不同。记起前几天把实验用的PI数据库重装过,难道是这个原因不成。但是怎么解决呢?文档和Google均没有找到好的答案。

首先,利用PI-API连接数据库,在权限允许的情况下,读写均没有问题,虽然PI-API和PI-SDK使用两套不同的登录方式,但是这样至少说明我的机器和数据库的连接是没有问题的。

接着,按照Troubleshooting PI client connection problems上的方法使用AboutPI-SDK对话框测试登录,结果仍然可以。但是回到程序就是不行。

最后,另外写了一个程序重新连接数据库,仍然报相同的错误,可能是因为Com组件的信息是保存在注册表,登录时仍然使用了以前保存的信息。既然猜想登录信息保存在注册表,那么直接去注册表中更改一下信息不是就好了,可惜不知道改哪里。

正在这是灵光一现,想着干嘛这么复杂。直接利用AboutPI-SDK对话框新建一个连接,再把原来的那个连接给删掉不是应该就可以删除注册表中的原来连接信息了吗?搞定。这个时候相同的程序,open方法使用相同的语句登录上了数据库。

估计这个是一个SDK的小BUG,如果以前连接过PI数据库、在PI数据库重装以后,必须更新本机的SDK在注册表中信息,更新方法很简单。使用AboutPI-SDK对话框新建一个连接,再把原来的那个连接给删掉。

......

[阅读全文]

聚合聊天工具 Miranda32

自安装Windows2003 SP2后,因为QQ键盘保护导致系统死机所以一直没有使用QQ。也许是QQ意识到了键盘保护引起的这些问题,推出了最新版本的QQ,它能在安装时候让你选择是否使用键盘保护。但是我一直不使用原版的QQ,乱七八糟的东西太多,从最初的木子,到珊瑚虫再到现在的飘云版。但是飘云还没有推出最新版的修改版,只好作罢。

但是实际又不允许我不使用QQ,周围使用它的人太多了。于是找了下有没有能够兼容QQ的聊天工具,网络的那种我不喜欢,聊天还要开个网页、老板来了怎么办?:-) 于是找到Giam最新测试版,稳定版好像不支持QQ,用着不怎么顺手,最后发现了这款聚合聊天工具Miranda32.如果遇到同样问题的人可以尝试一下它。

最好是下测试版的,我使用的是Miranda IM v0.7.0 Test Build #20,集成了很多常用的插件。也许你觉得它不够美观,No..,它可以美化界面,添加插件,总之你需要自己动手。(最近喜欢上了这种类型的软件,Firefox就不说了。foobar2000、irfanView等)。下面几篇文章是我配置的时候参照的

Miranda IM使用简介

Miranda IM 常见使用问题解答

Miranda 新手入门

Miranda IM 常见使用问题解答

或者直接上Google搜索Miranda。下面是我的界面

miranda miranda 1

你肯定很关心这一点,它的内存占用怎么样。我利用它开了两个QQ,MSN和Gtalk,有近15个插件,Windows 2003的任务管理器显示占用内存是30M。至于多不多就要自己判断了。

 

此外如果使用IEView插件,在使用表情的时候会发现那几个表情不会动,这个和Miranda无关,到IE设置--高级--多媒体--选择在网页中播放动画。

PS:blogspot在中国又被封了,如果要封为什么又要解封呢?不解

又一个PS:这里是一个简单的方法让你突破封锁,如果封锁能够简单的突破,封锁又有什么意义呢?又一个不解

......

[阅读全文]

Word 2007调整表格中公式显示格式的宏

Thursday, March 22, 2007

最近要写一个报告,正好体验了一把Word 2007,改变的确很大,界面的报道已经很多了,google、baidu搜索不知道有多少结果。我比较关心其中公式编辑器的改变,不像以前的版本使用MathType的简化版来做为公式编辑器,word 2007使用普通文本来而不是对象来描述公式(以前的版本使用嵌入对象来描述,这个方法现在仍然被支持),所以它能很好的嵌入在普通文本里面。更为重要的是据说为了新的公式编辑器,微软使用了TeX的标准和设计新的数学字体。通过实践,果然word 2007生成的公式比以前的美观了很多。下面两个你能猜出来哪个是新公式编辑器写的吗?

eqo2007

正如上面提到的word2007的公式有两种显示方式,一种是“显示”,一种是“嵌入”。“显示”格式使公式独占一行或者表格中的一个单元格居中显示,样式比较美观。“嵌入”格式则是指把公式以普通文本的格式嵌入到段落中,样式稍微不那么美观。word默认是使用“显示”格式的。这就让我在使用中遇到了一个问题,在表格中有很多公式,每个公式独占一个单元格,按默认他们都是居中“显示”的,就算我设置单元格是左对齐它们也特立独行,所以必须把它们都改成“嵌入”,表格中公式有特别多,一个个改是在是太麻烦了,所以小看了以下VBA写了下面这个宏来完成把表格中的公式都改成“嵌入格式”

   1: Sub 公式格式()
   2:     On Error GoTo Err
   3:     Dim oTable As Table
   4:     Set oTable = Selection.Tables(1)
   5:     Dim oCell As Cell
   6:     For Each oCell In oTable.Range.Cells
   7:         Dim intMathNumber As Integer
   8:         intMathNumber = oCell.Range.OMaths.Count
   9:         If intMathNumber > 0 Then
  10:             For i = 1 To intMathNumber
  11:                 oCell.Range.OMaths(i).ParentOMath.Type = wdOMathInline
  12:             Next
  13:         End If
  14:     Next
  15:     Exit Sub
  16: Err:
  17:     MsgBox ("没有选中表格")
  18: End Sub

这个代码插件使复制成了一个问题,如果你不想手敲,点击这里下载 文本

 

 word 2007虽然有不少进步,但是也有不足之处,

第一是录制宏好像不怎么方便,右键菜单不能用,还有那个PP菜单上的很多东西也不能点,这个好像相比2003有了很大的退步。

第二就是公式的编号问题,word 2007中好像取消了公式编号,所以这个成了一个麻烦事,微软研究院的Dong Yu好像也对这个问题有点奇怪,于是写了一个来完成这个任务,虽然我觉得不是很好用,word 2007怎么会不提供这个功能呢?

......

[阅读全文]

微软网站的Windows 2003 sp2兼容应用程序列表

Sunday, March 18, 2007

这篇Blog中令我写到升级到Windows 2003 sp2后,QQ因为它采用的键盘保护技术导致系统死机的问题。

今天在微软的官方网站上看到了Windows 2003 sp2兼容应用程序列表(英文),文章提到微软的测试人员测试了1500+个应用程序,测试结果包括两类,一类是通过检测的软件及其版本;另外一类当然是有问题的,提供了问题描述和可能的解决方法。

在这两个名单里面,我都没有看到Tencent或者QQ的名字。不过在有问题列表里面看到了许多微软自己的产品如Exchange Server 2003、ISA Server 2004等。比较引起我注意的是Microsoft Management Console (MMC) 3.0好像也可能有问题,这个我一般用的比较多像IIS,组策略等都是通过它打开的吧。

......

[阅读全文]

Live Writer的代码插件测试

Saturday, March 17, 2007

   1: private static SqlDataReader ExecuteReader(SqlConnection connection, SqlTransaction transaction, CommandType commandType, string commandText, SqlParameter[] commandParameters, SqlConnectionOwnership connectionOwnership)
   2: {
   3:     if (connection == null) throw new ArgumentNullException("connection");
   4:  
   5:     bool mustCloseConnection = false;
   6:     // Create a command and prepare it for execution
   7:     SqlCommand cmd = new SqlCommand();
   8:     try
   9:     {
  10:         PrepareCommand(cmd, connection, transaction, commandType, commandText, commandParameters, out mustCloseConnection);
  11:  
  12:         // Create a reader
  13:         SqlDataReader dataReader;
  14:  
  15:         // Call ExecuteReader with the appropriate CommandBehavior
  16:         if (connectionOwnership == SqlConnectionOwnership.External)
  17:         {
  18:             dataReader = cmd.ExecuteReader();
  19:         }
  20:         else
  21:         {
  22:             dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  23:         }
  24:  
  25:         // Detach the SqlParameters from the command object, so they can be used again.
  26:         // HACK: There is a problem here, the output parameter values are fletched 
  27:         // when the reader is closed, so if the parameters are detached from the command
  28:         // then the SqlReader can磘 set its values. 
  29:         // When this happen, the parameters can磘 be used again in other command.
  30:         bool canClear = true;
  31:         foreach (SqlParameter commandParameter in cmd.Parameters)
  32:         {
  33:             if (commandParameter.Direction != ParameterDirection.Input)
  34:                 canClear = false;
  35:         }
  36:  
  37:         if (canClear)
  38:         {
  39:             cmd.Parameters.Clear();
  40:         }
  41:  
  42:         return dataReader;
  43:     }
  44:     catch
  45:     {
  46:         if (mustCloseConnection)
  47:             connection.Close();
  48:         throw;
  49:     }
  50: }

还不错,和WLW结合得挺好的,暂时就先用它吧

作者的blog,但是他给的那个插件下载地在我这里直接是登录不上去的,你呢?

......

[阅读全文]

Windows 2003下安装965主板集成显卡(GMA3000)驱动程序

Friday, March 16, 2007

一台DELL OptiPlex 745的商用台式机因为需要重新安装了Windows 2003系统,安装好以后插入自带的驱动程序盘,发现没有2003的驱动。那么先用xp的驱动试一下吧,主板的还好,到了显卡,出现了下面的对话框

不知道是什么显卡,打开Everest(这个软件还真是好用),一看显示芯片是965主板集成的GMA3000(我的945集成的还是GMA950,到了965一下子就跳到3000了。难道是性能有很大的提升?)。知道了芯片就好办了,DELL、Intel和驱动之家查了一圈下来,竟然都没有它在2003下面的驱动,不是商用台式机吗?怎么也应该提供2003的驱动吧。没办法,只好试试在设备管理器里面能不能更新他的驱动,还好这个手段OK,重启。

重启以后进入系统,……%¥#@!系统竟然变成了640*480*4bit的界面,而且调整分辨率也没有用,无论怎么调都停留在这个分辨率。那还不如不要装呢,不转之前还能跳到1280*1024,只是界面拖动的时候会有尾迹。于是只好在google漫无边际的搜索。

最后在Intel的论坛看到了一个相似的问题,照着一位坛友的方法修改,重启进入系统,终于看到了如愿的界面。

解决方法很简单:修改注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management 下的 LargeSystemCache 为0(数字零)

如果你修改了还不行,尝试一下重新在设备管理中更新以下驱动程序。

"LargeSystemCache"是用来制定系统是否使用大缓存,通常来说,打开该选项会使系统性能得到相当的提升,但也有可能会使某些应用程序性能降低。需要注意的是必须有256M以上的内存,激活LargeSystemCache才能起到正面作用。不知道这个和驱动有什么具体的冲突。

PS:Windows 2003 下面安装Intel High Definition audio声卡之前先到微软下载这个 补丁(中文版)

......

[阅读全文]

升级到Windows 2003 sp2及系统不正常死机的初探

Thursday, March 15, 2007

经历过XP的sp2升级经验以后,确认不会因为升级产生某些不可控的危害以后,我决定把我的2003操作系统升级到sp2 :) ,可是,却发生了...

首先在微软的下载中心下载大约400M的升级包,还有一种是可以刻录成光盘的下载文件,个头也比较大,估计500M左右,我选择了这个比较小的。

升级过程还算比较快,比Visual Studio 2005 sp1的安装快多了,而且不会出现快安装完说什么数字签名不对重来的那种情况。

升级完成以后进入系统,一切还比较顺畅,仿佛跟原来的没有什么区别,正在此时,电脑停止了反应,鼠标不能动,Tab键没有反应,Task manager也掉不出来,只能按Reset键重新启动,当我认为这是一个意外,重新启动机器以后,过了不到5分钟,又出现了同样的状况。我知道,某个地方出问题了

按照先软后硬的次序,Ghost恢复了系统(可怜我得重新安装那么一大坨软件啊),还是崩溃。接着怀疑是温度过高,拿出everest进行压力测试,温度竟然达到了110°。赶快检查cpu,把风扇拆了好好清洗了以下,又找来硅脂重新涂好,开机再测,温度是降下来了,70°左右(P4就是这样的,没用过扣肉)。正以为大功告成之时,系统又停止了响应。

想着就算把电脑拿去修也是一件麻烦的事情,这个死机又是不一定的,到时候怎么给别人说。就在郁闷的时候,我偶然间“终于”得到了答案。用everest进行压力测试的时候,CPU占用率会达到100%。而进行这个测试有的时候会死机,有的时候不会死机。而两者的区别我能察觉到就是QQ的打开与否。难道是QQ的原因。

于是上网google了以下。在这个新闻组看到一个人和我相同的状况。他的解决方法是删除了键盘保护的两个文件。这个两个文件又在哪里呢.这篇文章指出了是哪两个键盘保护文件导致QQ在Vista下面死机,他的解决方法是删除这个两个文件,我没有这么极端,而是把他们的名字改了。这两个文件是QQ安装文件夹下的npkcrypt.sysnpkcusb.sys两个文件。改了以后登录QQ,通知键盘保护失效,强迫让你用软键盘输入前三位密码。

在网上搜索这两个文件,基本上都和腾讯QQ有联系,他们用来在输入QQ密码时进行键盘保护,腾讯是这样吹的:“采用了国际先进的nProtect键盘加密保护技术,能最大限度地防止用户的密码输入不被病毒、键盘记录程序所窃取,大大提高了QQ用户的帐号安全性。”但是好像网上对这个的破解不只一个两个,这里是一个比较概念的,没有给出代码,而这里则直接给出了破解的C程序代码。不过我没有确认,有感兴趣的可以尝试以下。

我不否认腾讯为防止QQ号被盗而做出的努力,但是使用如此复杂而又低层甚至危险的技术(至少再我看来),却不在安装的时候通知用户,而安装了以后又不让用户能够选择是否使用,导致我为了这个问题而浪费了两天的时间。

 

PS:我觉得密码保护通过一些逻辑手段基本上已经起到了比较好的效果了,没有必要这么复杂以致引起系统死机。

中国的软件商总喜欢把用户当成傻瓜。

......

[阅读全文]