把域名续费了
[| 2010/12/11 19:50]
今天头疼,晚上早回来了一点。想想域名快到期了,续费了一下。由于人民币的升值预期,续多年不合算,还是先续一年的。
QQPCMgr(QQ电脑管家)加速模拟器--SnooQPM--测试成功!
[| 2010/11/28 02:05]
测试终于成功了!达到了加速效果。哈哈哈。
Codeigniter中autoload数据库类(database)时应注意的
[| 2010/11/16 23:58]
Codeigniter可以用autoload在初始化时自动载入类库或者helper或者model等等各种各样的东西,比较方便。不过autoload数据库类的时候有一点要注意:默认载入最下面的一个有效配置,比如config/database.php里面从上到下有1个mysq连接配置,1个sqlite连接配置的话,默认载入的是sqlite的那个。在model中$this->load->database('mysql')也是无效的,必须用手册上给的get_instance那种方法。所以假如有多个数据源的话还是手动载入数据库配置为好。
SnooQQ发布V0.2版
[| 2010/11/16 17:51]
今天发布了SnooQQ的0.2版,相比0.1版增加了号码重登陆和号码下线功能。并升级了配套的php页面,修复myqq中下线的一个recv导致线程饿死的问题。
目前SnooQQ的功能:qq上线、验证码输入、重登陆、下线、发消息、收消息。
SnooQQ是一个多线程挂Q服务程序,使用EPOLL模型,可以同时处理多用户业务请求,其他程序可以使用指定的数据格式与之通信,向其发送qq登陆、下线、发消息、收消息等指令。与qq服务器的通信使用myqq封装的协议库。
总结一下开发的心得:
1,曾经在收消息时总是多出一块,调试一下午毫无收获,后来发现myqq在从gbk到utf8转换的时候用同一个buffer存放输入和输出的字符串,而同一条消息用gbk编码时长度要小于用utf8时,导致buffer中存在垃圾数据。
2,刚刚发布到VPS上的时候发现在开发机上只占很小内存的程序在VPS上要占数十M内存。纠结不知为何,后来发现原来使用OPENVZ技术虚拟出的VPS在计算内存用量的时候是按占用虚拟地址的大小来计量的。比如malloc一块10m的内存,但是不使用,在普通机器上占内存数几乎为0,在OPENVZ的VPS上要占用10M的内存配额。SnooQQ由于是多线程程序,每个线程默认分配8M的栈,导致每增加一个线程就要消耗8M多的虚拟地址空间。实际上使用的栈空间很小,估计了程序大概使用的栈大小后,用ulimit -s 256设置栈大小为256k,内存用量降低到了可接收的程度,程序运行不收影响。
3,之前在调试myqq的时候发现退出号码的时候总是有一个线程卡住无法退出,代码中也提到会阻塞。但是经过观察发现很多时候会卡死不退出。详细查了下代码,发现阻塞的线程在号码退出是阻塞在recv上,而另一个线程调用close去关闭socket时不会唤醒此进程。所以该线程长时间阻塞在recv上。假如服务器长时间没有消息发往该套接口,那么线程就卡住无法返回。(理论上服务器是周期性发送数据的,但我测试的时候经常会在recv上阻塞数分钟之久,具体原因待详细考察),我修改了一下,退出时对recv的线程调用pthread_cancel函数将其退出。不过略显粗暴,后期会进行优化。
目前SnooQQ的功能:qq上线、验证码输入、重登陆、下线、发消息、收消息。
SnooQQ是一个多线程挂Q服务程序,使用EPOLL模型,可以同时处理多用户业务请求,其他程序可以使用指定的数据格式与之通信,向其发送qq登陆、下线、发消息、收消息等指令。与qq服务器的通信使用myqq封装的协议库。
总结一下开发的心得:
1,曾经在收消息时总是多出一块,调试一下午毫无收获,后来发现myqq在从gbk到utf8转换的时候用同一个buffer存放输入和输出的字符串,而同一条消息用gbk编码时长度要小于用utf8时,导致buffer中存在垃圾数据。
2,刚刚发布到VPS上的时候发现在开发机上只占很小内存的程序在VPS上要占数十M内存。纠结不知为何,后来发现原来使用OPENVZ技术虚拟出的VPS在计算内存用量的时候是按占用虚拟地址的大小来计量的。比如malloc一块10m的内存,但是不使用,在普通机器上占内存数几乎为0,在OPENVZ的VPS上要占用10M的内存配额。SnooQQ由于是多线程程序,每个线程默认分配8M的栈,导致每增加一个线程就要消耗8M多的虚拟地址空间。实际上使用的栈空间很小,估计了程序大概使用的栈大小后,用ulimit -s 256设置栈大小为256k,内存用量降低到了可接收的程度,程序运行不收影响。
3,之前在调试myqq的时候发现退出号码的时候总是有一个线程卡住无法退出,代码中也提到会阻塞。但是经过观察发现很多时候会卡死不退出。详细查了下代码,发现阻塞的线程在号码退出是阻塞在recv上,而另一个线程调用close去关闭socket时不会唤醒此进程。所以该线程长时间阻塞在recv上。假如服务器长时间没有消息发往该套接口,那么线程就卡住无法返回。(理论上服务器是周期性发送数据的,但我测试的时候经常会在recv上阻塞数分钟之久,具体原因待详细考察),我修改了一下,退出时对recv的线程调用pthread_cancel函数将其退出。不过略显粗暴,后期会进行优化。
博客数据库迁移之乱码问题
[| 2010/10/31 15:52]
最近要重写博客,于是在测试机上搭建环境,重写到文章显示那里,结果发现评论显示没有问题,文章显示乱码,搞了一晚上不知为何。晚上躺在床上突然想起来上次迁移也遇到了这个问题,记得是由于数据库导入的时候导入乱码导致。乱码那次用的是MYSQL Administrator导出,然后导入的。我尝试用服务器每天自动备份的(使用mysqldump)数据库文件,依旧用MYSQL Administrator导入,发现问题解决。
虽然问题解决,但是原理仍未明白,因为为何乱码时只有文章乱而评论不乱?两者字符集设置、字段类型都相同。时间原因,暂未细究。先行记下。
虽然问题解决,但是原理仍未明白,因为为何乱码时只有文章乱而评论不乱?两者字符集设置、字段类型都相同。时间原因,暂未细究。先行记下。
Small APP迁移之nginx配置+程序修改
[| 2010/10/29 14:17]
由于想保持博客主题和app的独立性,所以在编写supermail的时候使用了另一套ci框架,有心给app开一个二级域名,但是想了一下为了不由于公用ip导致降低博客在搜索引擎中的权重,决定先监听在一个别的端口,日后再迁移到博客/smapp/**下。
今天下午图书馆不开,加之买的书还没到,决定完成迁移工作。
首先需要优化程序,在所有的url链接处都用echo base_url()来组成完整url,这样迁移的时候通过修改config里面的base_url可以保证不会因使用绝对路径导致的问题。
其次是需要修改nginx。有如下三个方案:
1,对于location /smapp/,设置不同的root,这个方法是效率最高的,也最容易配置,不过我感觉这么设置总是别扭,不大想用。
2,使用curl,在博客的controller中建立一个smapp.php,对不同的url分别用curl抓取内容,然后返回。相当于做了个网页代理。但是搞了一会后发现实现困难,并且效率低,兼容性差。
3,反向代理,之前supermail监听的端口不变,不过由监听0.0.0.0改为监听127.0.0.1,这样此端口在外界看起来是封闭了。然后在nginx中对location /smapp/做反向代理。
从nginx文档上看到的是说,在对url做proxy_pass(反向代理)之前不能rewrite,于是我一开始先是把location /smapp/放在了rewrite规则的前面,结果发现还是被rewrite了,说明nginx在处理的时候是先把rewrite规则都匹配完毕后才处理location。不以位置改变这两者的顺序。于是只能加了一条rewrite规则,对/smapp/段的直接break。
然后配置反向代理,设置:
location /smapp/ {
proxy_pass http://127.0.0.1:****/;
break;
}
注意,proxy_pass后面的url的末尾是否带'/'是有区别的,假如不带,那么反向代理的uri中带有/smapp/这一段,假如带,uri中直接以/smapp/后面的部分开始。我刚开始加'/'的时候总是报错,也许是由于前面rewrite没有break掉的缘故。后来加上后成功了。
现在已经完成了迁移,不过美中不足之处是rewrite规则多了一步,稍稍有些影响效率,不过可以通过配置反响代理缓存来弥补这一性能缺失。
今天下午图书馆不开,加之买的书还没到,决定完成迁移工作。
首先需要优化程序,在所有的url链接处都用echo base_url()来组成完整url,这样迁移的时候通过修改config里面的base_url可以保证不会因使用绝对路径导致的问题。
其次是需要修改nginx。有如下三个方案:
1,对于location /smapp/,设置不同的root,这个方法是效率最高的,也最容易配置,不过我感觉这么设置总是别扭,不大想用。
2,使用curl,在博客的controller中建立一个smapp.php,对不同的url分别用curl抓取内容,然后返回。相当于做了个网页代理。但是搞了一会后发现实现困难,并且效率低,兼容性差。
3,反向代理,之前supermail监听的端口不变,不过由监听0.0.0.0改为监听127.0.0.1,这样此端口在外界看起来是封闭了。然后在nginx中对location /smapp/做反向代理。
从nginx文档上看到的是说,在对url做proxy_pass(反向代理)之前不能rewrite,于是我一开始先是把location /smapp/放在了rewrite规则的前面,结果发现还是被rewrite了,说明nginx在处理的时候是先把rewrite规则都匹配完毕后才处理location。不以位置改变这两者的顺序。于是只能加了一条rewrite规则,对/smapp/段的直接break。
然后配置反向代理,设置:
location /smapp/ {
proxy_pass http://127.0.0.1:****/;
break;
}
注意,proxy_pass后面的url的末尾是否带'/'是有区别的,假如不带,那么反向代理的uri中带有/smapp/这一段,假如带,uri中直接以/smapp/后面的部分开始。我刚开始加'/'的时候总是报错,也许是由于前面rewrite没有break掉的缘故。后来加上后成功了。
现在已经完成了迁移,不过美中不足之处是rewrite规则多了一步,稍稍有些影响效率,不过可以通过配置反响代理缓存来弥补这一性能缺失。
硬盘修复了,但状态不佳,升级成日立7k500系列的500G
[| 2010/10/13 10:54]
昨天一天chkdsk后终于恢复了分区数据一致性,可以进入系统了,但是扫描出了一些坏道。进入系统后用victoria扫描了一下,发现c盘状态不佳。27G600M处是重灾区,很多坏块和慢块。其他地方倒还可以。不过鉴于硬盘状态已经不再稳定,为了数据安全考虑,决定更换硬盘。
很早就想买7200转的硬盘了,这次正好换硬盘,又看了下。7200转硬盘在性能上优势还是非常大的,我现在的笔记本硬盘用hdtune测试,读取速度最高才56m,而最新一代的7200转硬盘读取最高速度都能达到100m/s以上,对性能的提升还是非常大的。
上网看了一下西数,希捷,日立的数据评测。西数黑盘推出时间最晚,性能最高,但是价格也非常高,要600左右。希捷推出最早,性能也最弱,zol报价380,日立的推出时间和性能都是居中的,zol报价460,京东也是460。但淘宝电器城里的价格才380多。并且查了查,发现500g,7200转硬盘淘宝出货量最多的就是日立。希捷和西数的都很少。不知道为何。
最后选了一家看起来比较正规的店,入手一个日立盘。又买了个飚王黑鹰的盒子给老硬盘用。本来想买刀锋2500的,但是想到老硬盘也没有必要用那么好的盒子,并且两个刀锋盒子的话容易吧两个移动硬盘搞混。飚王的盒子也是不错的,看起来也好看,于是买了个飚王的。
备注:关于硬盘坏道。之前很长时间都以为硬盘的坏道就是完全不能读的块。好块读起来都一样。不过一个疑惑就是为什么有的软件能把数据从坏道上备份到好道上。这两天研究了下,发现硬盘状态不是二值化的,而是以读取时间为标准渐变的。正常的硬盘区块几十ms就可以读取,但是对于有些问题的区块,就要几百ms,甚至超时。往往把读取时间过长,或者超时的区块叫做坏道。有时候我们发现系统突然卡住,硬盘灯狂转,而这时并没有什么大的硬盘操作。这就有可能是硬盘在读慢块。慢块并不导致数据的丢失,但会导致系统反应缓慢,经常卡住。并且由于慢块读取速度慢,需要反复去读,很容易进一步损伤造成坏道。
平时生活中往往我们很少注意坏道的问题,认为当出现蓝屏等极端情况时才需要检测硬盘健康状态。其实不然,硬盘状态下降的初期并不会出现坏块,而是出现很多慢块,这个时候系统就会变得不稳定。应该在这个时期就早做预防,避免硬盘罢工才想到更换。
这次的硬盘事件也解决了一个困扰我比较长时间的问题,就是电脑异常缓慢和经常卡住。之前经常出现硬盘狂转,系统缓慢的情况,而cpu和内存都是比较空闲的,一直以为是操作系统或者是软件问题,现在才知道原来是硬盘在作祟。
很早就想买7200转的硬盘了,这次正好换硬盘,又看了下。7200转硬盘在性能上优势还是非常大的,我现在的笔记本硬盘用hdtune测试,读取速度最高才56m,而最新一代的7200转硬盘读取最高速度都能达到100m/s以上,对性能的提升还是非常大的。
上网看了一下西数,希捷,日立的数据评测。西数黑盘推出时间最晚,性能最高,但是价格也非常高,要600左右。希捷推出最早,性能也最弱,zol报价380,日立的推出时间和性能都是居中的,zol报价460,京东也是460。但淘宝电器城里的价格才380多。并且查了查,发现500g,7200转硬盘淘宝出货量最多的就是日立。希捷和西数的都很少。不知道为何。
最后选了一家看起来比较正规的店,入手一个日立盘。又买了个飚王黑鹰的盒子给老硬盘用。本来想买刀锋2500的,但是想到老硬盘也没有必要用那么好的盒子,并且两个刀锋盒子的话容易吧两个移动硬盘搞混。飚王的盒子也是不错的,看起来也好看,于是买了个飚王的。
备注:关于硬盘坏道。之前很长时间都以为硬盘的坏道就是完全不能读的块。好块读起来都一样。不过一个疑惑就是为什么有的软件能把数据从坏道上备份到好道上。这两天研究了下,发现硬盘状态不是二值化的,而是以读取时间为标准渐变的。正常的硬盘区块几十ms就可以读取,但是对于有些问题的区块,就要几百ms,甚至超时。往往把读取时间过长,或者超时的区块叫做坏道。有时候我们发现系统突然卡住,硬盘灯狂转,而这时并没有什么大的硬盘操作。这就有可能是硬盘在读慢块。慢块并不导致数据的丢失,但会导致系统反应缓慢,经常卡住。并且由于慢块读取速度慢,需要反复去读,很容易进一步损伤造成坏道。
平时生活中往往我们很少注意坏道的问题,认为当出现蓝屏等极端情况时才需要检测硬盘健康状态。其实不然,硬盘状态下降的初期并不会出现坏块,而是出现很多慢块,这个时候系统就会变得不稳定。应该在这个时期就早做预防,避免硬盘罢工才想到更换。
这次的硬盘事件也解决了一个困扰我比较长时间的问题,就是电脑异常缓慢和经常卡住。之前经常出现硬盘狂转,系统缓慢的情况,而cpu和内存都是比较空闲的,一直以为是操作系统或者是软件问题,现在才知道原来是硬盘在作祟。
360比较bt
[| 2010/10/11 10:40]
发现就我的电脑而言,每次我修改下360的什么,它就给我闹毛病。以前每次360一升级就不能正常关机,必须按电源。昨天由于嫌360杀毒升级导致电脑太卡,所以把360杀毒关闭,并关闭了其开机自启动。晚上10点的时候电脑硬盘狂转,卡了,按电源关闭后重启,蓝屏进不去,安全模式也不行。用安装盘修复,也没法修复,郁闷。windows系统上用了比较长时间,有很多东西,不想重装。算了,暂时用linux。