Skip to content

Commit d12f2d7

Browse files
committed
Specify 5 highlighted posts.
1 parent 5b8a645 commit d12f2d7

File tree

9 files changed

+240
-57
lines changed

9 files changed

+240
-57
lines changed

content/zh/post/2017/blog.md

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
+++
2-
title = "为什么要写博客"
3-
date = 2017-09-17T10:36:00+08:00
4-
lastmod = 2022-02-25T22:38:47+08:00
2+
title = "写博客的动机"
3+
date = 2017-09-17T10:36:00-07:00
4+
lastmod = 2024-12-30T20:58:14-08:00
55
tags = ["summary"]
66
categories = ["summary"]
77
draft = false
@@ -10,43 +10,60 @@ toc = true
1010

1111
## <span class="section-num">1</span> 博客迁移 {#博客迁移}
1212

13-
我将博客从 [Github Page](https://github.com/ramsayleung/samrayleung.github.io/) 迁移到现在的[博客](https://github.com/ramsayleung/blog)上,原来基于 Gtihub Page,使用 Emacs, org-mode 和 org-page 的博客其实也相当好用,只是某一些我想要的功能却缺失,所以我就自己花时间动手写了现在这个博客,并且将原来的博文迁移
13+
我将博客从 [org-page](https://github.com/emacsorphanage/org-page) 搭建的 [Github Page](https://github.com/ramsayleung/samrayleung.github.io/) 迁移到现在的[博客](https://github.com/ramsayleung/blog)上,原来基于 Gtihub Page,使用 Emacs, org-mode 和 org-page 的博客其实也相当好用,只是某一些我想要的功能却缺失,所以我就自己花时间动手写了现在这个博客,并且将原来的博文迁移
1414

15-
----
16-
<span class="timestamp-wrapper"><span class="timestamp">&lt;2022-02-25 五&gt;</span></span>
15+
当时 [org-page](https://github.com/emacsorphanage/org-page) bug不少,支持不是很及时,虽然org-mode很好用,但最后走到自建的博客的路子上。
16+
17+
使用Rust练手写的博客很不错,但是写作workflow 还不够滑顺,使用orgmode写作,导出为markdown;
1718

18-
没想到五年后,我又从自建的Blog,又迁移回Github Page。当时[org-page](https://github.com/emacsorphanage/org-page) bug不少,支持不是很及时,虽然org-mode很好用,但最后走到自建的博客的路子上
19+
对于图片,只能先上传到图床,然后再插入到文章里面
1920

20-
使用Rust练手写的博客很不错,但是写作workflow 还不够滑顺,使用orgmode写作,导出为markdown;对于图片,只能先上传到图床,然后再插入到文章里面。
21+
----
22+
<span class="timestamp-wrapper"><span class="timestamp">&lt;2022-02-25 Fri&gt;</span></span>
23+
24+
没想到五年后,我又从自建的[ Blog](https://github.com/ramsayleung/blog/),又迁移回 [ox-hugo](https://ox-hugo.scripter.co/) 驱动的Github Page。
2125

2226
所以现在切换回Github Page,使用org-mode和ox-hugo, 不需要修改就可以直接把文章发布成博客,又可以愉快地写文章了。
2327

28+
关于我现在的写作流,可以参考文章: [《我的写作流》](https://ramsayleung.github.io/zh/post/2023/%E6%88%91%E7%9A%84%E5%86%99%E4%BD%9C%E6%B5%81/)
29+
2430

2531
## <span class="section-num">2</span> 为什么要写博客 {#为什么要写博客}
2632

27-
虽说我写博客的时间不长,但是当9月份为止,我已写了不少博文的。那么,为什么要写博文呢?很明显,这是一个费时费精力的工作,那么为什么我还要写呢?我自己思考过这个问题,我觉得,原因有下:
33+
虽说我写博客的时间不长,但是当9月份为止,我已写了不少博文的。那么,为什么要写博文呢?
34+
35+
很明显,这是一个费时费精力的工作,那么为什么我还要写呢?我自己思考过这个问题,我觉得,原因有下:
2836

2937

3038
### <span class="section-num">2.1</span> 技术沉淀 {#技术沉淀}
3139

32-
在平时的工作生活中,我免不了会碰到种种问题,了解这些问题,思考解决方案并最终付诸行动,这本身就是一个学习和进步的过程。而把其中的想法感悟写成博文会更有益于我的技术沉淀
40+
在平时的工作生活中,我免不了会碰到种种问题,了解这些问题,思考解决方案并最终付诸行动,这本身就是一个学习和进步的过程。
41+
42+
而把其中的想法感悟写成博文会更有益于我的技术沉淀
3343

3444

3545
### <span class="section-num">2.2</span> 提高组织文字的能力 {#提高组织文字的能力}
3646

37-
对于很多工科生来说,不擅文字,不擅言语表达估计是他们撕不掉的标签之一,但是,学会恰当地表达自己的想法是一项非常重要的技能,写博客可以提高自己的语言组织能力。此外,一位前辈曾经告诫我,如果你连文字都没办法组织好,我怎么相信你可以把你的代码组织好呢?
47+
对于很多工科生来说,不擅文字,不擅言语表达估计是他们撕不掉的标签之一,但是,学会 恰当地表达自己的想法是一项非常重要的技能,写博客可以提高自己的语言组织能力。
48+
49+
此外, 一位前辈曾经告诫我,如果你连文字都没办法组织好,我怎么相信你可以把你的代码组织好呢?
3850

3951

4052
### <span class="section-num">2.3</span> 便于了解自我 {#便于了解自我}
4153

42-
当在编写博客的时候,你会有诸多的想法和思考,然后你会把你的思考一点一滴付诸于笔尖,你的博文越来越清晰了,你的自己的认识也会越来越清晰,你最终会了解到自己是一个什么样的人,喜欢做的事是什么,想要的又是什么?
54+
当在编写博客的时候,你会有诸多的想法和思考,然后你会把你的思考一点一滴付诸于笔尖, 你的博文越来越清晰了,你的自己的认识也会越来越清晰,你最终会了解到自己是一个什么样的人,喜欢做的事是什么,想要的又是什么?
4355

4456

4557
### <span class="section-num">2.4</span> 分享与交流 {#分享与交流}
4658

47-
你有一个苹果,我有一个苹果,我们交换了苹果,我们还只是拥有一个苹果;但是,你有一种想法,我有一种想法,我们交换了想法,我们就有两个想法。写博客就是一种双向的交流方式,笔者介绍自己的观点,读者发表自己的评论,思想由此而激荡,甚至孕育出新的想法
59+
你有一个苹果,我有一个苹果,我们交换了苹果,我们还只是拥有一个苹果.
60+
61+
但是,你有一种想法,我有一种想法,我们交换了想法,我们就有两个想法。
62+
63+
写博客就是一种双向的交流方式,笔者介绍自己的观点,读者发表自己的评论,思想由此而激荡,甚至孕育出新的想法
4864

4965

5066
## <span class="section-num">3</span> 结语 {#结语}
5167

52-
每个人总会有不同的想法,不同的际遇,如果你想和他人分享而不知从何言起,与何人言?何不付诸博客呢?
68+
每个人总会有不同的想法,不同的际遇,如果你想和他人分享而不知从何言起,与何人言?
69+
何不付诸博客呢?

content/zh/post/2023/从微信支付离线_我带走了什么.md

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
+++
22
title = "那些年,我从微信支付学到的东西"
33
date = 2023-04-06T18:31:00-07:00
4-
lastmod = 2023-05-20T08:36:01-07:00
4+
lastmod = 2024-12-30T20:44:04-08:00
55
tags = ["summary"]
66
categories = ["summary"]
77
draft = false
88
toc = true
99
ShowToc = true
10+
highlighted = true
1011
+++
1112

1213
## <span class="section-num">1</span> 前言 {#前言}
@@ -19,7 +20,8 @@ ShowToc = true
1920

2021
如果沉下心思考,就会发现,这些资产价值并不大,对于工程师而言,也没有领导想象中的那么重要,除非我们试图将代码放在黑市售卖。
2122

22-
对于业务开发而言,也可能是同样的道理。业务开发每天对着业务需求做CRUD,可能会羡慕开发底层组件的工程师,可以学习并提升技术水平,而自己技术水平还是在原地打转,能学习到的东西随着时间的推移,越来越少。
23+
对于业务开发而言,也可能是同样的道理。
24+
业务开发每天对着业务需求做CRUD,可能会羡慕开发底层组件的工程师,可以学习并提升技术水平,而自己技术水平还是在原地打转,能学习到的东西随着时间的推移,越来越少。
2325

2426
王安石的《游褒禅山记》有这样的感叹:
2527

@@ -32,13 +34,16 @@ ShowToc = true
3234

3335
### <span class="section-num">1.1</span> 鱼与渔 {#鱼与渔}
3436

35-
文档,代码,设计都是针对特定问题的解决方案,如果离职到新公司之后,我们遇到的问题肯定不会完全一样,或者手头可用的工具不一样,那么这些资产的价值就会打折扣。
37+
文档,代码,设计都是针对特定问题的解决方案,
38+
如果离职到新公司之后,我们遇到的问题肯定不会完全一样,或者手头可用的工具不一样,那么这些资产的价值就会打折扣。
3639

37-
更何况这些资产都是「一次性的」,用完即止;是属于「授人以鱼不如授人以渔」中的「鱼」;是「生产线」上的「成品」,而我对能生产「成品」的「生产线」更感兴趣。
40+
更何况这些资产都是「一次性的」,用完即止;
41+
是属于「授人以鱼不如授人以渔」中的「鱼」;是「生产线」上的「成品」,而我对能生产「成品」的「生产线」更感兴趣。
3842

3943
二战结束以后,美国把1600多名德国科学家、工程师、技术人员带到美国,包括沃纳.冯.布劳恩和他的V-2火箭研究团队;
4044

41-
而苏联凭借地理位置靠近德国占领了一些重要的工厂,比如著名的德国光学巨头卡尔蔡司公司,苏联几乎搬空了该公司的设备,把1万多台设备中的9000多台都搬到了苏联。
45+
而苏联凭借地理位置靠近德国占领了一些重要的工厂,
46+
比如著名的德国光学巨头卡尔蔡司公司,苏联几乎搬空了该公司的设备,把1万多台设备中的9000多台都搬到了苏联。
4247

4348
有人对现成的「鱼」感兴趣,也有人对未来的「渔」感兴趣,我属于后者。
4449

@@ -51,15 +56,17 @@ ShowToc = true
5156

5257
> 见贤思齐焉,见不贤而内自省也
5358
54-
见到那些优秀的实践和思路,就学下来;对于有弊端的实践,就要分析弊端形成的原因,再想办法避免和改进,别人掉进去的坑,我们就不要进去凑热闹了。
59+
见到那些优秀的实践和思路,就学下来;
60+
对于有弊端的实践,就要分析弊端形成的原因,再想办法避免和改进,别人掉进去的坑,我们就不要进去凑热闹了。
5561

5662

5763
## <span class="section-num">3</span> 贤 {#贤}
5864

5965

6066
### <span class="section-num">3.1</span> 模式化 {#模式化}
6167

62-
1994年,4个博士合著了一本书,书中对常见的设计问题进行了分类,归纳与总结,并且针对每一类问题,给出可重用的解决方案。他们将这些可以复用的解决方案,称之为设计模式(design pattern)。
68+
1994年,4个博士合著了一本书,书中对常见的设计问题进行了分类,归纳与总结,并且针对每一类问题,给出可重用的解决方案。
69+
他们将这些可以复用的解决方案,称之为设计模式(design pattern)。
6370

6471
这本书也成为软件工程和面向对象设计经久不衰的经典。
6572

@@ -78,32 +85,39 @@ Elements of Reusable Object-Oriented Software),这四位博士也被称为Gang
7885

7986
针对此类重复问题,直接复制代码来解决,是下下策。
8087

81-
对代码进行抽象,复用代码来解决重复问题,也是下策。因为使用公共库会导致代码之间无法隔离,并且把逻辑隐藏在公共库,会导致无法分析代码的调用关系。
88+
对代码进行抽象,复用代码来解决重复问题,也是下策。
89+
因为使用公共库会导致代码之间无法隔离,并且把逻辑隐藏在公共库,会导致无法分析代码的调用关系。
8290

83-
微信支付研发理念推崇的上策是对问题进行抽象,归纳出这类问题的通用解法,即模式;更进一步的是,为模式定义对应的代码模板,直接生成代码。
91+
微信支付研发理念推崇的上策是对问题进行抽象,归纳出这类问题的通用解法,即模式;
92+
更进一步的是,为模式定义对应的代码模板,直接生成代码。
8493

8594
即使不生成代码,也可以将模式实现成对应的组件或库,方便直接调用。
8695

8796
具体例子如:
8897

89-
微信支付就总结常见的分布式事务场景,设计和开发了分布式事务编排中间件。通过在画板编排事务资源,即可生成对应的代码模板,开发者只需要在指定的地方编写个性化代码即可。
98+
微信支付就总结常见的分布式事务场景,设计和开发了分布式事务编排中间件。
99+
通过在画板编排事务资源,即可生成对应的代码模板,开发者只需要在指定的地方编写个性化代码即可。
90100

91-
针对常见的领域服务,抽象了基于状态机和事件驱动的模型,设计了领域服务的代码生成组件。可通过绘制状态机UML图,直接生成接口代码,由开发者填充实现。
101+
针对常见的领域服务,抽象了基于状态机和事件驱动的模型,设计了领域服务的代码生成组件。
102+
可通过绘制状态机UML图,直接生成接口代码,由开发者填充实现。
92103

93104
以上算是技术组件的模式化,对业务开发而言,还有对业务的模式化。
94105

95106
比如对扣款模式进行抽象,扣款时开启事务,进行风控校验,创建(或不创建)业务单,查询支付方式,轮询支付方式进行扣款,异常关单等。
96107

97-
当时组里的大神龙哥,就是对已有的扣款模式进行了抽象,基于面向对象,设计成同步扣款框架,定义了以上的接口,由业务进行继承和扩展。再使用同步扣款框架对已有的3个类似但不完全一致的代扣扣款业务进行了重构,把扣款模式都统一了。
108+
当时组里的大神龙哥,就是对已有的扣款模式进行了抽象,基于面向对象,设计成同步扣款框架,定义了以上的接口,由业务进行继承和扩展。
109+
再使用同步扣款框架对已有的3个类似但不完全一致的代扣扣款业务进行了重构,把扣款模式都统一了。
98110

99111

100112
### <span class="section-num">3.2</span> 复盘 {#复盘}
101113

102-
没有人能保证自己写的代码绝对不会出错,当错误与问题不期而至的时候,我们能做的就是将「错误」的效益最大化,即从「错误」中吸引教训,做到「不二过」。
114+
没有人能保证自己写的代码绝对不会出错,当错误与问题不期而至的时候,我们能做的就是将「错误」的效益最大化,
115+
即从「错误」中吸引教训,做到「不二过」。
103116

104117
复盘,就是在「错误」中吸引教训,做到「不二过」的手段。Amazon 也有类似的概念与机制,称为 Correctness Of Error(COE)
105118

106-
我们一直说「失败是成功之母」,但根据生物学常识,只有「成功才是成功之母」,或者说「小步的成功才是大步成功之母」,别人踩过的坑,我们就不要进去了。
119+
我们一直说「失败是成功之母」,
120+
但根据生物学常识,只有「成功才是成功之母」,或者说「小步的成功才是大步成功之母」,别人踩过的坑,我们就不要进去了。
107121

108122
复盘的一般步骤:
109123

@@ -123,7 +137,8 @@ Elements of Reusable Object-Oriented Software),这四位博士也被称为Gang
123137

124138
微信支付一直在推广全栈工程师,认为只从自己做的事情来思考问题,容易导致盲维和短板,看待问题的眼光容易受限。
125139

126-
此外,根据《人月神话》的理念,工程师之间的沟通成本,会随着人数的增加,呈指数水平上涨。而成为全栈工程师,可以一个人处理完需求,沟通成本就下降到0,极大地提交工作效率。
140+
此外,根据《人月神话》的理念,工程师之间的沟通成本,会随着人数的增加,呈指数水平上涨。
141+
而成为全栈工程师,可以一个人处理完需求,沟通成本就下降到0,极大地提交工作效率。
127142

128143
微信支付的全栈工程师定义是前端工程师 + 服务端工程师 + 数据开发工程师。
129144

@@ -183,7 +198,7 @@ Elements of Reusable Object-Oriented Software),这四位博士也被称为Gang
183198
提问题是为了帮助组织发现问题,如果不能吐槽的话,很多问题也不会被发现,自然也得不到解决,毕竟也没有人喜欢帮别人的问题提解决方案。
184199

185200
---
186-
<span class="timestamp-wrapper"><span class="timestamp">&lt;2023-05-20 &gt;</span></span>
201+
<span class="timestamp-wrapper"><span class="timestamp">&lt;2023-05-20 Sat&gt;</span></span>
187202

188203
针对如何高效交流,我写了一篇自己的心得文章:[软件工程师的软技能指北(三):高效交流篇](https://ramsayleung.github.io/zh/post/2023/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E5%B8%88%E7%9A%84%E8%BD%AF%E6%8A%80%E8%83%BD%E6%8C%87%E5%8C%97_%E9%AB%98%E6%95%88%E4%BA%A4%E6%B5%81%E7%AF%873/)
189204

@@ -192,7 +207,8 @@ Elements of Reusable Object-Oriented Software),这四位博士也被称为Gang
192207

193208
领导总说,软件工程的本质就是管理和控制复杂度,而一致性就是减少复杂度的有力工具。所谓的一致性,可以理解成统一的流程,统一的组件等等
194209

195-
在这种理念的驱动下,微信支付内部使用统一的编程语言,统一的工具库,统一的存储组件(使用别的存储需要特殊审批和说明),统一的数据访问组件,使用统一的研发流程。
210+
在这种理念的驱动下,微信支付内部使用统一的编程语言,统一的工具库,
211+
统一的存储组件(使用别的存储需要特殊审批和说明),统一的数据访问组件,使用统一的研发流程。
196212

197213
保证每个研发工程师,即使调到微信支付的其他团队,也是使用同样的工具,即插即用,和车床生产的螺丝一样。
198214

0 commit comments

Comments
 (0)