搬家
又搬,真是弄的好玩。
因为政策问题,现博克搬到 http://thenand.blogbus.com/
又搬,真是弄的好玩。
因为政策问题,现博克搬到 http://thenand.blogbus.com/
在要求处理大量的数据结构时,想到的最好的方法当然是可以对结构体可以自动遍历,这时就不用为每一个结构体都写一个处理方法了。
处理这个问题有两个方法,一个是使用代码自动生成方法,在源代码外使用一个程序对结构体进行解析并生成一个可自动遍历的代码,最后程序调用这些代码进行处理就行。
但是这种方法开发成本高,项目也难维护。
最后一个方法,通过代码级的修改,在C++中不能遍历结构体的主要原因就是结构体没有存储结构体成员的相关信息。我们只要变像解决这个问题就行了,如下代码:
class data
(..更多内容)
因为使用的是Fedora 15,当然使用的就是 gnome-shell 这时桌面已经用的很少了。
所以我想把命令壁纸做为gnome-terminal的背景来使用,但是网上的那些VIM命令壁纸太暗的,做为终端的背景效果并不好。
最后决定自己做一次,使用gimp制作,内容和网上的vim命令壁纸一样。

效果如上。
上面的图片是根据我自己电脑的 1280 * 800 分辨率下的gnome-terminal终端显示范围进行调整的。
如果需要其它的分辨率可以联系我,我可以提供gimp的xcf文件。
这还真是一个写烂了的题目啊。
为了打发业余时间,还有提高自己的技术水平,最近开始购买实体书,进行了大量的阅读。并有长期的阅读计划。
不读不知道啊,在阅读了几本经典著作后,发现自己在生活与技术方面还是有很多不足的,通过阅读这些学籍可以提高自己的技术水平,还有思想境界。
最近读完的书主要有:
《UNIX编程艺术》
《黑客与画家》
《C++ GUI Qt 4编程》
《米尔顿的秘密》
《秘密》
正在读的有:
《影响力》
《代码大全》
这些书或多或少都有给我启发,或是直接帮助我解决了工作中遇到的难题,或是让我明白了一直不明白的问题。
并让我在工作中按书籍中的原则进行开发。
如 《UNIX编程艺术》 中组合原则的描述,《代码大全》中对智能指针的描述,都比我的开发工作起到了直接的帮助作用。
还有《影响力》,我现在正在看第三章,而在看完第二章的时候,我才明白到在谈判中,第一次提出比较高的要求除了 (..更多内容)
因为一直不能很好的做到 界面与逻辑的分离 。所以在开发的过程中,主要是对界面的修改过程中,吃尽的苦头。
今天在看《代码大全》里面又说到了界面与逻辑分离的问题,但它提的是MFC中关于界面与逻辑的分离,而且也没有说的非常详细。
所以我接着又开始考虑Qt 中界面与逻辑分离的方法。而且这两天又在改Qt程序的界面,我那个痛不欲生啊。
以前一直处理界面与逻辑耦合的方法是这样的:
1、定义一个数据处理类,它提供相应的数据接口。
2、界面类通过数据处理类的接口取得数据进行显示。
但是在界面的交互中,很难避免进行数据的处理,而为了可以方便的进行数据处理,往往界面类就会执行要进行处理的数据变量,这时界面与逻辑的关系越来越杂乱。而这时也只有当数据处理完成后才传回给数据处理类。
前面一个写的关于程序启动画面的日志,不见了,不管,那时半睡不醒的时候写的谁知道去哪了。
正题(最近写的全是老东西,有点怕自己以后忘了没地方找):
windows下的程序在右键程序中,能看到这个文件的详细信息,如版本号,公司名等。
方法:
在pro 文件中,写如下几个参数
VERSION = 3.0.0
(..更多内容)
这不应该说是新用法吧,只是我自己以前没有发现而已。
QSettings是一个处理注册表和INI格式文件内容非常好的封装类,但是在前两天在看Qt demos的browser例子时,程序中对 QSettings 有如下用法:
void fun(){
QSettings settings();
settings.set设置数据内容。
}
void fun1(){
QSettings settings();
settings.get读取数据内容。
}
当时看到这代码时让我很不解,仔细想了一下QSettings是线程安全类,对它数据内容的读写是可以异步操作的,在不同的函数内直接定义对象可以操作相同的数据,那么这个对象在内部要么存在这一个全局变量,或是直接点他们在构造时都会建立一个零时文件,而在同一个程序中它们操作的都是同一个零时文件。
为了证实我的想法,可以查看QSettings的源代码,发现有如下内容:
这个标题写的真是相当的长啊:)
现在的网站实现技术五花八门,如页面中的JS脚本,数据的POST,还有页面跳转等。普通的爬虫技术有些力不从心了,最简单和方便的实现方法就是通过浏览器来解析和处理页面中相关的内容。
现在网络上一搜就能搜到一大把用.NET写的基于IE核心的网页处理工具。而这种工具在我们公司本来的爬虫中就已经存在一个了。
但是.NET虽然有一个Linux的实现方案MONO,但是IE可是没有啊,再加上MONO和IE未来可能存在的版权问题,所以打算使用WebKit来实现一个并让它跨平台。再加上现在只是做一个模型,一个技术实现上的探讨而不牵扯到具体业务流程,所以这个长长的标题就出来了。
我们的模型是通过QWebkit来实现的,因为Qt的封装让我们一些开发可以节省很多力气,但同时也因为颗粒度太大而一些操作非常难实现。
现在模型技术实现上的进度如下(容易实现归功于Qt):
2011年6月29号,下面是三个工作日的成果:
1.完成了页面资源请求和完成进度的监控
2.完成了资源下载的过滤(真 (..更多内容)
以前研究过Qt内存回收的机制,现在做一下总结:
总结的说法是:所以继承与QObject的类,并设置了parent(在构造时,或用setParent函数,或parent的addChild相关信息),所以在parent被delete时,这个parent的相关所有child都会自动delete,不用用户手动处理。
根据上面的说法,会出现三个问题:
1.当child被delete时parent怎么知道?
2.parent怎么区分它的child是new出来的,还是不是new的。
3.当parent被delete后,child怎么知道自己被delete了。
我们慢慢来回答:
第一个问题,parent是用一个数给来保存childs的指针的,当一个child被销毁时,child的析构函数会调用parent并把parent的指针数据中自己对数的值改为0,那么最后是0的指不管多少次都无所谓了。
第二个问题,parent还真TMD的不区别它的child是不是new出来的,只要是它的child,它在销毁时就直 (..更多内容)
工建和目录的代码还有数据字典是出身出同一套代码,当初为了减少开发量与维护量,数据库使用的是全面的兼容化的数据库结构,而代码是在不同的代码所属上使用了宏定义来控制。
但随着业务差异性更来更大,项目包含的内容,使用的工具和语言越来越多,数据结构的冗余与代码的复杂度快到了让人无法接收的地步。尤其是现在让不熟悉业务的新人负责加入了.NET的数据后台处理程序后,数据库的冗余越来越夸张了。当然这些都有我的负责,虽然总监说不用管;但是我最大的责任在于代码管理的这一块,为了减少重复开发量与维护量,当初确定在使用同一套代码用宏定义来控制两个产品之间的差异性的决定,随着业务差异化的越来越多(如同一个设备但在不同的产品中一个序列号的验证都变的迥然不同时),这决定就让我痛苦的痛不欲生,痛的我想杀人了,吖吖的同一样东西你吖的需要和业务都能变这么多花样。
一直想来对代码做一个整理,但是如果真把代码分成两个款本的代码,这也会让人很痛的啊。公司可就我一个人啊,真把代码分成了两份,当要修改同一个功能时意谓着我就要修改两份代码!!!
最近在看《UNIX编程艺术》在看第一章的原则时 (..更多内容)