近两个月以来,本博客上的垃圾评论数量越来越多了,几乎每天都有十几条垃圾评论,害得我不得不打开Wordpress的评论审核功能,有时候某些评论看上去确实是人工用心发表的,但用户名跟链接网址有着明显的广告色彩,一心软就手工发行了,就在放行的第二天,在百度site的时候发现竟然被拔了近一半的毛,然而本博客在拔毛的前面几天也未出现抄袭、更改样式、更换固定链接格式等影响SEO的行为,唯一能想到的拔毛理由恐怕就是那条垃圾评论了。 阅读全文
为了将代码移植到iPhone等运行了iOS的设备上,我们不得不百般地顺从iOS系统的特殊性,Linux上普通的文件描述符(套接字)超时时间设置在iOS上无效,前面那篇文章“实现超时返回的gethostbyname函数”曾试过采用时钟与信号实现超时返回,但因为某些尚未查明的原因,加了信号与时钟以后,程序会莫名地崩溃,这促使我们使用最保险的select函数来实现超时返回。 阅读全文
当我们的程序是单进程的时候,居如connect、read、accept、gethostbyname之类的网络API函数默认都是阻塞的,想实现connect、read、accept的非阻塞版本很容易,之需要将其调用的文件描述符(套接字)设置为非阻塞模式,然后交给select去捕捉返回结果即可。然而gethostbyname函数只需要传递一个域名作为参数,显然无法依靠设置文件描述符(套接字)的超时时间来让其在规定的时间内返回,如果指定域名存在DNS中存在且主机能够连上互联网还好,要是域名在DNS中不存在或者主机没有连上互联网,那样gethostbyname就会一直阻塞着整个进程直至到达系统超时时间,导致程序中的其他功能无法执行,显然代价是惨重的。那么有没有办法实现超时返回的gethostbyname函数呢?答案是肯定的。 阅读全文
之前写过一篇专门针对iPhone4的电脑共享手机网络(中国移动、中国联通或者中国电信皆可)上网的教程名为“笔记本连接iPhone上网”,如今iPhone4丢了,在iPhone5未上市之前用刚买过来准备送给爸妈的两个诺基亚3208c过渡一下,正好国庆回家,家中未装宽带,为了上网,只能借助中国移动的GPRS网络了,手机上网还是有很多局限性的,比如我想在Wordpress上为博客发布新的文章,手机就没法办到,这样一来,笔记本共享手机网络上网就势在必行了。 阅读全文
今天下午,意外地收到一封来自Google的平邮信,寄信人地址来自上海,看来是从Google上海办事处邮寄出来的。拆开信封一看,是一张来自GoogleAdWords的1000元广告试用券,内置优惠码,显示有效期至2011年10月31日,看来Google还真是打算广撒网多捕鱼,连我这种极其不起眼的小鱼也不放过。 阅读全文
真的后悔当初选了个Windows主机安放CppLive编程在线,各种麻烦啊,从当初不能用Wordpress自带的mail函数发邮件到最近超麻烦的301重定向设置,浪费了我不少时间去折腾。不过在折腾的同时自己也学了很多新知识,这样想想也还就没那么沮丧了。早几天把Wordpress固定链接格式简化以后,百度的拔毛让我心慌慌,为了亡羊补牢,以至于我今天花了几乎一天时间去尝试利用web.config实现Windows空间的301重定向。 阅读全文
socket通常翻译为套接字(文件描述符),当我们使用socket函数创建一个套接字(文件描述符)后,我们可以使用该套接字(文件描述符)来执行很多操作,譬如read、write、open、accpet、connect、recvfrom、sendto等等,这里面的很多操作默认都是阻塞的,而这个阻塞时间就是我今天要讲的socket超时时间,在没有设置socket超时时间的情况下,这些有阻塞行为的操作调用的都是系统默认超时时间。不同的系统会定制不同的socket超时时间,比如本人的Ubuntu10.04的超时时间就是30秒,但多数的系统对于该超时时间的设置都是比较保守的,不会低于30秒。很多情况下,为了让我们的程序更合理,缩短socket超时时间让阻塞动作尽快返回结果就是很有必要了。 阅读全文