生活在远方

是的,因为真正的生活是在远方

Archive for February, 2010

在MySQL中按照当地时间的时段、星期几统计

缘起 BT群创建了一个基于status.net的话痨群。我一时手痒,做了个后台,进行一个基本的统计。比如:一天24个时段中每个时段的话痨数量、一周7天中每天的话痨数量等。 这些统计都是要用到基于时间的统计。 我先看了一下后台数据库,我们所使用的这个服务程序将“话痨”贴存放在notice表格中,用字段created来记录。不过它记录的是GMT时间(或者说UTC)时间。这个时间和北京时间存在着8个小时的时差,会造成时段统计的偏移和周内统计的偏移。例如,我在20号上午7点发的话痨,会被储存为19号23时发布的。 一开始,我是用调整服务程序的时区来解决的。虽然在部分程度上解决了“本站点”的问题,但是造成了其他各位BT使用的客户端无法正确获得时间的问题。这个后果是严重的。 解决方案 解决方案只能从MySQL里面去找。通过查阅MySQL参考手册,发现了这么个函数: CONVERT_TZ(dt,from_tz,to_tz) 通过这个函数就可以将一个时区的时间转换到另外一个时间。 于是,相应的按照时段统计的SQL语句就是: SELECT COUNT(*) nc, HOUR(convert_tz(created, ‘$stz’,'$etz’ )) dh FROM notice GROUP BY dh 其中的$stz和$etz是两个时区的时间偏移。在本程序中,用的是’+00:00′和’+08:00′。 经过调试,成功! 题外话 在CodeIgniter中,如果使用内置的helper函数来生成SQL语句,那么会不成功。提示生成的SQL有错误,或者是找不到’+00:00′这个字段。 解决方法是,改写model中的查询过程为: public function getNoticeCountHour() { $stz=’+00:00′; $etz=’+08:00′;   $selectsql="select count(*) nc, hour(convert_tz(created, ‘$stz’,'$etz’ )) dh from notice group by dh";   //下面的代码无法执行 //$this->db->select("count( *  ) nc, hour(convert_tz(created, ‘$stz’,'$etz’ ) [...]

Read the rest of this entry »

用Nexus One来写WordPress的博客

刚入手的N1,于是自然而然开始试用各类软件。这篇文章就是用Wordpress for Android写的。还行! 只是它和WP2Laconica插件不兼容。如果选择在Wordpress for Android中“Publish”的话,会crash这个软件。但是post已经成功发布,只是由WP2Laconic创建的uri会不完整,而push到我的话痨站点的推也会不完整。 已经向WP官方报告了这个问题。 我个人认为,这个问题不算太大——毕竟用手机写博客很累,而如果真有这样的情况,先放一个draft上去也是不错的做法。

Read the rest of this entry »

天堂可有猫的乐园?

首先感谢BT群的各位BT,在第一时间知道老猫走了之后,都表示了深刻的哀恸和怀念。谢谢你们。 我是昨天晚上才知道老猫不行了的。我确实很粗心。老猫在春节前就开始急剧消瘦,我一直没有当回事,一直以为他是因为天气太冷不肯吃东西。前两天一直没有看到他,也没有在意,因为他也有过出走的经历。直到昨天晚上,太子才问我,老猫怎么回事?外婆才告诉我,老猫一直躺在他平日根本不屑一顾的猫笼里,一动不动了两天了。我看到他的时候,直觉已经告诉我,他不行了。我于是将他移到一条毯子上,让他能稍微舒服一些。他大概是用尽了最后的力气对我嚎了几声——我知道他是想“喵”几声的,我也愿意相信他是在谢谢我。 今天凌晨大概3、4点的时候,老猫托梦给我了。我梦见瘦瘦的他钻进了那条毯子里,等我打开毯子一看,却发现一只同样有着黄白相间花纹但却壮实无比的大猫。我当时还没有意识到这是个梦,心里还是欢欣了一阵。等我意识到那不过是个梦的时候,我知道老猫已经走了。 早上6点起来我去看他。是的,他已经走了。我在猫笼前放了一碟清水,一点猫粮,算是对他的祭奠。 ======

Read the rest of this entry »

CI做了一个简单的后台

昨天用CodeIgniter随手开发了一个BT群的统计后台。从下载到初步跑起来——我原来只用过Symfony,从来没有用过CI——用了差不多1个小时。还算是很快的。 CI的设置比Symfony简单多了,一个包压缩到你想作为WEB根目录的目录下就可以了。这对轻量级、快速开发而言是非常实用的。 它的M/V/C架构也很清晰。 在C的层次,虽然可以使用route来配置pretty uri,但是你不用的话也可以很“自然”的在各个controller里飞快的搭建各种路径;在V的层次,我目前的实践还没有用到嵌套模板、子模板,相信是有的。不过貌似在V中,对CSS连接路径的判断有些不直观,有待继续验证;在M层次,比Symfony简单多了,它基本舍弃了OO方式,而只是提供了一种方法来让用户定义一些M中的方法而返回数据集,然后再经由C传递到V中进行渲染。 我对CI的应用目前就到此为止。等有了新的体会再共享吧……

Read the rest of this entry »

【一日一得】学习英文新单词

今天从饮水思源的joke版学到了几个新的英文单词,与诸君共享。这个是目前比较全的版本,富有中国特色。 Smilence: 笑而不语 Democrazy: 痴心妄想 Togayther: 终成眷属 Freedamn: 天朝网络自由——个人认为这个最强 Shitizen: p民——这个也很强 animale: 男人天性 Innernet: 中国互联网 Departyment: (政府)有关部门 suihide: 躲猫猫 corpspend: 捞尸费 Chinsumer: 在国外疯狂购物的中国人 Emotionormal: 情绪稳定 Sexretary: 女秘书 Halfyuan: 五毛 canclensor: 审查 circusee: 围观 仅此立照,在今日的中国,saduation(我也自己造一个:悲惨的情况)就是酱紫的。

Read the rest of this entry »

WordPress下的Laconica Plugin

随着www.bspmq.com的服务的建立,我找到了这个plugin,可以让我在Wordpress里发表一篇文章后,自动推一条消息到www.bspmq.com里去,这样大家都可以在第一时间知道我发布了新文章。 配置的时候要注意几点: 用户名直接写你注册的名字,不要写@www.bspmq.com; 服务写:www.bspmq.com,不要加http://,也不要加/api。 这样就可以了。

Read the rest of this entry »

话痨是第一生产力

人总是想说话,更重要的是,还要有人听。于是这个世界上,有了blog……可是,写blog还是太麻烦,于是又出现了microblog…… BT群在一起话痨的日子也不短了,Google Talk一直是首选的工具。但是,Google Talk那不靠谱的侧漏问题,令广大BT痛苦异常。pMq不得不学起PHP,为BT群创建了一个在线的聊天查看记录…… 在我看来,一个好的microblog需要能做到: 必须有WEB界面。在公司里上网会受到很多限制,WEB界面的存在,将是上网话痨的last resort; 必须能得到一些常用桌面端的支持。老是刷WEB界面也是很无趣的。我们需要一些push的技术; 于是,在BT群忍受了N久日子后,昨天肾上在www.bspmq.com上安装了著名的microblog开源软件:status.net。安装完毕后,又和Twirhl进行了互通。可喜的是,Twirhl在公司里也能用的…… 我们创建这个mb的目的,只是为了BT……同时,在mb的配置等方面能有更大的自由度。比如:过一段时间,等所有的BT都进了之后,就可以封闭这个群…… BT群的话痨,从此进入了一个新的epoch……

Read the rest of this entry »