最近看了Ruan YiFeng写的Commit message 和 Change log 编写指南。 了解了如何写规范的commit message。

编写规范

先简要记录一下编写规范,这部分内容可以直接看Ruan YiFeng的博客,要比我写的详细。 编写规范里基本所有内容都来自于Ruan YiFeng的博客,这是我第一次,也是最后一次,在自己的博客里大规模的搬运其他博客的内容。

<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>

commit message包含三个部分,header, body和footer,其中header必须有,body和footer可以按情况省略。

type 字段

  • feat:新功能(feature)
  • fix:修补bug
  • docs:文档(documentation)
  • style: 格式(不影响代码运行的变动)
  • refactor:重构(即不是新增功能,也不是修改bug的代码变动)
  • test:增加测试
  • chore:构建过程或辅助工具的变动

scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。

也就是写用户会感觉到改变在哪个地方。

subject是 commit 目的的简短描述,不超过50个字符

  • 以动词开头,使用第一人称现在时,比如change,而不是changed或changes
  • 第一个字母小写
  • 结尾不加句号(.)

Body 部分是对本次 commit 的详细描述,可以分成多行

  • 使用第一人称现在时,比如使用change而不是changed或changes。
  • 应该说明代码变动的动机,以及与以前行为的对比。

Footer

  • 如果当前代码与上一个版本不兼容,则 Footer 部分以BREAKING CHANGE开头,后面是对变动的描述、以及变动理由和迁移方法。
  • 关闭 Issue

另外,也可以包括JIRA issue references或者其他actions。

Revert

这是一种特殊情况,为了撤销前面的操作。

如果当前 commit 用于撤销以前的 commit,则必须以revert:开头,后面跟着被撤销 Commit 的 Header。

revert: feat(pencil): add 'graphiteWidth' option

This reverts commit 667ecc1654a317a13331b17617d973392f415f02.

Body部分的格式是固定的,必须写成This reverts commit &lt;hash>.,其中的hash是被撤销 commit 的 SHA 标识符。 如果当前 commit 与被撤销的 commit,在同一个发布(release)里面, 那么它们都不会出现在 Change log 里面。如果两者在不同的发布,那么当前 commit,会出现在 Change log 的Reverts小标题下面。

https://github.com/yulijia/cn/commit/e36d3ee657107623ff3fffc4bf8aec4b26a9bac0

修改git message默认编辑器

说了这么多写作规范,如果有个模板可以直接拷贝,是再好不过的。

使用模板之前,先对git message的默认编辑器做个修改,默认的是nano,但这个软件我不会用。

用下面的命令,可以把默认编辑器改成vim:

git config core.editor "vim"

使用模板

我采用了Linell编写的模板

安装方式如下:

curl https://gist.githubusercontent.com/Linell/bd8100c4e04348c7966d/raw/84c0ea6e0f0a1431d406be6b7bb6e136949090cd/.git-commit-template.txt >> ~/.git-commit-template.txt
git config --global commit.template ~/.git-commit-template.txt

另外,在这里也提供一个中文的模板

curl https://gist.githubusercontent.com/yulijia/fe2522fe138b6ed41ff4/raw/5fa0007d1863f70cf4631f2dc1513c8676cd4ab8/.git-commit-template.txt >> ~/.git-commit-template.txt
git config --global commit.template ~/.git-commit-template.txt

实际使用截图如下:

Imgur

写博客的commit message应该怎么写?

这部分就是自娱自乐了。查看了一下自己写博客提交的message,基本分为四类:1.提交一篇/多篇新内容;2.改错别字;3.修改/更新内容;4.修改/更新YAML说明;5.增加新页面。

根据现有的git commit message写作规范,编写了自己的博客提交message规范。

<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>

type为:

  • add 增加新博客/页面(add new post/page)
  • correct 改错别字/语法(correct spelling/grammar )
  • update 更新内容(update content)
  • change 修改YAML说明(change YAML front-matter)

scope为:post/page, spelling/grammar, content, YAML front-matter

subject为:短描述,可以包含文件名等内容(如果名字过长,用首字母大写代替,省略连词)。(add(post):20160121-postname.md )

body为:具体的修改内容,如果是新增博客/页面,则可以省略。

footer为:空

这个模板也放到gist上。

curl https://gist.githubusercontent.com/yulijia/fe2522fe138b6ed41ff4/raw/1e90ec272180dba299f5ad861e72dfab876c0c5b/.git-commit-blog.txt >> ~/.git-commit-template.txt
git config --global commit.template ~/.git-commit-template.txt

实际使用时的截图如下

Imgur


这篇文章我没读,但是昨天看到Lior写的博客,感觉美国的口水仗打得很激烈。 结果今天发现知识分子也发了相关评论。

其实Lior博客里我最感兴趣的是他写文章的风格,首先用Mike Snyder的例子说明一年发42篇文章(平均每8天17个小时一篇), 但是Mike Snyder是系主任,根本每那么多时间一年做42个课题,这些课题都是他的团队一起做的(大约32个博士后,11个研究助理,12个研究科学家,9位访问学者,8个硕博生)。 所以科研工作都是一群人一起做出的成果,生物文章的作者栏因此也越来越长。

但是Lior话锋一转,说提到这些工作成果时,大多都会写“某某PI和他的合作者做了什么…”

继续说这就不对啦,尤其是Lander的这篇文章,每句话里提到的科学团队都是“某某PI和他的合作者”。但所有基本,繁琐,没意思的实验工作都是博士后、学生们做的。 这些贡献者就都被省略了。

他还说:由于发表论文的周期越来越短,论文质量都不行啦。Lander的文章里就没把CRISPR的贡献搞清楚,Jennifer Doudna的贡献写的不太准确。 另外:对于这个领域的2位女科学家的介绍怎么写得那么那么那么的无聊呢?

Lior写的下面这段话实在是太好了。一个科研团队的PI同团队里的其他人相比总是胜利者。言外之意,好处都被他们占了。

There is a more cynical view of the PI model, namely that by running large labs PIs are able to benefit from a scientific roulette of their own making. PIs can claim credit for successes while blaming underlings for failures. Even one success can fund numerous failures, and so the wheel spins faster and faster…the PI always wins. Of course the mad rush to win leads to an overall deterioration of quality.

在知识分子微信中提到Cell同哈佛麻省理工走的比较近,就像麻省理工的宣传期刊。

除了Lander成为众矢之的,在PubPeer网站上,很多匿名人士也将矛头指向了Cell杂志。一名不具姓名的人士表示,“实际上,我对此并不感到惊讶,Cell与哈佛和麻省理工学院的科研群体走得很近,Cell杂志就像是麻省理工学院的宣传期刊一样”。也有人说,“很难相信,这篇文章竟然出现在Cell杂志Scientific Perspective栏目上,我很想看评审专家的意见,以及他们如何让这篇不切实际的文章得以通过。”


王乐珩上周在博客里写了《支付战争》的书评。 看了他的介绍,由于自己对PayPal、互联网创业,Elon Musk感兴趣,觉得这书应该比较有意思, 所以立马找来阅读,花了一周时间看完后,随便写一些印象较为深的内容。

关于营销

就像王乐珩所说的,我们在国内看到的互联网营销手段,都是人家十几年前的玩法。 让人喜欢的,让人反感的,反正Paypal是尝试了不少: 什么注册返现金,邀请好友注册后返现,在商店页面设置快速跳转连接,在别人的用户大会作推广等等一系列手段。 最近非常有感触的一点是创业公司的产品营销方法是不断摸索的。

未来的银行只是有银行牌照的技术公司

这句话让我感同身受,因为从Paypal创立到现在已经十几年过去的,纵观国内,已经有很多网络公司开始提供金融服务,例如:微众银行和网商银行。 腾讯和阿里率先吃了螃蟹,虽然效果如何还不清楚(我没关注)。

作决定不能脱离现实

在运营初期Paypal同x.com合并后,有个夜间突然发布新规则,免费支付额度为1000美元,这个规则引起了用户的不满。 虽然及时灭火成功,但是做这类同用户相关的决定前一定需要提前调研。

Elon Musk

他创建的公司叫x.com,但是为了避免内耗,同PayPal合并了,合并后当了一段时间的CEO(结果为了实现2.0版本,变成X支付而不是PayPal支付太执着,被抛弃了),之后就做董事。 看到x.com用Windows NT架构时,我一愣,没想到Musk竟然是个Windows派。 不过经历过创立公司并且出售,这家伙28岁时的身家就老高老高了。

PayPal和eBay

分就必合,合久必分。PayPal在14年又和eBay拆分出来了。这两家的关系真有意思。


我可能有些post里没有标注阅读的文章是哪一篇,想要查文章的时候,需要看博客的连接,连接的英文名字就是文章的title。

这篇文章是15年三月份发表在nature genetics上的。构建了一个癌症最初生长、发展的模型。

主要是说癌症相关的基因突变一开始就有,并且一开始就不止一个突变,每个不同的突变会形成一个subclone,从而不断生长。 有些突变生来就是坏突变,容易长成大的subclone,容易转移。这些特性从一开始就在癌症的subclone里存在了。

CNV和CNA概念以及其区别12

CNV(copy number variation)是生殖细胞的染色体区域/基因的拷贝数增加与减少。 CNA(copy number alteration)是体细胞的染色体区域/基因的拷贝数增加与减少。

简要介绍

文章还是可以的,但是有点读不进去。

主要是用CNA和一些病人特异性的私有mutation来判断是不是产生早的突变可扩散到很远的位置,由此来说明文章的观点Big Bang模型。

癌细胞的突变容易扩散,腺瘤突变基本有界,不容易扩散。

文章中的统计推断部分用到了他们之前发表的一篇文章的内容Single-molecule genomic data delineate patient-specific tumor profiles and cancer stem cell organization.

在比较毗连的细胞间差异性的时候用到了Shannon-Index。

参考资料

单词本

英文 中文 英文 中文
primordial 原发 malignant 恶性
malignancy 恶性肿瘤 neoplasm 肿瘤
pervasive 无处不在 experimentally 实验证明
stepwise 逐步的 paradigm 范例
confer 商议、比较 recapitulate 摘要,总结
variegation 五花八门,彩斑 progeny 后代
propagate 繁衍 glandular 腺状的
phylogenies 系统发育 aberrant 畸变
colon crypt 结肠隐窝 obscure 掩盖
respective 各自、分别的 corroborate 证实
recapitulate 总结 chemotherapy 化疗

过节用3~4天时间看完了大刘的《超新星纪元》(同三体一起贩卖的京东版)。里面比较喜欢的片段如下:

  1. “大量子”作为终端,指导并帮助小孩社会重新建立秩序走出恐慌和混乱。
  2. 美国小孩那个“军师”同总统的对话。

没有弄清楚的问题:

  1. 为什么13岁以上都挂了,年龄13的就真的一点都没事?(这个问题有点较真)
  2. 国家交换时不带走一草一木的原因。(网上查了一些,说法有两种,一种是切断同祖先的联系好让这一代彻底完蛋,另一种是不忘祖先到新的地方重头开始)

网上说法是这个版本已经被删节了很多内容,我自己也没有读懂,感觉前后不连贯。另外,为什么“大量子”在前面出现,在后半段就消失的无影无踪?

我觉得真有这种毁灭世界的情况产生,绝大部分孩子也很可能无法独立存活。 除非你有什么志向要把大刘写的文章都看一遍,否则可以放弃阅读这本,内容真的是不连贯,我不知道删减了多少,也不能确信网上的那些所谓的非删减版本是不是真的是大刘所写。 由于出版方面的干预,这个新纪元世界我是不买账。

不过超新星纪元的这个世界让我想到了1984(联想有些跳跃)。

一个失控的新兴世界和一个被奴役没有反抗的世界。我觉得写孩子的世界比较难,因为走过童年后,大家也不见得能记得起多少小时候做过的事情,以及当时做事情的原因。 所以很难刻画出一个符合真实情况的想象中的新兴世界;一个被奴役没有反抗的世界,总是存在于人们的想象中,读起来感同身受。

看1984的时候正好是斯诺登事件不久之后,从“杨老板”那里借到了这本书。很多国内的版本里没有《附录:新话的原则》,但是我看的那一版里好像有。 感谢杨老板的书买得早。好像通过附录的内容,有人说引申意义是1984的世界最后没有成真/或者成真了。不管怎样,大家都不希望这样的世界出现。

War is peace. Freedom is slavery. Ignorance is strength.

基本所有的词都有对立面,没有完全的自由,也不可能出现完全的监控。 不过一个自由没有任何约束的世界同一个完全被监控没有自由的世界,我觉得后者可能更能成为现实, 因为很多人习惯于被奴役,这样可以少想一些事情,让自己认为活得更加轻松。

读1984最深的感受就是奥威尔对那个世界的刻画,一切都同二战,冷战,The Cultural Revolution,这几个不同且相互交错的时期有类似的地方。 艺术总能高于生活,提炼出来,让人看得毛骨悚然。

斯诺登事件让大家认识到,每个人的信息都在被有限制的监控着。随着科技的发展,监控和信息筛选手段越来越高明。 但是暴露出监控后,各国政府肯定没什么影响也不会有什么好措施出台(哪个实力强的政府一点不监控?没有),底层的老百姓也就关心两天,之后也会慢慢不了了之。 这种情况又让我想起了鲁迅写文章揭露恶根性,但是几十年过去了,大家一点没变。斯诺登的事情也是这个结局。