使用 Chrome 开发者工具校验 XPath

使用 XPath 提取页面内容时,如何快速校验规则有效性呢?

此前曾尝试找寻相关的插件,但是使用的体验很糟糕,于是便使用 PHP 调试校验。

最近发现原来 Chrome 开发者工具自带 XPath 校验功能。

  • 方案一:元素面板的查询功能支持 XPath 规则
  • 方案二:控制台中使用内置函数 $x(xpath[, startNode])

来源:Stack Overflow

PHP is_array()

同事维护的站点遇到一个SQL注入漏洞,最后发现是由于对in_array()的理解错误(一直以为是绝对匹配才会返回true),同时拼接SQL语句时也没有使用Prepared Statement导致。代码中使用in_array($var, $white_set)判断从Query String获得的变量是否符合要求,参见下面示例代码($var为一整型变量,取用时没有使用intval($var)或者(int)$var强制转换为整型)。

$white_set = array(11, 13, 16);
$var = $_GET['var'];
if (in_array($var, $white_set)) {
$query = ‘ … column = ‘ . $var . ‘ … ‘;

}

访问http://www.example.com/path/to?var=16′ and ‘x’='时,$var=16′ and ‘x’=',使用in_array($var, $white_set)判断会得到true,因为in_array的第三个参数默认为false,此时在依次比较$var和$white_set中的元素会进行类型转换,相当于使用==进行比较;如果第三个参数为true,则相当于使用===进行比较,两个变量只有完全一致才会返回true。

总结:in_array()第三个参数决定变量和数组中元素如何进行比较。值为false时(默认),相当于==;值为true时,相当于===。

ThinkPad E430小记

在淘宝聚划算上看到了ThinkPad E430的团购信息,再次勾起了我给自己购买个新笔记本的念头,在京东上搜了一圈之后,发现E430的配置还是挺不错的,3899的价钱比京东上便宜多了,最终决定购买之。

天猫物流,到货很快的说。

E430的外观改变了此前ThinkPad给我留下的四四方方、棱角分明的印象,更具现代感。键盘也不是传统的ThinkPad风格,变为新潮的巧克力键盘。屏幕的高度比我的HP 6531s短,对比后发现E430的长宽比更好,16:9。屏幕的清晰度也很好,比我的老化的6531s显示器和外接显示器好多了。

默认的系统是定制版Ubuntu 11.10,感觉很不好,重装为Ubuntu 12.04 AMD64版本,虽然默认只有2G内存,不过已经购买了8G内存的说。安装12.04也折腾了很久的说,来来回回刻录了好多次U盘安装盘,怎么都不好使,后来才发现10.10之后使用UltraISO直接刻录无法使用,UltraISO刻录后必须修改某个参数或者使用官网推荐的方法刻录才可行。

下面开始吐槽的说。

吐槽

最上面一排按键竟然默认是功能键的,组合Fn才是F1-F12,而F1-F12才是我比较常用的按键。(习惯之,或者找找看有没有改键程序的说)

E430的做工不够精细,不和同事的MBP/MBA比较了,连我的HP 6531s都不如。触控板有些松动,网上说这是通病。右下方的右键在Ubuntu系统下同左键效果。机体正面的棱角很“锋利”,我极度怀疑某天我不小心可能会被划伤。

CapsLock没有指示灯。

电池也很“坑爹”的说,回到家后才发现接通电源一下午,电量的最大值竟然还是39%,试验了下,发现少于39%会充电,到达39%又停止了。网上搜索的下,可能电池是坏的。第二天联系了客服经过了神奇的步骤后才激活电池的充电功能,干!(激活步骤后面会提及。)

神奇的步骤

  1. 关机,拔下电源,拔出电池。
  2. 插上电源,开机。
  3. 关机,拔下电源。
  4. 插上电池,插上电源。(这时候应该能看到电池显示灯亮,表示已经能正常充电啦!)
  5. 开机。(会显示“电源已接通,正充电”。)

PS:结合前两次购买笔记本的经验,发现京东上至少笔记本的价钱并不低。内存好像也是,三星黑金刚4G亚马逊的价钱更低,另外这次京东竟然不支持货到付款,同时由于京东不支持支付宝,提高了付款的门槛,果断转到亚马逊购买的说。最后,我决定成为“京东黑”的说。

PPS:此前购买护具,因为检查疏漏,过了几天真正使用时才发现其中一个有个裂口,感觉不影响使用也就没去申诉的说。于是这次购物就没有在收到货物后立即付款,感觉这才是在淘宝购物的正确的方法的说。

天寓书友会第一次线上活动记事

死宅了很久,觉得周末需要找些事情做,主要是要走出去多和他人交流,免得到时候连交流都不会了,找不到妹子的原因一定出在自己身上(即使现在不找,将来也是要找的嘛)。

于是昨天逛了逛豆瓣同城,希望找到个活动参与进去。虽然有不少小组比较有意思,比如不以婚姻为目的的去爱,但哥是个闷骚的人,不好意思去参加。另外,我对书友会比较情有独钟,于是最终选择了天寓书友会(因为地址是滨江),加入了QQ群(161667557,管理员@camomile是名老师的说)。基于上面提及的原因,我的内心火热起来了,破例登陆了很久不大用的QQ,并长时间保持登陆(当然隐身是肯定的)。

今天和@camomile一起交流如何组织活动,最终决定先尝试下线上“直播”的方式,以后有机会在组织线下活动。虽然我感觉这种文字直播是一种很怪异的方式,成员之间如何互动呢?写一篇读书笔记不就可以了吗?不过既然是尝试,看具体的效果吧。于是就晚上8点的时候直播进行了。

@camomile今天分享的是《寻路中国》,我没有看过,豆瓣上评分高达9.1的说,可见很值得值得一看的说。这是一篇外国人从普通国人的视角对中国改革开放以来的发展以及中国的一些传统的的看法。这不是一本游记,是一本社会纪实书籍,类似的书有《巨流河》和《夹边沟记事》,《巨流河》我看过两章,《夹边沟记事》看过阮一峰的书摘。感觉有时间这种类型的书还是值得一读的。在@camomile分享的过程中@肖遥也穿插着不少有价值的言论,让阅读量很少的浅薄的我自惭形秽啊。

第一次现场直播已经结束后,感觉还是不错的,我想如果大家积极些,也许排期要排很久的说。总的来说还是比较期待以后有机会组织线下的交流活动。我预定了下一次直播,主题是间隔年(Gap Year)。届时我会分享《我睡了81个人的沙发》和《迟到的间隔年》这两本书的内容。

Gap Year是一个舶来的概念,在国外的表达形式往往是不同阶段之间的旅游,这又分两种:1)是已经结束的上一段和已经确定的下一段时间存在Gap,2)是已经结束的上一段和未知的未来之间的Gap。-by- @肖遥

第一种Gap是自然发生的,比如暑假,第二种Gap是人为营造的。好吧,我已经没有自然发生的Gap,只好到时准备下自己的迟到的间隔年,不过能够实际成行还要看到时我的状态,因为我认为:如果知道了自己想要什么,也许就不用这个过程了。

总结:感觉这种活动还是很不错的,可以促进我去读更多的书,更多的和他人进行交流,结识更多的人。希望我能够保持热情的说,找个口好吧:为了妹子,哇咔咔 ;-)

PS:其实目前我认为自己最喜欢的是小型的技术交流活动,但是不知道那里能够找到附近组织或者分舵。

PPS:也许过段时间我可以尝试自己组织些技术交流活动的说,不过时间需要进行协调的说。

两种思考方式

今天下午来自淘宝的@kimihuang给我们普及了一些互联网广告的知识,有些收获。

不过这篇文章将不涉及@kimihuang分享的主要内容,而是由其分享的一种赚钱的故事引发的我的思考。

创建一个新的网站,没有流量,怎么赚钱呢?
通过AdWords购买较低的价位的关键词引入流量,再通过AdSense在网站上投放单次点击价位较高的广告,赚取之间的差价。

下午听到这个故事时,我的第一个反应就是:这种在国内是行不通的,因为国内的单次点击价位太低了(只是听说,没有实际了解过)。

晚上回来后想想,也许还种思考方式会更好:这确实是一种不错的赚钱的方式,不过需要解决一些关键的问题。

  • 哪些低价位的关键词能够带来流量?
  • 带来的流量属于什么类型的人群?
  • 他们喜欢什么类型的高价位广告?
  • 靠什么内容来吸引导入的用户停留下来,并点击广告?
  • 如果解决国内广告单次点击价位偏低的问题?
  • ……

通过以上的问题,我的结论是:这种方式不是那么好赚钱的,否则很多人早就这么干了。

虽然通过以上两种思考方式得到的最终结论是一样的,但是后一种思考方式是一种努力的结果,而不是一上来就否决(虽然有时直觉也是很有效的决策手段)。

PS:@kimihuang 应该是Tanx的产品负责人吧(应当是靠谱的猜测)。

PPS:@kimihuang的微博

一个人 vs. 两个人

某日工位相邻的同事去见丈母娘去了,午饭时和其他同事在电梯里的聊天记录如下:

……
我:感觉一个人挺好的
同事:两个人会更好

是不是这样呢?要不要知足常乐呢?……


最近看了古典的《拆掉思维里的墙》,其中有一节——“不要只和要结婚的人谈恋爱”[1]。感觉这节开始部分的故事里的类比很有意思:

  • 天真到认为可以一见钟情的小男生 <-> 天真懵懂,刚刚毕业,觉得自己会在一家公司干一辈子的员工;
  • 觉得结婚就行的老男人 <-> 身心疲惫,希望自己随便找一家公司干下去的“老油条”;
  • 觉得反正承偌又不上税的大忽悠 <-> 觉得反正先干着,大不了付一点违约金的员工;

抱着“只和可以结婚的人谈恋爱”的想法和“我只选择做要从事一辈子的工作”的心智模式一样。后者我知道自己的答案是什么,虽然我的目标是找到可以从事一辈子的工作,但是实际上知道目前我还在不断摸索中,改变着。类推到前者我大致知道了答案。

对于个人兴趣方面,我的观点是多尝试才能够找到真正喜欢的。尝试总是冒险的,而不尝试是最大的冒险。感情方面应该也是一样的,看来我应该转变观念,大胆尝试一下的说。

从哪里开始呢?

[1]:我买这本书的原因之一就是被这个标题吸引了,不过买回来之后发现就只有那么一节。

It’s My Life

很喜欢这首歌,Bon Jovi嘶哑的声音与有感觉的歌词。


This ain’t a song for the broken-hearted
这不是一首给伤心人的歌
No silent prayer for the faith-departed
没有为失去信仰者的默祷
I ain’t gonna be just a face in the crowd
我不希望自己只是芸芸众生之一
You’re gonna hear my voice
你将会听到我的声音
When I shout it out loud
当我大声呐喊出来

Chorus:
It’s my life
这是我的人生
It’s now or never
把握现在,机会稍纵即逝
I ain’t gonna live forever
我不希望长生不死
I just want to live while I’m alive
我只想趁活著得时候认真的生活
(It’s my life)
(这是我的人生)
My heart is like an open highway
我的心像是开放的高速公路
Like Frankie said
就像法兰克辛那屈唱的:
I did it my way
我走自己的路
I just wanna live while I’m alive
我只想趁活著的时候认真的生活
It’s my life
这是我的人生

This is for the ones who stood their ground
这是为坚守信念的人们而唱
For Tommy and Gina who never backed down
为从不退缩的汤米和吉娜而唱
Tomorrow’s getting harder make no mistake
毫无疑问的,未来日趋艰辛
Luck ain’t even lucky
幸运不再幸运
Got to make your own breaks
你必须自己寻求突破

Chorus:
It’s my life
这是我的人生
It’s now or never
把握现在,机会稍纵即逝
I ain’t gonna live forever
我不希望长生不死
I just want to live while I’m alive
我只想趁活著得时候认真的生活
(It’s my life)
(这是我的人生)
My heart is like an open highway
我的心像是开放的高速公路
Like Frankie said
就像法兰克辛那屈唱的:
I did it my way
我走自己的路
I just wanna live while I’m alive
我只想趁活著的时候认真的生活
‘Cause it’s my life
这是我的人生

Better stand tall when they’re calling you out
当别人找你麻烦,挺直身子
Don’t bend, don’t break, baby, don’t back down
不要屈服,不要放弃,宝贝,不要畏缩

Chorus:
It’s my life
这是我的人生
It’s now or never
把握现在,机会稍纵即逝
I ain’t gonna live forever
我不希望长生不死
I just want to live while I’m alive
我只想趁活著得时候认真的生活
(It’s my life)
(这是我的人生)
My heart is like an open highway
我的心像是开放的高速公路
Like Frankie said
就像法兰克辛那屈唱的:
I did it my way
我走自己的路
I just wanna live while I’m alive
我只想趁活著的时候认真的生活

Chorus:
It’s my life
这是我的人生
It’s now or never
把握现在,机会稍纵即逝
I ain’t gonna live forever
我不希望长生不死
I just want to live while I’m alive
我只想趁活著得时候认真的生活
(It’s my life)
(这是我的人生)
My heart is like an open highway
我的心像是开放的高速公路
Like Frankie said
就像法兰克辛那屈唱的:
I did it my way
我走自己的路
I just wanna live while I’m alive
我只想趁活著的时候认真的生活
‘Cause it’s my life
这是我的人生