你是不是有强迫症
星期四, 七月 29th, 2010突然发现,我竟然有强迫症倾向。症状是,常在桌面毫无意义的使用刷新功能;常在putty下重复执行cd和ls命令;总是在汉字输入后要进行输入法切换。哎,我的个神。。
当下列一条或一条以上的症状持续存在影响正常生活时,可能有强迫症:
经常对病菌和各种疾病敏感,并毫无必要的担心;
经常反复洗手而且洗手的时间很长,超过正常所需要;
有时会毫无原因的重复相同的话语好几次;
觉得自己穿衣,清洗,吃饭,走路时要遵循特殊的顺序;
经常没有必要地反复做某些事情,例如检查门窗,开关,煤气,钱物,文件,表格,信件等;
对自己做的大多数事情都要产生怀疑;
经常不自觉地去想一些不愉快的回忆或想法,使人不能摆脱;
经常认为自己的细小的差错就会引起灾难性的后果;
时常无原因地担心自己患了某种疾病;
时常无原因地计数或多次吟唱某一段歌曲;
在某些场合,很害怕做出尴尬的事;
当看到刀,匕首和其他尖锐物品时会感到心烦意乱;
为要完全记住一些不重要的事情而困扰;
有时会毫无原因的破坏某些物品,或伤害他人;
在某些场合,即使当时生病了,也想暴食一顿;
当听到自杀,犯罪或生病这类事情时,会心烦意乱很长时间,很难不去想它。
This Time For Africa
星期一, 六月 28th, 2010昨晚在大屏幕看到一个美女,唱了首人间,还有一首歌很不错,可惜没记住名字。遗憾的是不太喜欢表演完她竟然在下边抽起烟来,有点小失望
开始android之旅
星期天, 六月 13th, 2010入手htc desire,开始android之旅:
我希望的世界
星期天, 五月 23rd, 2010读高中的时候,“新概念”作文正是开始的时候,记忆特别深刻,第一名的作者是某校的“韩寒”,作文名字叫杯中窥人,当时就专门买了本新概念作文回来,就为了看一下这篇文章,一看才知原来自己才疏学浅到如此地步。
10年后,那个叫韩寒的成了全球最有影响力的人物之一。前几天韩寒发表的这段话我又开始记忆深刻了:
“不通过房地产或者卖地,不通过低端的加工业,一样有高GDP,而且是人均。好人不翻墙,坏人进监狱,有影响世界的文化,有别国模仿的文艺,一样干净的环境,一样自由的空气,看着被关进笼子的权力,把酒言欢,言无不尽。”
思考的时间
星期二, 五月 18th, 2010如果一天花两个小时在公交车上度过,思考的时间就来了。我很庆幸终于有时间思考一下我原本感兴趣却没时间思考的问题了。
无语
星期五, 四月 30th, 2010感冒,去诊所拿了一堆药,回来一看,里面赫然躺着一瓶眼药水。
tnnd!
中国移动飞信通信协议分析
星期二, 四月 13th, 2010作者:刘华栋 2010.4.13
本文目的在于探讨学习,请勿用于非学习外的任何用途,否则后果自负。
出于某些需求,要用到手机短信提醒功能,自然还是免费的好。网上流传了很多版本关于飞信的通信协议,大同小异(基本都是基于2.0的,飞信现在2010协议版本为4.0),当飞信更新了一部分协议内容时,这些流行的协议似乎有些问题出现,最典型的就是:
新版本飞信协议支持输入任何飞信号码,只要是发送者好友,即可发送手机短信。
新旧版本都支持发送登陆者自身手机号码为接收手机的短信。
如果我有100个飞信好友,莫非我要记住100个飞信号码?如果我要提供一个飞信接口给大伙,莫非大伙要记住他们好友的飞信号码?
当然,写本文的目的就在于从根本上解决上述两个问题(其实是一回事)。
通过对飞信协议多个版本进行了抓包分析,发现数据包格式没什么大的变化。唯一重要的变化是第五行:
F:88888888
I: 10
Q: 2 M
T: sip:99999999@fetion.com.cn;p=640
//上面一行旧版本协议这里是:
//T: tel:13599999999
C: text/plain
K: SaveHistory
L: 4
这里就出现一个问题,要想发送手机短信,提交过来手机号不行,需要提交手机号对应的飞信号码才能识别,如何才能把手机号码转换为飞信号码就是解决问题的关键。经对新协议抓包分析,发现并不能直接从手机号码转换成飞信号码,但是中间有一个很不错的变量叫做”user-id”,每个手机号对应一个飞信号码,同样对应每个user-id(至于为什么会多出来一个user-id,我想可能是飞信公司准备把飞信号码当做一种商业资源来使用吧)。其实我们用户的真正的飞信号码是这个user-id,所谓飞信号码,无非是一个数字昵称(another nickname)而已。明白这些,问题就好办了:
2.发送请求好友列表信息(登陆后自动完成);
3.匹配1中user-id,对应的飞信号码(注意格式:fetion_num@fetion.com.cn);
4.发送飞信号码、短信内容,Done
具体代码省略,关键正则函数:
function get_fetion_id($userid, $rst) {
preg_match("/ri=\"sip:(\d{6,10}+)@fetion.com.cn;p=(\d{0,6}+)\"
user-id=\"$userid/i",$rst, $matches);
//同理重构函数获取user-id
//preg_match("/user-id=\"([0-9]+)\"/i", $rst, $matches);
return $matches[1];
}
这样同样还会存在一个问题:给自己手机号码发送的时候转换不到自己的自己的user-id。解决办法也很简单,只需要在手机号码提交过来最初判断一下是否为登陆号码即可,如果是,取消所有转换,直接进行第4步骤即可发送。
纸上谈兵无用,演示:
Demo1:http://www.liuhuadong.com/phoneme
Demo2:http://labs.liuhuadong.com/cmcc/index.php(暂无,睡醒后继续)
QQREADERC927A243851272DC
加上一个百度新闻和淘宝搜索
星期六, 四月 10th, 2010博客增加一个百度关于google nexus one的新闻,和一个淘宝搜索推广,没什么实际意义。
面试经历
星期四, 三月 11th, 2010一直认为在这个城市里面,没有多少php人才,直到昨天面试,发现一个问题竟然是从来没听说过的名词,巨受打击。
一:康盛ucenter跨域登陆的实现方式;
http协议头部分加入P3P(第一次听说这个名词)。至于p3p是什么,阅读这里。g了下发现国内对此技术关注并不是很高,只查到网易通行证在不同域登陆时采用了此;当然还有ucenter。
二:操作ucenter中实例实现同步登陆。
这个以前遇到过,只是没有总结。面试时一直把重点放在了解决通信正常的问题上,其实这完全不是重点。回来后网上查了很多此问题的解决方案,大多都不靠谱,正确解决方案应该是这样:实例ucexample_1.php中有获取cookie函数
,这里面的Example_auth没有被赋值,所以不会被synlogin同步,赋值即可。解决方法有两种,都很简单,一是修改ucexample_1.php文件,把$_COOKIE['Example_auth']换成$_COOKIE['auth'],这里的auth是另外应用的cookie设置的值;
* 获取当前用户的 UID 和 用户名
* Cookie 解密直接用 uc_authcode 函数,用户使用自己的函数
*/
if(!empty($_COOKIE['auth'])) {
list($Example_uid, $Example_username) = explode("\t", uc_authcode($_COOKIE['auth'], 'DECODE'));
} else {
$Example_uid = $Example_username = '';
}
二是修改同步应用的uc.php,在synlogin里面新增一个cookie赋值语句:
两种方法其实是一回事。
回顾这两个问题,发现这两个问题不是一般php人能问的出来的,所以,莫非提问题的那位是康盛的人??无论怎么说,这次面试给我留下了相当深刻的印象,让我学到了一些东西,也思考到很多东西,记之。