Mar 12

I264项目开发流水帐

于是认证考试终于告一段落了,前段时间接下来的项目也终于可以上马了。。。第一次做这么大的项目,正好可以实践之前学到的知识。。。

在这里记录下这次开发的进程,留待以后总结经验。。。

项目一句话简介:P2P视频播放器及服务器端

3.11-3.12:客户端组件关系图

这次把播放器的各个部分都组件化,期望能达到各个组件可以随意替换的效果。。。顺便练习了一下UML。。。

3.12:接口设计

3.13-3.15:播放器核心(其实就是MPlayer的包装。。。

3.16-3.18:网络传输库测试

网络传输部分计划使用修改过的BT协议,使用UDP传输。于是搞了几个udp可靠传输的框架下来测试。。。最终选定了UDT。测试的时候还发现默认的阻塞处理有问题,带宽浪费十分严重,有一次还把路由搞挂了。。。捣鼓了半天换上了TCP的阻塞控制算法,顺便还把keep-alive包的发送间隔改了。。。

3.18-3.19:数据转接层

3.20-3.24:MonoTorrent的UDT支持

弄这东西的时候发现UDT的Wrapper有一大堆bug。。。另外连那个TCP算法类也有bug。。。调试死了很多脑细胞。。。orz

3.25-3.27:网络传输组件

基本就是把bt组件封装一下,实现预先设计好的接口。看起来很简单,但是弄的时候才发现很麻烦。。。首先是发现mplayer的连接超时值是硬编码在代码里面的(BS啊。。。),在缓冲的时候就直接断掉了,逼着我改源代码。。。然后就是获取MonoTorrent下载好数据的代码弄了很久,最后发现直接FileStream打开就可以了。。。开始的时候想得太复杂了。。。

3.27-3.31:部分bug修复及改进

4.1-4.5:内网穿透

4.5-4.7:测试版准备

4.8-4.9:Mono兼容性修复。。。

之前以为mono就算不比.net原生慢,最多也是差不多速度。但测试下来发现窗体的响应速度mono居然要比原生.net还要快。。。算个意外收获吧,可是兼容性依然是个问题。。。最麻烦的一个问题是程序退出的时候90%会崩溃,10%进程无法退出。。。跟踪来跟踪去只发现貌似和线程池有关。。。为了不影响进度,只好暂时在窗体关闭的时候强制退出进程了。迟点再看看有没有办法修复。。。

4.9:内测版发布

4.10:修复mono引导器的bug。。。

4.12:修复退出时崩溃的bug

之前死活找不出哪里有问题,只好编译个mono来调试了。。。

Update: 搞了半天崩溃原来是mono跟踪的bug。。。进程残留是没有清理完成。。。orz

4.13-4.14:bug修复

4.15-4.20:播放器界面组件化及进程分离

进程的远程调用使用了Remoting,然后远程调用的类里有事件,于是事情就混乱了。。。搞了很多天。。。最终使用了双层包装来解决。。。迟一点等有空写一下实现细节吧。。。orz

4.21-4.25:播放器辅助功能

4.25:alpha 2发布

5.1:红眼病终于好点了。。。于是继续弄。。。

前两天修复了mono没法在中文路径下启动的bug,顺便提交到了官方。其实这个bug修复很简单,很奇怪为什么这么久都没人修复。。。

5.5:Alpha3发布

Mar 11

MCPD: Windows Developer 3.5达成。。。

恩。。。昨天把3科一天考完了。。。本来是预约了两天的,不过考场允许一次考掉,就不跑两趟了。。。虽然563有好几题不是很确定,不过还是全部拿到了900+。。。505和563的题目和2.0版的完全不同,多了很多关于3.5新特性还有SQL Server 2008的题目。。。想找题库的朋友就要再等一段时间了。。。

顺便BS下那考场。。。那电脑屏幕能闪得人泪流满面。。。orz