Saturday, February 21, 2009

软件使用清单v1.0

用windows的过程真的是一个锻炼人的过程
用过很多软件,导致现在已经十分熟悉这些常用软件
为了留个纪念,于是把自己的软件使用清单晒一下:

文字编辑:vim(熟悉中)
曾经用过:notepad++和notepad2,都不错

杀毒安全:卡巴(我似乎应该换个免费的),360安全卫士
曾经试过:瑞星,江民,金山,macfee。。。。
总的来说,国内软件都不怎么样,不过系统安全还是使用习惯的问题,我已经不中毒很多年了

网页浏览:opera+ie6
曾经用过:mathxon,ff,avant
我要求网页打开速度,因此opera比较适合我
再说现在已经适应了,除了很多网站打开不方便以外(用ie6来),很顺手

聊天工具:tm2008
曾经用过:QQ,MSN,阿里旺旺
曾经很习惯用qq,不过现在觉得tm的简洁是王道

BT下载:utorrent
曾经用过:bitcomet
从缘网的BT下载开始使用这个工具,也见证了bitcomet向流氓软件进发的过程
最后还是觉得utorrent的简单和使用最好

网页下载:迅雷
曾经用过:快车,IDM
呃,这个比较有争议,似乎迅雷是有点流氓了
不过用ayu版的,不用的时候关掉,基本不用他下资源,只是在需要加速的网站的时候拖一下
毕竟有些网站只能用迅雷,郁闷,只有下载功能的迅雷还不错
不过不考虑在p2p中吸血问题,也不给他这机会的。。。。

FTP下载:filezilla
曾经用过:flashfxp
其实,我还是觉得flashfxp用的顺手些
不过鉴于是共享软件,只好用了filezilla,还好吧

视频播放:kmplayer
曾经用过:暴风影音,realplayer,终极解码,mplayer
发现kmplayer够小而且还比较好用,这样就行了,不像终极解码这么大啊
不过现在的终极解码的确功能强大,而且图标也很好看,如果看视频多的话可以推荐
至于暴风影音,曾经的好软件,可惜了。。。

系统优化:ccleaner, windows优化大师
曾经用过:兔子,windows清理
这个方面优化大师还是不错的,不过现在也开始没落了啊
至于ccleaner很小很好的一个工具,不过话说优化定期就行了,不用太执着

pdf阅读:foxit reader 2.3
曾经用过:adobe reader
adobe太大,foxit够小,功能足够,不过新版的也不是太喜欢了

词典:lingos
曾经用过:金山词霸
lingos很不错的,词典比较多,而且开源,不过话说有道和金山词霸现在也还不错的

屏幕截图:epsnap
曾经用过:snagit
epsnap够小,而且快捷键很好用,而snagit功能可能更强大一些,不过也更大了

输入法:sogou
曾经用过:google,2007,智能ABC
这些输入法都不错,不过sogou最好,现在这篇文章就是它的杰作

解压缩:7-zip
曾经用过:win-rar,win-zip
鉴于后两者都是需要注册缴费的,还是推荐7-zip好了,很不错的

音乐播放:foobar2000
曾经用过:千千静听,winnamp
这三款都是经典,不过现在更喜欢foobar素面朝天的简约和小巧

其他的没有什么了,很多东西现在都已经不用,其实软件够用就好
只要满足了自己的需求就差不多了
不知道下次介绍清单的时候,这份表单会有些什么样的变化

9月之前的学习目标

明确一下在9月份研究生开学之前的学习目标
首先要有目标,再有计划,然后明确实现步骤,最后将它实现
主要包括一下几个部分:
1. 数据库:
管理和开发设计,包括基础概念和实际操作开发
2. 编程开发能力:
主要是C++,怎么学好C++这门语言,几本经典的C++书籍需要啃一下
要列出希望学习的书籍名称,买下来,然后列出相应的学习计划
3. 英语:背单词,要求单词量超过1万,今后的阅读问题不大
在听说部分,也要每天安排时间来学习,保证整个英语水平的稳步提高
这个问题一直在强调,希望今后能够真的付诸实践
4. opengl:在9月份之前,学习好这方面的内容
找一本相应的书籍,系统的学习一遍,让自己在这方面过关
这个和图形学的关系还是比较大的,所以要更认真的做
5. openCV:同样是找一本书,系统地学习一下
主要是有一个相应的基础在这里,到时候在捡起来的时候就会容易一些
别人问你的时候,心里也比较有底一些
6. 毕业设计部分:
做位置跟踪的相应算法,做好位置跟踪的经典做法
完成对blumbee 2相机的相关控制程序的移植和改进
这个在最后应该做成可以当做毕业艺术作品的东西

上面是对需要学好的几个部分的大体分析
接下来,主要对每个模块需要学习到程度进行一个比较明确的说明
希望能够帮助之后学习的过程,加油!

数据库部分:
我希望在9月份的时候,我数据库这一块是基本上过关的,能够达到比较高的水平
不管是在理论学习还是实际的任务操作上面,都希望能有一个比较高的水准
因此,需要找到比较好的一个规划,包括对学习的书籍和学习的方式上面都是一样
从我现在学习的情况来看,选择了以下这些书籍,可能会有一定修改
书籍选择如下:
这部分,我的感觉需要7本书,两个数据库后台产品各需要两本书(基础和进阶),然后数据库概念基础需要一本书(绿皮书,够了,很好了),SQL语言需要两本书(基础和进阶)
这些书都需要列出计划来实现,可以说,我在六月前的重点就是数据库

1. 《数据库系统概念-第五版》,英文版
作为数据库概念的基础书和参考资料,我觉得应该足够了,当然还包括网上论坛上面对于一些数据库概念的讨论部分,作为参考和补充
预计学习时间:两个月,然后作为数据概念方面的参考书使用(用index查询)
这本书一定啃透,需要从头到尾,认认真真仔仔细细地学习一遍
如果能做到这一点的话,概念的部分可以算是基本过关
同时,英文版的教材,也能够帮助我更好的学习英语单词和阅读
需要看的章节包括:第1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,23-25(这部分看时间来控制),29章
近期先看的部分:3,4,6,9,29章
现将SQL语句和数据库设计部分认真看一下,完成项目数据库的设计,然后再考虑其他的内容,总的来说,本书包括关系数据库介绍,面向对象数据库介绍,SQL语句,数据库设计,数据存储和查询,事务管理,数据挖掘和实例,按照这几个部分来安排时间把它看完就好了,最好安排的时间和项目数据库遇到的问题同步
时间安排:这周和下周,主要是项目的数据库设计阶段,因此,主要完成设计和简介方面内容的学习,其他的另行安排时间

2. 《Sams Teach Yourself SQL in 10 Minutes, Third Edition》
作为SQL学习的基础书
这个是电子书,英文版,很薄的一本,讲SQL语句的基础知识
预计阅读时间:本周和下周,在下周一定要把它搞定
对SQL语句的基本东西来一个梳理,对SQL语句有一个比较初步的熟悉,能够开始后来的数据库搭建工作,这本书不错的

3. 《SQL cookbook》
这一本是作为SQL学习的进阶书籍
作为一本讲述SQL的书,这本书主要的特点在于跨平台,对于一种SQL语句用法,会同时给出在多个平台上面的用法
同时,使用《SQL TUNING》和《The art of SQL》来作为参考文本,这三本书可能都需要读一下,然后再来进行选择
这都是之后的事情了

4. 《SQL server 2005 UNLEADED》
使用这本书作为SQL server的入门教材
同时,和这本《Apress.Beginning.SQL.Server.2005.for.Developers.From.Novice.to.Professional》一起帮助熟悉和理解sql server 2005的操作
很仔细的看过评论和目录,觉得这本书比较浅显易懂,比较适合初学

5. 《Inside SQL server 2005系列》
这部分作为深入学习的书籍
作为微软自己出的技术内幕书籍,十分值得一看,总共有两本的电子书
重点在:t-sql query这本书上面,还有几本书
有一本《expert sql server 2005 develop》似乎比较专业,留待之后有机会再深入看一下,其他的书,如果是设计到DBA方面的可以在考虑看一下
其中,从图书馆借的那本《专家精讲:sql server 2005数据库管理》中关于数据库管理的部分文字和视频可以再认真看一下

6. 《Sams.MySQL.Crash.Course》
类似sams系列的一本书,比较简单,偏重基础
可以作为my sql 的入门教程来看,同时还可以参考mysql.com上面的user maual来看一下,不过推荐这本书为主,user maual作为一个参考即可,这主要从易读性来考虑

7. 《Addison.Wesley.MySQL.4th.Edition》
这个按照网上的说法,比较难一点,因此作为my sql 的进阶教程
可以在积累了一定的my sql 开发经验之后,开始这部分的学习
难度比较大,要更认真地看才好
还有一本《my sql cookbook》作为参考

编程开发方面:
主要就是C++编程的熟悉和入门
没错就是入门,由于花在数据库上面的时间可能比较多,因此,这方面只选择两本书即可
作为入门书籍,在认真的看过很多人对C++书籍的推荐之后,我选择以下两本书作为参考:
1. 《You Can Do It!: A Beginner's Introduction to Computer Programming》
这本是纯粹的C++入门书籍,首先拜读一下电子版

2. 《The c programming language》
tcpl作为一个参考,在实践允许的条件下,也要认真的去读

3. 《Accelerated C++》
从新的角度看c++,这本书也很不错,在看过了上一本之后,在认真看这本书

4.《The C++ Programming Language (Special 3rd Edition)》
C++的学习最后以这本书作为一个高阶的书籍来看


同时提供两本书,《程序设计实践》和《The Design and Evolution of C++》作为学习之外,提高编程素养的帮助

英语方面:
看来要开始搜集听力资料了啊,要不买个小石头作为mp3听一下听力,就是不知道最后真的有多少的时间来听
还有就是要背单词了,其实什么单词书都一样,不要再找借口,主要还是看自己有没有心去背啊
听、说、读、写都要提高
听的话:现在开始搜集听力资料,然后,在路上开始听东西,或者每天直接留出半个小时来听英语和英文歌
这两个选择不知道那个更加好一点,不过自我感觉主要还是保证时间去做这个事情
好吧,我觉得重点还是要真的去做,至于方式不是太重要
说的话:比较成问题,只好每天自娱自乐了啊
读的话:不用担心,这么多英文原版书在等着呢
写的话:每周一篇的文章吧,写日志好了,作为自己的锻炼

opengl和opencv部分:
待定,这个肯定要等到暑假(7至8月)的时候,才有时间真的开始学习
前面几个月真的认真做好前面的东西,就已经很好了啊,所以要加油啊
书籍选择的话,以这两本书作为主要的参考书:
《Oreilly Learning Opencv》
《Addison.Wesley.OpenGL.SuperBible.4th.Edition》

关于毕业设计的位置跟踪算法的问题:
需要在平时留出相关的时间来做这一方面的事情
同时还有毕业设计的开题报告和最终论文的撰写
这里面都需要我去多读一些论文,多花一些时间,多做一些事情
要保证最后的毕业作品能够按时的完成,同时保证论文的一定质量
可能需要重写很多软件的框架,这个过程应该和opencv以及c++学习过程一起进行
在实践当中体验学到的知识

这阶段的时间安排:
首先以数据库为主,保证C++的学习时间,同时每天坚持对英语的学习
每一天的时间都要规划好,将每天的计划,按照重要的分别来区分,尽量把每天都安排的很好
关于娱乐时间,在实验室的时间就要全部放在学习上面,不管是学习这些还是学习软件使用,比如尝试新的软件等等
这些都很重要,如果没有很好的时间规划的话,似乎就无法真的将时间利用好,似乎每天就会浑浑噩噩地过去
因此,这一点十分重要
将学习和生活的时间完全分开,不同的时间做不同的事情,这个是一定要规划好的
在实验室的时候,一定不要做与学习无关的事情

将可以在实验室干的几个事情列出来:
查看邮件,每天两次,中午和晚上各一次,中午的这次定在吃晚饭回到实验室的时候,晚上的这次定在晚上要走之前的10分钟
写博客,主要是记录现在的心情和学习当中的收获,时间不定,看每一天的工作和学习计划而定
如果时间允许的话,可以长一些,这个主要和当天的时间安排息息相关,当然还和所写博客是否重要有关

总的来说,是一个调整学习进度和时间安排,以及评估任务重要性的一个过程
再次强调一点,在实验室的时候就要几种精力去学习和工作,不要考虑其他的东西,不要去上网浏览这些内容
这些事情应当留到晚上在寝室的时候,疯狂的玩,保证玩的质量,学习的时候,就要保证学习的质量
把每天的整个时间规划都要定好,这个是至关重要的,加油啊,每天的时间安排,任务取舍很重要

加油吧,每两个小时作为一个时间的跨度来安排时间是比较好
同时还考虑软件使用的时间,包括vim的使用,还有其他比较好软件的使用,这些都是好的,好吧,每天中午google reader 要有15分钟的时间,主要是资讯的浏览,如果有一些其他的重要信息可以记下来,然后安排时间去看

这个都很重要,每天的时间一定要安排好,如果遇到什么突发事件,需要修改计划的话,要提前想好是否值得,这个很重要

Thursday, February 19, 2009

数据库设计-读书笔记(三)

文章名称:《数据库设计指南》

读书笔记-第一和第二部分

第一部分 设计数据库之前
主要需要考虑这个几点:
1. 明确客户的需求,不能想当然,要不断地询问交流,保证自己理解正确;
2. 要观察数据库使用环境,避免一些因为环境导致的问题;
3. 明确数据库命名规则,比如不同对象的名称可以加不同的前缀;
4. 要事先考虑到可能发生的问题,留出余地;
5. 吸取之前存在问题的经验;
6. 了解客户使用数据的方式,报表或者其他数据接口;
7. 建立好ER图和数据字典,将设计到的每个实体、关系和字段都设计好;

第二部分 设计数据库表和字段
需要考虑以下几点:
1. 在对表和字段等对象命名的时候,尽量使用有意义的实体名字,使用英语而不要用编码
2. 对不同的对象命名,可以使用不同的前缀;
3. 对数据给定数据类型时,要留出充足的余量;
4. 要保证同一对象在不同表当中的名字和数据类型相同;
5. 要对表进行标准化,参考第三范式,但是标准化不要过头了;
6. 考虑实现数据驱动,而不是硬编码,这一点还不是太明白怎么做;

数据库设计-读书笔记(二)

书籍:Beginning.SQL.Server.2005.for.Developers.From.Novice.to.Professional
章节:
chapter 3 database design and creation

关于数据库设计方面的读书笔记

要根据数据库的类型和用途,来建立数据库:
如果一个数据库,需要很频繁的数据更新的话,应该使用OLTP系统,即在线事务处理系统,里面的表单设计应该遵循第三范式等标准化准则,然后表要分得很细,很少的数据冗余,以保证在数据更新时,有尽量少的列需要更新,建立好用的索引和视图,保证速度,同时要注意及时的备份;
如果数据库,更新不频繁,然后主要是应用其中数据进行分析的话,应该选用OLAP系统,即在线分析处理系统,其中表的设计也不一定要十分遵循标准化的原则,设计得这么短小和合理,需要根据使用的方便程度来设计相应的表,可能出现数据冗余,可看成数据仓库。

数据库设计过程:
首先,收集资料,认真收集用户的需求说明,用几个意见point来表示
然后,对需求说明分类,从中提取出特定的几个实体对象,然后分析收集到的意见当中,对这个实体的说明,从而明确实体的属性
接着,根据提取出来的实体,对它需要拥有的属性进行进一步精确分析,主要从需求的角度,而不要太多考虑后期实现的问题,单纯就是将其属性表达清楚,注意对每一个表,给定一个特定的ID来唯一确定其身份
紧接着,确定每个实体之间的关系,注意各个种类关系的问题
最后是,规范化每个实体表,使用第三范式,消除数据冗余,同时要注意规范化的程度问题,不能够过头,如何在该停止的时候停止需要认真思考
关于规范化达到正常状态的一个标准:
When any reference tables return one row of data without further table reference to retrieve that information, that's a signal to stop normalization.

数据库设计-读书笔记(一)

数据库设计-读书笔记(一)

《数据库设计系列》
地址:http://www.uml.org.cn/sjjm/200811065.asp
数据库设计的主要步骤如下:

1. 事实发现
通过一定方式,收集关于数据库系统需求和相关信息的处理过程,这个阶段一般是在数据库系统开发的早期阶段,需要收集足够的信息,供之后的数据库规划和设计来进行
要了解的东西:术语,机会,问题,约束,需求以及业务和系统用户的优先级
主要方式:检查文档(用于深刻理解整个系统和需求),面谈(可以有针对性地提出问题,得到反馈,这个在我们系统当中要用到,但是要注意在面谈前,做好充足准备,准备好问题),观察业务的运转,研究(可以参考网上资料),问卷调查

2. 数据库规划
明确数据库工程的任务陈述,进而得到数据库的任务目标
任务陈述主要是定义数据库的主要目标,将整个数据库需要实现的任务用简要的文字描述出来
任务目标对应着任务陈述当中的特定任务,首先定义好任务,然后将每个任务进一步细化和具体化,形成一个完整的任务描述,可以通过交流和问题明确

我们的数据库的任务陈述:
本数据库系统的目的是收集、整理和存储动作捕捉阶段之后修复生成的BVH数据文件以及对应的轮廓图片,提供数据接口,用于根据特定的特征算法进行数据训练,存储数据训练后对应下来的figure vector,为动作匹配过程提供快速的数据检索接口,考虑提供试验数据存储和管理的通道

具体的任务描述如下:
维护(录入、更新、删除)原始BVH文件数据
维护(录入、更新、删除)BVH-MOTION数据,这部分数据包括正常的多视点pose数据(只需要有特征值数据即可),还有聚类之后的close posture列表数据
实现对close posture列表的查找,考虑建立索引
数据训练的接口,可以是对bvh文件中相关帧的查找,也可以是对每个pose的轮廓图进行查询,不过一般是遍历性质的
动作匹配时,对每个pose的特征值(包括HU矩和figure vector)遍历式查询,并可以根据T特定特征值找到特定motion,由特定motion找到特定bvh,考虑整个pose也建立索引

下面来讨论一下对数据库调用的整个过程:
训练数据:(两种情况)
1. 直接返回bvh,对所有bvh文件进行遍历查找,得到相关属性,重点是得到存储地址
2. 返回各个pose的轮廓图存储地址,然后直接对轮廓图训练得到特征值,直接存到相应的pose对应位置上去
动作匹配:
重点在于,实时捕获图像的特征值和数据库中的特征值之间的匹配
过程如下:查找close posture队列当中各个posture的相应数据,找对最合适的若干数据,在由这个posture找到对应的若干motion,在对每个motion的multiview-pose数据进行一下遍历,需要对这些数据进行匹配,找到合适的motion数据,由这个motion又得到对应bvh

3. 需求收集和分析
在前一阶段的基础上,进一步明确和收集细节,形成用户的需求说明
主要可以包括以下几个方面和方法:
(1)收集数据库系统的更多情况
(2)收集数据库的系统需求信息
(3)设计出系统的用户视图
(4)列出数据的需求以及事务需求,这个需要比上面一个阶段更加仔细
(5)明确数据库系统的系统说明,包括初始数据库大小,数据库增长大小

4. 实体建模
实体主要是一组具有相同属性的对象,我们在实体当中主要需要列出各项属性
实体之间的关系,需要列出相应的关系,其中关系的度用来表示整个关系当中有几个实体最终参与,同时要求标示出相应的主键和外键
将一个数据库当中的实体认真的设计出来的话,可以很好地作为数据表设计的参考

我们数据库的实体列表:
BVH文件:
BVH_ID,store_path,start_frame,end_frame,shoot_frame,QF_labe,Describe
详细见林驰的概念设计文档

5. 关系建模
将各个实体之间的关系很好的建立起来
更多的一对一关系,多对多关系以及二元关系,这些都很重要
同时要注意关系建立时候的细节,避免设计方面的错误出现

6. 规范化
规范化可以作为一种由下至上的数据库设计方式来使用,但是效果不一定很好
而E-R图主要看成一种由上至下的设计方式来实现
我们做法主要是,首先使用E-R图来进行设计,然后细化成相应的表,在根据规范化的原则来审核设计是否合格
主要有这么几个概念:
包括更新异常,主要由于设计的不合理导致
然后就是对几个范例的定义,可以作为规范化的参考:

第一范式:记录的每个列包含一个而且只包含一个值的表,或者说数据项是不可拆分的表,如果一个记录的某一个列有多个值,那么就不是1NF,比如一个电话号码列包含了110,120,119多个电话号码。

第二范式:一个第一范式的表并且任何一个非主属性都完全依赖于主键的表。部分依赖是指一个非主属性可以从主键的部分属性或者部分属性的组合中得到。完全功能依赖是指如任何一个非主属性都必须由主键的全部属性组合中得到。

第三范式:一个已经是第一和第二范式的表,并且所有的非主键列的值只能从主键中得到,而不能从其他的途径得到。也就是说消除了传递依赖。任何一个非主键属性都不传递依赖于主键。

这么来总结一下,第一范式就是表中每个列只有一个值,第二范式就是每个列都应当可以算作依赖主键,包括直接依赖或者是通过传递的简介依赖,第三范式,就是最独立的一种,保证整个表里面的每一列都是只和主键相关,就是主键可以说决定了每一个元素,而且是直接的依赖,没有所谓的传递

7. 数据库设计过程概览
数据库的设计过程包括:逻辑数据库设计和物理数据库设计
其中逻辑设计主要步骤包括:
1.创建ER模型,保证最小冗余,支持用户事务,将数据的需求分析清楚
2.将ER模型改成表的集合,再进行规范化检查,保证表项设计合理
物理数据库设计主要步骤包括:
1.完成基本表和完整性约束的设计
2.为基本表选择文件组织方式,同时根据需要的功能建立索引
3.其他。。。。

Wednesday, February 18, 2009

数据库设计经验总结-1

昨天和今天设计了一个项目的数据库,结果效果很不好
现将在设计当中遇到的经验和教训总结如下:
1. 没有明确用户的需求,就想当然地开始设计。
注意一定要真正理解数据库的开发要求,明白用户的实际需求,要认真地对每个细节都进行分析,一定要保证自己真正的完全理解了细节。不要想当然,用户写在文档中的需求不一定能完整展现实际需求,需要不断地沟通才行,更何况你连文档上的需求都没有理解清楚,只有在需求完全理解的条件下,才能开始考虑后续的工作,否则一定返工。

2. ER图需要画得更加认真仔细,实体不一定分得越详细越好
对ER图,一定要想清楚每个实体的细节,以及它们之间的关系,可以用最小的原则对实体进行分解,标准化到最小程度,但是如果发现这时实体过小,而且实体过多,必须为了分解添加很多全局变量,最终结果可能得不偿失的时候,可能需要将实体合并。
同时基于第三范式来标准化表的时候,并不是越标准越好

3. 均衡数据冗余和效率的关系
我今天就过于执着于表的主键唯一这一属性,追求数据的非冗余过分,而没有考虑到查找效率的问题,其实如果表分的过细,会导致表间操作过多,很大程度上影响搜索的效率。以后不能死抠ER图和标准化准则,要学会从效率的角度考虑,从实际应用的角度考虑。

4. 建立索引的技巧
感觉在表很细的时候,建立索引的维护成本比较高,如果数据库的表项较少的话,可以考虑从应用出发,参照索引的方式设计一些可能有一定数据冗余,但是效率很高的表

Saturday, February 14, 2009

IT进化论的第一篇文章

终于把博客给基本弄了起来
在blogger上面建了两个blog
把生活和IT学习分了开来,便于文章的清类吧
其实老早就像把blog这东西弄起来了
可是一直很懒,也没找到合适的地方,于是拖到现在
再说之前自己的技术实在有些惨不忍睹
其实现在也一样
终于有这么个自留地
给自己这个菜鸟把学习所有有关编程开发的点点滴滴记录下来
也算是人生里面的一个很好的记录了
从今天开始菜鸟的IT进化历程了
但愿3年多后会有一个很好的结果