QT当中有关数据库,比如ODBC的功能都是以插件的形式来实现的
比如QT安装包里面都有很多plugin文件夹,里面就包括了很多相关的dirver
像要使用ODBC,都是需要调用QSqlODBCDriver.dll和对应的lib文件的
因此,如果写程序的时候使用动态编译,就需要在每次跑exe的时候,都到QT的安装目录下面去找对应的driver或者dll文件或者lib文件
这会导致程序在发布移植的时候出现很多问题,比如标题乱码之类的问题,同时还需要把所有相关的dll文件都随exe文件一起发布,十分不方便
因此,在实际的使用当中,一般都是需要使用提前在本机上编译好的静态链接库来代替原来的文件
这样编程的时候,就可以解决相关的问题了
不过还有一个问题,就是由于QT都是用plugin来实现很多附加的功能,而这些功能虽然安装了上去,但是默认是不开,我们需要在静态编译的使用命令行来确保这个plugin被添加了上去,同时还需要保证我们需要使用的那些功能plugin的driver都已经添加进去了
如果,当时没有将这些东西添进去,就必须重新静态编译一次,比较麻烦
这个需要我们注意
而像我们这次遇到的“driver not loaded”问题,就是这个问题的典型表现
通过将qsqldriver文件夹当中的文件移到exe所在文件夹中,是可以保证QT的程序在编译器中运行成功,但是,exe文件照样会出相同的“driver not loaded”错误
要保证不出现类似的错误,就要保证原有的程序在静态编译的QT程序包中通过编译,同时这个静态编译还要包括了ODBC,这个比较麻烦,可能只有等到最后才能解决这个问题了
不过总算还能用,很让人郁闷的ODBC和QT
注意一下,下面将转载一下网上很流行的一个静态库编译的方法:
http://blog.csdn.net/tonylk/archive/2009/02/06/3866926.aspx
注意上面这个网址也是转载的,真正写文章的人是夏威夷雪人,可惜qt中文论坛被我们代理屏蔽了,进不去,于是用个可用的网址,遗憾,不过这哥们是牛人,ym之
Thursday, March 12, 2009
Monday, March 9, 2009
无敌的[Microsoft][SQL Native Client]Encryption not supported on the client错误
对微软的东西已经有些无语了
在服务器上面的虚拟机上安装SQL Server 2005 Developer版,结果出现了诡异的错误
[Microsoft][SQL Native Client]Encryption not supported on the client
无论试验多少次,这个错误总是会按期出现
让我实在是有点郁闷,总共弄了两三天
这个错误还没有任何被解决的趋势
于是忍无可忍,决定google之,其实我老早应该google的
可惜对英文的帮助有点头大,然后,对中文的帮助十分无语(在不同的地方发现了同样的东西)
所以拖到现在,实在是失策
于是找了这个解决办法,竟然是用注册表,错误的原因也语焉不详
实在是有点郁闷了
于是贴一下网址:
http://social.msdn.microsoft.com/Forums/en-US/sqlsetupandupgrade/thread/f8b029ea-2296-4c62-835c-0fa023b3295c/
再次意识到MSDN真的是一个好东西
虽然很多时候里面的解释让人不知所云
顺便留下错误和注册表的信息,放置下次出错吧,汗死
首先是错误的说法:
SQL Server Setup could not connect to the database service for server configuration.
The error was:[Microsoft][SQL Native Client]Encryption not supported on the client.
Refer to server error logs and steup logs for more information.
For detials on how to view setup logs, see "How to View Setup Log Files" in SQL Server Books Onlines.
然后是注册表的信息:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\DB-Lib]
"AutoAnsiToOem"="ON"
"UseIntlSettings"="ON"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0]
"ProtocolsSupported"=hex(7):73,00,6d,00,00,00,74,00,63,00,70,00,00,00,6e,00,70,
00,00,00,76,00,69,00,61,00,00,00,00,00
"ProtocolOrder"=hex(7):73,00,6d,00,00,00,74,00,63,00,70,00,00,00,6e,00,70,00,
00,00,00,00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\GeneralFlags]
"NumberOfFlags"=dword:00000002
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\GeneralFlags\Flag1]
"Label"="Force protocol encryption"
"Value"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\GeneralFlags\Flag2]
"Label"="Trust Server Certificate"
"Value"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\LastConnect]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\np]
"DLLname"="SQLNCLI"
"NumberOfFlags"=dword:00000000
"NumberOfProperties"=dword:00000001
"ProtocolName"="Named Pipes"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\np\Property1]
"Name"="Default Pipe"
"Value"="sql\\query"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\sm]
"DLLname"="SQLNCLI"
"NumberOfFlags"=dword:00000000
"NumberOfProperties"=dword:00000000
"ProtocolName"="Shared Memory"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\tcp]
"DLLname"="SQLNCLI"
"NumberOfFlags"=dword:00000000
"NumberOfProperties"=dword:00000003
"ProtocolName"="TCP/IP"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\tcp\Property1]
"Name"="Default Port"
"Value"=dword:00000599
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\tcp\Property2]
"Name"="KEEPALIVE (in milliseconds)"
"Value"=dword:00007530
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\tcp\Property3]
"Name"="KEEPALIVEINTERVAL (in milliseconds)"
"Value"=dword:000003e8
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\VIA]
"DLLname"="SQLNCLI"
"NumberOfFlags"=dword:00000000
"NumberOfProperties"=dword:00000002
"ProtocolName"="VIA"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\VIA\Property1]
"Name"="Default Server Port"
"Value"="0:1433"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\VIA\Property2]
"Name"="Default Client NIC"
"Value"="0"
在服务器上面的虚拟机上安装SQL Server 2005 Developer版,结果出现了诡异的错误
[Microsoft][SQL Native Client]Encryption not supported on the client
无论试验多少次,这个错误总是会按期出现
让我实在是有点郁闷,总共弄了两三天
这个错误还没有任何被解决的趋势
于是忍无可忍,决定google之,其实我老早应该google的
可惜对英文的帮助有点头大,然后,对中文的帮助十分无语(在不同的地方发现了同样的东西)
所以拖到现在,实在是失策
于是找了这个解决办法,竟然是用注册表,错误的原因也语焉不详
实在是有点郁闷了
于是贴一下网址:
http://social.msdn.microsoft.com/Forums/en-US/sqlsetupandupgrade/thread/f8b029ea-2296-4c62-835c-0fa023b3295c/
再次意识到MSDN真的是一个好东西
虽然很多时候里面的解释让人不知所云
顺便留下错误和注册表的信息,放置下次出错吧,汗死
首先是错误的说法:
SQL Server Setup could not connect to the database service for server configuration.
The error was:[Microsoft][SQL Native Client]Encryption not supported on the client.
Refer to server error logs and steup logs for more information.
For detials on how to view setup logs, see "How to View Setup Log Files" in SQL Server Books Onlines.
然后是注册表的信息:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\DB-Lib]
"AutoAnsiToOem"="ON"
"UseIntlSettings"="ON"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0]
"ProtocolsSupported"=hex(7):73,00,6d,00,00,00,74,00,63,00,70,00,00,00,6e,00,70,
00,00,00,76,00,69,00,61,00,00,00,00,00
"ProtocolOrder"=hex(7):73,00,6d,00,00,00,74,00,63,00,70,00,00,00,6e,00,70,00,
00,00,00,00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\GeneralFlags]
"NumberOfFlags"=dword:00000002
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\GeneralFlags\Flag1]
"Label"="Force protocol encryption"
"Value"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\GeneralFlags\Flag2]
"Label"="Trust Server Certificate"
"Value"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\LastConnect]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\np]
"DLLname"="SQLNCLI"
"NumberOfFlags"=dword:00000000
"NumberOfProperties"=dword:00000001
"ProtocolName"="Named Pipes"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\np\Property1]
"Name"="Default Pipe"
"Value"="sql\\query"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\sm]
"DLLname"="SQLNCLI"
"NumberOfFlags"=dword:00000000
"NumberOfProperties"=dword:00000000
"ProtocolName"="Shared Memory"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\tcp]
"DLLname"="SQLNCLI"
"NumberOfFlags"=dword:00000000
"NumberOfProperties"=dword:00000003
"ProtocolName"="TCP/IP"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\tcp\Property1]
"Name"="Default Port"
"Value"=dword:00000599
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\tcp\Property2]
"Name"="KEEPALIVE (in milliseconds)"
"Value"=dword:00007530
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\tcp\Property3]
"Name"="KEEPALIVEINTERVAL (in milliseconds)"
"Value"=dword:000003e8
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\VIA]
"DLLname"="SQLNCLI"
"NumberOfFlags"=dword:00000000
"NumberOfProperties"=dword:00000002
"ProtocolName"="VIA"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\VIA\Property1]
"Name"="Default Server Port"
"Value"="0:1433"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI9.0\VIA\Property2]
"Name"="Default Client NIC"
"Value"="0"
Saturday, March 7, 2009
关于数据库表设计的几点想法
好的设计依赖于标准化三范式
对数据库表的设计好坏的评价,应该只以标准化的三个范式来评价,即看一个表是否完成符合三大范式的要求
而不能看表当中列的多少,即使有很多属性也不能代表这个设计不好,更不能因为属性很多就考虑将一个本来可能设计的还好的表进行拆分,如果原来的表符合三范式的话,这种拆分就一定会产生不良设计的表(主要是依赖传递)
如何区分外键和依赖传递
关于外键和依赖传递的关系
给定一个表其中的一个属性,要确定它是外键,或者是依赖传递,可以看这么几点,注意这个属性本身必须满足一定条件,即需要是另一个表的主键
1. 如果属性是外键的话,这个属性不可能完全依赖于表的主键,即不可能对应一个不同的表的主键而有特定的值,可能出现不同的主键有同样值的这个属性。
事实上,可以这么理解,外键的字面意思就是说这个属性不是这个表中主键完全决定的,而是作为这个表和其他表之间通信的一个接口,连接到另外一个表当中。只是告诉我们这个主键对应的这一行值原来是连接到另一个表的那个主键的那一行值上面去的。
2. 如果属性是依赖传递的话,就和外键完全不一样,即这个属性完全依赖于主键,主键一旦发生变化,这个属性的值也一定会有一个变化,可以算的上是独立的一一对应的。
当属性决定于主键时,如果这个属性还是另外一个表的主键,那么另外一个表的属性可以看成是依赖这个属性,同时传递依赖于本表的主键,这个明显违反第三范式
因此,不管是检查表之间关系,还是需要对表进行拆分的时候,都需要认真找到外键,认真思考一下他们之间的关系,看到底是外键还是传递依赖。如果是传递依赖的话,建议一定要把这两个表合并才行。
3. 简单的说,就是看属性是否完全决定于主键,如果一个属性完全决定于主键的话(一个主键决定一个属性值),那么就是传递依赖,如果一个属性不决定于主键的话(几个主键可能有同一属性值),那么就是外键
注意确定外键很有作用,可以提前发现不标准的表设计,因此,在决定一个表关系设计之前,需要在确定一下外键,或者说明确好每个表之前的关系
同时,不要随意做出一个变化的决定,需要在变化之前想好这个变化的影响,比如将表拆分的时候,需要考虑拆分之后的表是否有传递依赖
对数据库表的设计好坏的评价,应该只以标准化的三个范式来评价,即看一个表是否完成符合三大范式的要求
而不能看表当中列的多少,即使有很多属性也不能代表这个设计不好,更不能因为属性很多就考虑将一个本来可能设计的还好的表进行拆分,如果原来的表符合三范式的话,这种拆分就一定会产生不良设计的表(主要是依赖传递)
如何区分外键和依赖传递
关于外键和依赖传递的关系
给定一个表其中的一个属性,要确定它是外键,或者是依赖传递,可以看这么几点,注意这个属性本身必须满足一定条件,即需要是另一个表的主键
1. 如果属性是外键的话,这个属性不可能完全依赖于表的主键,即不可能对应一个不同的表的主键而有特定的值,可能出现不同的主键有同样值的这个属性。
事实上,可以这么理解,外键的字面意思就是说这个属性不是这个表中主键完全决定的,而是作为这个表和其他表之间通信的一个接口,连接到另外一个表当中。只是告诉我们这个主键对应的这一行值原来是连接到另一个表的那个主键的那一行值上面去的。
2. 如果属性是依赖传递的话,就和外键完全不一样,即这个属性完全依赖于主键,主键一旦发生变化,这个属性的值也一定会有一个变化,可以算的上是独立的一一对应的。
当属性决定于主键时,如果这个属性还是另外一个表的主键,那么另外一个表的属性可以看成是依赖这个属性,同时传递依赖于本表的主键,这个明显违反第三范式
因此,不管是检查表之间关系,还是需要对表进行拆分的时候,都需要认真找到外键,认真思考一下他们之间的关系,看到底是外键还是传递依赖。如果是传递依赖的话,建议一定要把这两个表合并才行。
3. 简单的说,就是看属性是否完全决定于主键,如果一个属性完全决定于主键的话(一个主键决定一个属性值),那么就是传递依赖,如果一个属性不决定于主键的话(几个主键可能有同一属性值),那么就是外键
注意确定外键很有作用,可以提前发现不标准的表设计,因此,在决定一个表关系设计之前,需要在确定一下外键,或者说明确好每个表之前的关系
同时,不要随意做出一个变化的决定,需要在变化之前想好这个变化的影响,比如将表拆分的时候,需要考虑拆分之后的表是否有传递依赖
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素面朝天的简约和小巧
其他的没有什么了,很多东西现在都已经不用,其实软件够用就好
只要满足了自己的需求就差不多了
不知道下次介绍清单的时候,这份表单会有些什么样的变化
用过很多软件,导致现在已经十分熟悉这些常用软件
为了留个纪念,于是把自己的软件使用清单晒一下:
文字编辑: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分钟的时间,主要是资讯的浏览,如果有一些其他的重要信息可以记下来,然后安排时间去看
这个都很重要,每天的时间一定要安排好,如果遇到什么突发事件,需要修改计划的话,要提前想好是否值得,这个很重要
首先要有目标,再有计划,然后明确实现步骤,最后将它实现
主要包括一下几个部分:
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. 考虑实现数据驱动,而不是硬编码,这一点还不是太明白怎么做;
读书笔记-第一和第二部分
第一部分 设计数据库之前
主要需要考虑这个几点:
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.
章节:
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.
Subscribe to:
Comments (Atom)
