Tuesday, February 27, 2007
如何区分当前设备是 Protect PC 还是 Protect PC Phone - royer的专栏 - CSDNBlog
自己的
csdn blog升级之后, 我比较喜欢的几个新功能 - 大宝(sodme)的专栏 - CSDNBlog
试验 trackback 的使用,Blogger 用起来很方便啊,装了google工具条,选上trackback这行,然后右键,选发送到blog,就ok了,但是我的csdn blog怎么弄呢?
Monday, February 26, 2007
Subversion 十分钟上手
一. 什么是Subversion?
Subversion是一个被设计成为CVS继任者的新版本控制系统。
二. 软件下载
首先到http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91下载安装包,这是windows系统下的,其他系统的请到 http://subversion.tigris.org/project_packages.html 去找对应的来下载。
三. 搭建服务器
如果你并不关心服务器端,那你可以直接看第四.章四.使用客户端。
STEP 1:创建版本库(repository)
命令行运行:
svnadmin create d:\svndatabase
D:\svndatabase 就是我指定的版本库的位置了
STEP2:建立用户
打开d:\svndatabase\conf 目录,这个conf目录是第一步建立版本库时创建的。打开svnserve.conf 找到以下两句:
#[general]
#[password-db = passwd]
去掉每行开头的注释符#,其中第二行是指定身份验证的文件名,即passwd文件。打开passwd文件,找到
#[users]
# harry = harryssecret
# sally = sallyssecret
去掉#[users]前的#,下面就是用户了,一行一个,格式是 用户名 = 密码。
STEP3:启动SVN服务
命令行执行
svnserve --daemon --root d:\svndatabase
开着个command窗口总是让人不爽,没关系,你可以用 svnservice.exe 这个程序把svnserve作成服务。
STEP4:把svn作为服务运行(Windows NT)
写到这里发现svnservice.exe 官方网站居然没有了,原来 subversion 从1.4开始本身就集成了Windows服务的工具。详细介绍请参看http://www.subversion.org.cn/index.php?option=com_content&task=view&id=83&Itemid=9 和 http://svn.collab.net/repos/svn/tags/1.4.0/notes/windows-service.txt
四. 使用客户端
客户端有纯命令行客户端,也有GUI客户端。
作为初学者,我认为首先应该使用命令行方式,这样有助于理解,在命令行方式比较熟悉之后再转用GUI客户端。
STEP1:建立项目
首先在一个临时目录下规划好项目的主目录结构:
\temp\project
\temp\project\branches\
\temp\project\tags\
\temp\project\trunk\
\temp\project\trunk\main.cpp
\temp\project\trunk\toolbar.cpp
…………
makefile
现在可以将目录结构和数据导入版本库了
svn import project svn://svnserveraddress/project –m “init import”
如果服务器就是你的本地机器你也可以这样写
svn import project file:///d:/svndatabase/project -m”init import”
执行上面的命令,你当然都要在temp 下。第一次使用 svn 命令时,由于你没有指定username,所以会提示你输入用户名和密码,当然你也可以通过 –username 和 –password 参数来提供。Subversion 会在本机缓存你的用户名和密码,下次使用时就无需再提供用户名和密码了,如果你觉的这样不安全,可以通过 –no-auth-cache参数指定不要缓存用户名和密码。注意上面提到的几个参数都是两个横杠哦。
当屏幕出现
Committed revision 1
说明版本库已经包含你的目录和数据了。现在可以删除这个temp目录了。现在进入下一步了。
STEP2:获取工作拷贝
选择你的工作目录,比如 d:\myproject,命令行执行:
svn checkout svn://svnserveraddress/project/trunck AppName
这样在d:\myproject 目录下就有了一个AppName的目录,他对应的就是版本库里project\trunk目录。现在你就可以在这个目录下开始修改文件了。修改完成以后就可以进入下一步。
STEP3:提交修改
在d:\project\appname 目录下执行
svn commit
当另外的用户对这个项目作了修改并提交后,你就使用下面的命令使你的工作拷贝和版本库同步。
svn update
当你增加了新的文件和目录时可以使用 svn add 命令。
警告
你可以使用任何你喜欢的工具编辑文件,但你不可以在修改目录结构时不通知subversion,需要使用 svn copy 、svn delete、svn move命令修改工作拷贝的结构,使用 svn add 增加版本控制的新文件或目录。
至于GUI客户端,我目前使用TortoiseSVN。
五. 分支、标签和合并
为什么要在这里讲分支、标签和合并?很多人包括一些使用版本控制系统有一段时间的人,几乎从来没有用过分支和标签功能,他们实际上只是把版本控制系统当成一个代码备份系统再使用。
以下两种情况都需要使用分支
u 大多数软件存在这样一个生命周期:编码、测试、发布然后重复。这样有两个问题,第一,开发者需要在质量保证小组测试假定稳定版本时继续开发新特性,新工作在软件测试时不可以中断;第二,小组必须一直支持老的发布版本和软件,如果一个bug在最新的代码中发现,它一定也存在已发布的版本中,客户希望立刻得到错误修正而不必等到新版本发布。
u 你可能要对项目做一些复杂的修改,整个修改可能会持续一周或更长的时间,这时团队中其他人还要继续工作,不能应为你的修改导致团队其他人只能停止工作。
上面两种情况版本控制都可以帮助你。具体的介绍请看svn-book. .
六. 网上资源
官方网站
Subversion官方网站
Subversion中文站
客户端
TortoiseSVN
注:本文部分内容摘抄于 http://www.duduwolf.com/post/setting_up_subversion.asp
cabwiz 不能处理中文 - royer的专栏 - CSDNBlog
自己的文章,试试Trackback 是怎么回事
中文版安装包的制作问题
问题来了!
我的Roulette Analyzer 做cab安装包时,悲惨的发现cabwiz 居然不能做中文的。 猛google了一下,发现到处都在说这个问题,但没有一个是能真正解决的,看来还只能继续搜索。
为了解决这个问题,我甚至手工修改了cab 包里的 _setup.xml,把<characteristic type="Roulette Analyzer.lnk" translation="install"> 改成了<characteristic type="轮盘分析家.lnk" translation="install">,为了安全起见,在文件头上还加上了<?xml version="1.0" encoding="GB2312" ?>。结果安装的结果是程序组里显示的是一个□。 我不死心,跑到windows目录下,手工把这个lnk,改成了中文,但是在卸载时这个lnk没有删除。
Friday, February 23, 2007
轮盘赌分析器1.0版算是差不多了
Tuesday, February 6, 2007
明天开始写轮盘赌了
Monday, February 5, 2007
CeSetUserNotificationEx 工作不正常
真郁闷啊!N天过去了,这个问题居然还是没有解决。看来只能先放一放了。我的要求很简单啊,只是在指定的时间发出声音或振动来提醒。
总结一下,这个小程序,其实有两几个问题都悬而未决。
1. CeGetUserNotificationPreferences 不显示对话框不能实现。
下面是MSDN 中 CE_USER_NOTIFICATION 中的 pwszDialogTitle 的说明:
pwszDialogTitle
Pointer to the string that contains the title of the user notification dialog box. If this member is NULL, no dialog is displayed. The CeGetUserNotificationPreferences function ignores this member.
可事与愿违,Dialog 总是显示。仔细看了整个 CE_USER_NOTIFICATION 的说明,在 Windows Mobile Remarks 一节中有如下这段:
Setting the ActionFlags value PUN_DIALOG on a Windows Mobile-based Pocket PC will cause sounds to be played based on the user settings in the Sounds and Notifications Control Panel Application (CPL). In addition, sounds that result from other ActionFlags flags being set are also played. This will result in multiple sounds on the Windows Mobile-based Pocket PC. To avoid multiple sounds, you should not set any other ActionFlags flags on a Windows Mobile-based Pocket PC except PUN_DIALOG.
唉!辜妄听之吧。
2. CeSetNotificationEx 不能在指定的时间产生通知。
这是最让人抓狂的事了,当然实现这个功能还有很多方法,比如 SHNotficationAdd 应该也能实现(说"应该"是我还没试过). 曾经一度堕落到调 CeRunAppAtTime 来试验,结过还是不能在指定的时间run app.网上查了一些东西,帮助不大,不过记下来,日后看看,今天的我还是流了很多血汗的。
Windows Mobile Pocket PC Smartphone Programming: Pocket PC Power Management Series 6: Request the Device to Run: a Gentle Way
http://www.tech-archive.net/Archive/PocketPC/microsoft.public.pocketpc.developer/2004-04/0621.html
CeRunAppAtTime does not work CeRunAppAtTime 在很多机型上就是不能正常工作?小比同志工作没做好?
Friday, February 2, 2007
CeSetUserNotifcationEx 的使用
我不想RunApp ,我只是需要能够发声提醒或振动
文章中还是有错误的:
hNotify = CeSetUserNotificationEx(0, ¬ifTrigger, NULL);
这个Handle 文中在该函数调用成功后,就直接调用 CloseHandle 来关闭,至少 Mobile 5.0 中是直接导致程序崩溃的。这点在该文的评论中也有人提及了