历经一个月,服务器辗转上海->重庆->北京,终于落下脚来,期间曾把天气预报服务转移到另一台机器上,但无奈Google日历不认(GoogleReader可以正常抓取),很长一段时间无法正常提供天气预报服务,现在应该算是稳定下来了,但愿接下来的2010是平安的一年。
老版天气预报系统停止提供服务
第一版天气预报系统自2008年1月上线以来,已经稳定的为网友提供了两年的服务。随着系统的访问量越来越大,网友的需求越来越复杂,今年年初的时候,重新开发了第二版的系统,并也已稳定运行了近一年。
在新版系统上线后,老版系统就已经不再维护,是否能正常使用我也无法保证,但通过查看系统日志,每天还是有数万的访问量,一直都想关闭老版系统,但为了这部分用户,一直没有这么做。
为了兼容这部分老用户的需求,在新版系统中,增加了一个modifier,以便能输出和v1一样的数据格式,并同时将v1的页面自动跳转到v2的相关页面。
如果还有在使用老版系统的用户,可以的话,请尽快转到新版,但原老版系统的url仍然是可以访问,只是重定向到了新版系统中的v1兼容页面,如果目前因为种种原因使用兼容页面仍不正常的用户,请与我联系。
PS:新版系统解决了以往输出第二天数据不定时的问题,若选了过滤器count_1,每天下午6点后则输出第二天的天气预报信息,换句话说,如果Google日历抓取即时,每天下午6点就可以收到第二天的短信提醒。
关于最近天气服务不稳定的说明
最近很多网友通过QQ MSN Email等方式询问天气预报为什么不能使用了,看到这么多网友使用我的程序,很高兴。
众所周知的原因,年关将至,有关部门的的审核力度也更加严格,继之前机房整顿之后,转移后服务器所在机房又遭同样的”事故”,目前已迁入新的机房,乐观估计,暂时不会出现类似问题了,目前天气预报服务使用正常。
另外,很多网友使用本站的天气预报是通过Google日历服务结合ICAL数据源来实现天气预报(实现方法参照本文:《关注天气:免费的短信天气预报》),但同时Google自己也提供了类似的免费短信天气预报提醒服务,相信也有不少网友使用的是Google官方提供的服务。
上个礼拜的一天早上,接到10086客服打来的电话,说为回馈老用户,移动为用户提供了一项天气预报服务,使用费一年10元,如果选择开通,第一年免费,以后可根据需要选择继续或停止服务。手机自带有天气widget ,自己也有免费的解决方案,自然不需要这类服务。到公司上班后从网络上了解到一则新闻:Google即将停止免费的短信天气预报提醒服务。不由得让我想起近年来由于某些势力团体因为推广自己的产品而找出各种借口打压互联网上相对弱势的竞争对手的事件,虽然这件事与其他事件或许没有直接联系,但仍然不免让人浮想联翩。
在这个神奇的国度,不仅说话需要小心,做事也需要处处留心注意,不要一不留神就动了别人的奶酪。
北京近一段时间来气温越来越低,真正感觉到冬天来了,各位网友也需要倍加注意,注意气候的变化,在这个时候即使是往常小小的感冒,也能紧张好一阵子。
无奈,违规涉黄与我何干
这几天服务器无法访问,与托管商联系才知道因为上海移动怒江机房违规涉黄被CCAV点名批评,继而采取一系列不诚信的,随意的,混乱的,首创性的处理方式:在未通知用户的情况下对整个机房的服务器拔线逐一排查,目前服务器已搬到北艾电信机房,DNS解析可能还需要一些时间,对这段时间内无法正常使用天气预报的同学们说声抱歉了。
PHP FTP Client:基于PHP的FTP客户端
半年前,曾写过一篇通过SVN Hooks实现本地SVN仓库与线上FTP服务器同步的文章《让虚拟主机也用上SVN:适用于个人的开发部署方式》,其中使用到了一个PhpFtpClient的类库,直到今天才有时间稍做了下整理,写了几个Demo,欢迎网友们提出宝贵意见以便改进。
目前已支持的功能:
- 目录列表
- 创建文件夹/文件
- 删除文件夹/文件(支持子文件夹)
- 上传文件夹/文件(支持子文件夹)
- 自动判断上传文件格式(ASCII/BINARY)
PhpFtpClient围观地址:http://www.raychou.com/labs/php-ftp-client/
新工作台

折腾了三个月,终于拿下这个两米的工作台,终于能把这一堆废铜烂铁摆下了。
数码生活
一转眼已经三个多月没有写博客了,一方面是自六月份开始,工作异常的繁忙,静不下心来写日志;另一方面,八月初搬家了,搬到了离公司很近的一个小区,由于刚从家里搬出来,很多生活用品等东西需要整理和添置,周末也没有心思动笔。
当然,这些都是客观原因,不得不承认自己很懒……
一直很热衷新潮的数码产品,读书的那会,没有多少闲钱给自己添置装备,只好望梅止渴,经常逛一些数码网站和论坛,每月一期的《新潮电子》也是必须的,20元一本的杂志,对于一个学生郎来说,也算是比较奢侈的了。当时最奢侈的就属花了600大洋入手了VX Nano。
HTPC也是我一直在保持关注的数码产品,也曾利用退役的台式机尝试搭建家庭媒体中心(点击这里围观),但无奈老机器跑Vista非常的不稳定,经常死机,而耗电量大也是一个问题,在初步尝试过后便一直搁置了这个计划。直到最近从网络了解了Intel的新一代嵌入式整合平台:ATOM。在做了一段时间的功课后,于八月初抱回了一台ATOM330主机(下图右侧):

处理器:DualCore Intel Atom 330, 1600 MHz
显 卡:Intel GMA950 256MB
内 存:金士顿2G DDR800
主硬盘:T61拆机 西数160G
存储盘:希捷1.5T
之前看网上评测,对于N330的高清解码还曾报了一线希望,认为应付720P应该绰绰有余,乃至还奢望应付1080P的解码任务,接上电视和MediaCenter遥控器以实现我多年的HTPC计划,但现实是无情的,Atom330不仅无法胜任720P的解码工作,连跑MediaCenter都卡得不行,U的性能其实已经足以应付日常的工作,但无奈超低的显卡性能使得整机的应用范围大大缩水,目前已经沦落为一台7*24开机的NAS和WebServer,用来做家庭文件存储以及供自己学习调试用的服务器,虽然其超低的性能影响了其应用范围,但胜在功耗低,虽然没有实测,但据网友评测,整机功耗维持在40W左右,意味着每天的耗电量在一度左右,一个月的电费仅10-20元,阿Q一点,用来下电影,至少比买光盘还是便宜很多。另外还有一点没有考虑周全,原以为整机只有电源和CPU风扇会很静音,但无情的现实再一次打击了我,电源风扇的噪音比我预期的大很多,只能今后再考虑外置DC+内置电源模块的方案。
同期入手的还有戴尔E2210H显示器和麦博M400音响,都属于中低端型号,选这两款产品仅仅是出于够用和省钱的目的,并没有报太大期望,事实上表现也中规中矩,没有失望也没有惊喜。但键盘的购买就显得有点失算,习惯了ThinkPad的小红点,已经非常不习惯在使用键盘的时候还要把手挪开键盘区去使用鼠标,这也只能在今后考虑Think的外置键盘。
由于屋里有两台笔记本和一台台式机以及NDS、手机等带WIFI的设备,路由器的选择也是考虑了很长一段时间,首先从接口上来说,必须是有线无线都要支持;其次以可折腾的角度出发,要能刷DD,番茄之类的第三方固件;再者从速度考虑,300M的11N也是必须的,再综合性价比,外观,评价等因素,最终选择了Buffalo WHR-G300N。
HTC Magic(G2)是我使用的第一款带WIFI的手机,虽然之前的Treo680尚能服役,但不能WIFI一直是我对其最不满意的一点,空有一个320*320的大屏幕(相比大部分WM手机的320*240),但却无用武之地。而自08年G1发布以来,Android系统一直被市场及开发商所看好,搭载其系统的手机、上网本产品层出不穷,大有一统江湖的气势,而其Linux与Google的双重背景也使得市场对其异常关注。经过两个月的使用,也证明了当初选择这款手机(系统)是相当的明智,虽然目前的系统不够完善,应用软件也不够丰富,但从市场、软硬件厂商对其的关注度和支持度的数据来看,一直都是红线飙升的强劲势头。而使用JAVA语言,基于Eclipse的SDK开发环境,也使我能够很快的拾起JAVA,尝试手机开发。
前面都在说数码,近期也在重构新版的Framework,之前一直使用QuickPHP作为框架的名称,但无奈相关域名已被注册,并在这之后,也有同名框架问世,只得作罢,放弃这个已经用了4年的名称。新框架的名称已经确定:JoyPHP。同时,基于JoyPHP开发的个人服务器管理系统JoyCenter也在开发当中,目前JoyCenter进度还停留在架构和与JoyPHP的磨合阶段,只有一个比较简陋的模块用来测试:http://center.raychou.com/movie/一个用来预览文件夹内容的应用(数据是我的ATOM上的电影,请不要做压力测试,1M AD小水管经不起折腾~)。
杂记一则
无关乎开发,无关乎技术,今日来的一些琐事:
近日来系统频频假死,鼠标时常出现旋转的漏斗,但查遍系统记录无果,几欲放弃排查而重装系统。意外发现问题的元凶竟然是搜狗输入法,仅在4.2C版有这个Bug,更新4.2D或退回老版本即可解决问题。
从GoogleReader的统计信息看,在其的订阅用户已经接近100,而Feedsky仅仅显示有60,并且数月来一直没有增加,这让我很奇怪。经排查,由于在一开始没有规划feed,造成现在有三个主要Feed源,从4月开始,对外只提供feed.raychou.com这个源,通过cname指到Feedsky,而其并没有统计到这个url的订阅信息(似乎仅针对GoogleReader)。无奈,取消cname,改为302跳转,然后即可正常统计。
新网又受攻击,DNS全挂,波及本博客,开始考虑是不是要更换DNS服务商。
公司即将搬家,即将搬到一个更加宽阔和舒适的工作环境。但是,路程也更远了,又得继续起早摸黑的日子了。
最近数码置入计划的内容很丰富,但是钱包却恰恰相反,只能慢慢来,从长计议。
杂记么,确实很杂。
PHP连贯接口
什么是连贯接口?经常用jQuery的朋友一定对下面的代码非常熟悉:
$('div').find('element').hide();
像上面这样,在一个方法后直接调用另一个同级方法,我们习惯上称其连贯接口。
连贯接口有什么好处呢?拿我们常用的工厂模式来举例:
$sql= new Joy_Db_SqlBuilder(); $sql->select(); $sql->table('test'); $sql->where('id' , '=' , '1');
换成连贯接口来实现的代码会是怎样呢?
$sql= new Joy_Db_SqlBuilder(); $sql->select() ->table('test') ->where('id' , '=' , '1');
可以看到在上面的代码中,相对以往的工厂模式的写法,使用连贯接口能稍微节省一些代码量,并且,代码逻辑性也更强。
如何实现连贯接口呢?这里我引用JoyPHP中的一段代码
class Joy_Db_SqlBuilder { /** * select方法 * * @return Joy_Db_SqlBuilder */ public function select() { $this->_args = array('method'=>'select'); return $this; } /** * 定义所用的表名 * * @param string $name * @param string $alias * @return Joy_Db_SqlBuilder|string */ public function table() { // @todo something // 返回this,实现连贯接口 return $this; } }
从代码中可以看到,每个方法都返回了$this,而$this表示的正式Joy_Db_SqlBuilder的实例,因此才可以继续调用其方法。
连贯接口很简单,写起来也很美,但是却遇到一个棘手的问题,类似ZendStudio,Eclipse之类的IDE似乎并不支持连贯接口的自动提示?其实结局的方法也很简单,只要像上面的代码注释那样,遵循PHPDoc的代码注释规范,在@return后注明返回的对象类型,这些IDE也同样能实现自动提示。

jQuery投票插件RaterStar顺利毕业
![]()
RaterStar是一年多前,在做三宝殿项目时开发的一个基于jQuery的投票插件,之后也得到了很多网友的关注和建议,让这个插件在一年多的时间内得以不断完善。
在实验室上线后,一直就考虑要将ReterStar加入到其中,但因为当初在写这个插件时,对jQuery并不是很熟悉,部分代码写得并不是很好,所以打算将其重写后再发布。
目前RaterStar已从Demo转移到Labs。新版的RaterStar在实现原版功能的基础上,更增加了一些实用的方法和参数,目前已经实现的功能如下:
- 自定义默认值
- 可设置是否可以更改默认值
- 自定义星星个数
- 自定义星星图片 NEW!
- 自定义起止值,递增步长
- 支持AJAX
- 自定义事件(目前支持点击后、AJAX请求之前,AJAX请求成功三种情况的事件触发)NEW!
- 自定义AJAX请求方式(POST/GET) NEW!
- 自定义鼠标悬停Title NEW!
更多的功能将在以后逐步完善,也欢迎大家给建议。
