使用 Chrome 开发者工具校验 XPath

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

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

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

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

来源:Stack Overflow

人生的意义-20160616

早上骑行上班的路上,听了「流行通信」的「#47 留学和世界眼光——四人醉聊」,其中有听到「人生的意义」这个词汇,四位主播中的「刘佳」是哥大天文系的博士生,也是困惑于这样的问题,在转到天文系前,尝试了很多的专业方向,《圣经》也无法提供寄托,最终觉得天文学对于宇宙的研究可能会帮助解答自己的困惑,以及对天文学感兴趣,进而转系。

端午节前,在上海逗留了几天,期间和刘白光、Larry Zhao 聊了聊,因缘际会翻看了刘白光在简书的文章,对于「意义」,他也在不停地思考。他的「关于意义」一文汇总了过去几年中,他对于意义的思考。

前段时间,看了《世界为何存在》前几章,该书对「为什么存在万物而非一无所有?」这个问题进行了探讨。第一章中介绍了不同领域的巨人对于这个问题的看法,并没有一个统一的解答。

综上,一个终极的准确的解答目前是不存在的。宇宙之谜、生物之谜、存在之谜、知识的边界等等,仍需人们进一步探索、发现和总结。

在此之前,我们不能因为没有找到答案,而陷入「虚无」(虚无用在这里是否准确不得而知),不要极端、不要轻生、不要颓废,以积极的心态面对生活。

> Don’t Panic

在这样的背景下,对于意义的探讨将回归到个人,保持好奇心和开放的心态,去「跨过山和大海」,去「穿过人山人海」。

最后,以胡适在「人生有何意义」中的一句话结尾:

> 生命本没有意义,你要能给他什么意义,他就有什么意义。与其终日冥想人生有何意义,不如试用此生作点有意义的事……

-EOF-

Git – 合并冲突时,撤销合并

执行合并操作时,遇到冲突,暂时又不想解决冲突,可以通过以下命令撤销合并:

最新版本时:

git merge --abort

版本早于 1.7.4 时:

git reset --merge

版本早于 1.6.2 时:

git reset --hard

注:git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present.

参考链接

Composer 版本号

我们在开发过程中使用到许多第三方库,需要在composer.json中指明依赖库版本规则来安装恰当的包。

Composer 推荐的版本规则是语义化版本,版本格式:主版本号.次版本号.修订号,版本号递增规则如下:

  • 主版本号:当你做了不兼容的 API 修改
  • 次版本号:当你做了向下兼容的功能性新增
  • 修订号:当你做了向下兼容的问题修正

基本约束

具体版本

安装指明的具体版本,如果其他依赖包需要不同的版本,安装或更新过程将失败。

  • 1.2.3

范围

使用比较运算符指明有效版本范围。可用操作符如下:>>=<<=!=

可以定义多个范围,使用空格( )或者逗号(,)分隔的范围当做逻辑与操作,使用双管道(||)分隔的范围当做逻辑或操作。

  • >=1.0
  • >=1.0 <2.0
  • >=1.0 <1.1 || >=1.2

带连字符的范围

非完整的版本号会用通配符补全,比如 2.0 补全为 2.0.*

  • 1.0 - 2.0 等价于 >=1.0 <2.1
  • 1.0.0 - 2.1.0 等价于 >=1.0.0 <=2.1.0

通配符

可以在版本号中使用通配符(*)。

  • 1.0.* 等价于 >=1.0 <1.1

下一个重要版本

对于遵循语义化版本的项目,波浪号和脱字符提供更加简介的表达。

波浪号(~)

波浪号常用于标记依赖包的最小版本。可以理解为波浪号标记依赖包的最低版本,并允许版本号最后一位数字增加(不适用于主版本号)。

  • ~1.2 等价于 >=1.2 <2.0.0
  • ~1.2.3 等价于 >=1.2.3 <1.3.0

脱字符(^)

脱字符的行为和波浪号类似,但更强调语义化版本,总是允许向后兼容的更新。

  • ^1.2.3 等价于 >=1.2.3 <2.0.0

不过,对于早于1.0的版本,脱字符处理逻辑如下:

  • ^0.3 等价于 >=0.3 <0.4

注:为了最大化互操作性,对于库类型的项目,推荐使用脱字符声明依赖包的版本。

稳定性

如果版本约束中没有显式定义稳定性,Composer 内部会根据操作符的不同,默认附加 -dev 或者 -stable。如果你希望只安装稳定版本,请在使用 -stable 后缀。

约束 内部
1.2.3 =1.2.3-stable
>1.2 >1.2.0.0-stable
>=1.2 >=1.2.0.0-dev
>=1.2-stable >=1.2.0.0-stable
<1.3 <1.3.0.0-dev
<=1.3 <=1.3.0.0-stable
1 - 2 >=1.0.0.0-dev <3.0.0.0-dev
~1.3 >=1.3.0.0-dev <2.0.0.0-dev
1.4.* >=1.4.0.0-dev <1.5.0.0-dev

参考

Git 标签

标签是什么?

标签通常用于标记历史上一些重要的时刻,通常用于记录发布新版本。

列出所有的标签

git tag

列出匹配模式的标签

使用 Shell 通配符模式

git tag -l 'v1.*'

标签的2种类型与创建

  • 轻量级标签(lightweight)
  • 含注解标签(annotated)推荐

创建轻量级标签

git tag v1.2

创建含注解标签

git tag -a v1.3 -m "commit message"

查看标签详情

git show v1.3

创建指向提交的标签

有时忘记打标签了,不要怕,还有补救的方法。

git tag -a v1.3.1 <commit>

推送标签至远程仓库

推送单个标签

git push origin v1.3.1

推送全部标签

git push origin --tags

删除本地标签

git tag -d v1.3.1

删除远程标签

git push origin --delete tag v1.3.1
git push origin :refs/tags/v1.3.1

重命名标签

将 old 标签重命名为 new

git tag new old 
git tag -d old 
git push origin :refs/tags/old 
git push --tags

参考

日志分析时,如何获取匹配行和其后若干行的内容?

使用 grep 提供行上下文控制(Context Line Control)参数,可以轻松实现上述目标。
-A NUM, –after-context=NUM
Print NUM lines of trailing context after matching lines. Places a line containing a group separator (–) between contiguous groups of matches. With the -o or –only-matching option, this has no effect and a warning is given.

-B NUM, –before-context=NUM
Print NUM lines of leading context before matching lines. Places a line containing a group separator (–) between contiguous groups of matches. With the -o or –only-matching option, this has no effect and a warning is given.

-C NUM, -NUM, –context=NUM
Print NUM lines of output context. Places a line containing a group separator (–) between
contiguous groups of matches. With the -o or –only-matching option, this has no effect and a warning is given.

Quotes About Meaning Of Life

“You will never be happy if you continue to search for what happiness consists of. You will never live if you are looking for the meaning of life.”
― Albert Camus

“Life has no meaning. Each of us has meaning and we bring it to life. It is a waste to be asking the question when you are the answer.”
― Joseph Campbell

“I go to seek a Great Perhaps.”
― François Rabelais

“The best things in life make you sweaty.”
― Edgar Allan Poe

“The problem for us is not are our desires satisfied or not. The problem is how do we know what we desire.”
― Slavoj Žižek

more …