禅道是国内一款不错的 SCRUM 管理软件,目前已经发布到 4.1(开源版本)
由于自身有一些项目管理要求,希望在 byethost (老牌免费PHP空间)上能部署一套。
但是悲催的遭遇也从此开始:
1. 下载了4.1源码版本 上传到了 htdoc 下, byethost自动解压出zentaopms 目录
2. 通过 byethost 的MYSQL admin 功能 上传了 zentao.sql (将源码解压后 在DB目录下)
3. 访问 (自己的域名)/zentaopms/www/
按理这个时候系统会自动跳转到 安装向导....但是悲剧了跳出的向导 居然中文字都不显示了...其实不管什么字都不显示了....只有一个下拉框选择语言。
4. http://lqixv.iteye.com/blog/941322 参考了这篇帖子 问题依旧...郁闷了。
问题猜测:估计是禅道升级后 向导没有升级OR 发生不兼容的情况了。
————————————————
解决办法:
其实谈不上解决,只是曲线挽救了一下。
1. 还是参考http://lqixv.iteye.com/blog/941322 这篇帖子,发现发帖时间是2011年3月,猜想那个时候的版本应该没有问题
2. 重新下载了 2.0 开源版本
3. 重新建表(删除原来的表 重新上传2.0 的ZENTAO.SQL)
4. 重新上传系统文件(删除原来的,上传2.0的ZIP)
5. 访问访问 (自己的域名)/zentaopms/www/
奇迹出现了...一切正常(第三步问题的解决方法 参考 http://lqixv.iteye.com/blog/941322 解决)
由于是自己的一些小项目,只需用到一部分项目管理功能,所以2.0已经能够满足要求。
6. 至此....目标完成。
结论:禅道作为国内的开源SCRUM管理软件已经不错了,有BUG也正常(毕竟资源有限,可以理解),希望软件能越做越完善!
在开发项目时,我们经常用到SVN.但是有时候,只知道把源码放到trunk , 把一些文档放到Document下面。其它的目录都应该放什么东西,应该怎么用。可能都有点模糊。
Branch 目录 : 该SVN 的Branch目录下存放的是:跟工程项目相关的各个工程版本分支。该目录下面的版本分支可能会被修改合并。不是稳定的版本。
Document 目录:该SVN 的Document目录下存放的是:跟工程项目相关的文档资料或者一些必要的开发工具或者是软件也可以放一些通用组件。
Tag 目录:该SVN 的tag目录下存放的是:跟项目相关的各个发布版本。一般在这个目录下的工程版本是稳定可用的,并且保存不动的。
Trunk 目录:该SVN Trunk目录下存放的是:跟工程项目相关的客户端源码和服务器端工程源码。该目录主要是用于平时当前的正常工作。每天要提交的代码目录。
结束!
同步/异步, 它们是消息的通知机制
1. 概念解释
A. 同步
所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。
按照这个定义,其实绝大多数函数都是同步调用(例如sin isdigit等)。
但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。
最常见的例子就是 SendMessage。
该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。
当对方处理完毕以后,该函数才把消息处理函数所返回的值返回给调用者。
B. 异步
异步的概念和同步相对。
当一个异步过程调用发出后,调用者不会立刻得到结果。
实际处理这个调用的部件是在调用发出后,
通过状态、通知来通知调用者,或通过回调函数处理这个调用。
以 Socket为例,
当一个客户端通过调用 Connect函数发出一个连接请求后,调用者线程不用等待结果,可立刻继续向下运行。
当连接真正建立起来以后,socket底层会发送一个消息通知该对象。
C. 三种返回结果途径
执行部件和调用者可以通过三种途径返回结果:
a. 状态、
b. 通知、
c. 回调函数。
可以使用哪一种依赖于执行部件的实现,除非执行部件提供多种选择,否则不受调用者控制。
a. 如果执行部件用状态来通知,
那么调用者就需要每隔一定时间检查一次,效率就很低
有些初学多线程编程的人,总喜欢用一个循环去检查某个变量的值,这其实是一种很严重的错误。
b. 如果是使用通知的方式,
效率则很高,因为执行部件几乎不需要做额外的操作。
c. 至于回调函数,
和通知没太多区别。
2. 举例说明