普通视图

发现新文章,点击刷新页面。
昨天以前Jimersy Lee’s blog

#blog#卡片工作法在notion中的实践

作者 Jimmy Lee
2022年8月1日 08:00

概念

什么是卡片工作法

notion image
notion image

实践

选用工具-以notion为例

 

notion synced block支持的功能

  • 写在一个地方,可以同步到任何地方
  • 在使用同步块的任何页面,随时编辑,可以实时同步,不用找到最原始的出处,方便修改
  • 任意block可以随意转换成同步块
  • 在某些场景下,一个同步块的内容在不同的使用场景下,需要进行些许的修改,但是又不想影响到原始的内容,则可以在使用的地方对这个同步块进行unsync操作
  • 支持源同步块一键取消所有同步→unsync
 

Notion中如何实践卡片笔记

让AI助力资讯收集

参考 https://www.bilibili.com/video/BV1524y1M73Y, 新建一个带有AI block的模板, 让AI来帮助我们将文章分类, 以及做摘要, 方便分类
 

思考

 

参考

【社会学】 访谈卢曼:1973年与1989年 (双语)_哔哩哔哩_bilibili
Cehepar Cheng译制源:https://www.youtube.com/watch?v=qRSCKSPMuDc, 视频播放量 5975、弹幕量 32、点赞数 179、投硬币枚数 91、收藏人数 683、转发人数 110, 视频作者 好蓝猫, 作者简介 ● 艺术 哲学 精神 读书分享up主 ● 喜欢就要关注收藏呐~ ● 每周三到五次更新,相关视频:【社会学】埃利亚斯 1988年访谈片段 (双语),【边缘性人格障碍】1960年 少年患者访谈(cc字幕),【偏执型精神分裂症】1960年女性患者访谈实录(双语字幕),台湾大学《失败者社会学》李明璁 34集全,【儿童自闭症 1960年】医生与6岁的患自闭症孩子的聊天(cc字幕),【恐慌症】1960年代 与PD男性患者的聊天(外挂字幕),【艺术与设计】迪特·拉姆斯 (双语)The school of life,【为什么要反对“保护自然”?】 双语字幕,【人文】 女性主义理论介绍 | Hung Lin Chou,梁文道受到哪位哲学家的书籍影响最深?【01 哲學】
【社会学】 访谈卢曼:1973年与1989年 (双语)_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV1Vb411k7wE
【社会学】 访谈卢曼:1973年与1989年 (双语)_哔哩哔哩_bilibili

开始订阅我的关于终生学习, 生产力以及知识管理的文章. 订阅后, 您将收到我的精选文章.

如何提高工作效率

作者 Jimmy Lee
2022年7月26日 08:00
 
 
1、干完活别急着休息,要乘胜追击 2、找到你的“波峰时间” 3、适合的环境,让你更快进入工作状态 4、创造“心流体验”,让你深度工作 5、合理搭配工作,多任务并行
 

开始订阅我的关于终生学习, 生产力以及知识管理的文章. 订阅后, 您将收到我的精选文章.

如何高效阅读一本书

作者 Jimmy Lee
2022年7月26日 08:00

阅读流程

阅读→提出问题→通过书中的内容解决问题→如果书中的知识不能解决问题,那就扩展到其他书籍,直到解决问题为止→总结
 
阅读→高亮→笔记→定期回顾笔记

开始订阅我的关于终生学习, 生产力以及知识管理的文章. 订阅后, 您将收到我的精选文章.

新的机场

作者 Jimmy Lee
2024年5月9日 08:00
最近试用了一下椰皮加速, 感觉还不错, 推荐给大家.
youtube看4K没什么问题
notion image
流媒体解锁情况, 使用香港节点
notion image
节点情况
notion image
notion image
有兴趣的可以看看, 1元试用买不了吃亏买不了上当啊, 椰皮加速

开始订阅我的关于终生学习, 生产力以及知识管理的文章. 订阅后, 您将收到我的精选文章.

克雷格的健身法

作者 Jimmy Lee
2023年10月8日 08:00
notion image
每个运动做10次,共5回,最重要的是要坚持循环训练(circuit training)的原则,最大限度地减少休息的时间。
notion image
notion image
动作要领:选择适合自己的重量,选择"扛杠铃"的方式,背部挺直,保持竖脊肌的中立位和稳定性,双腿由直立慢慢弯曲半蹲,最后再回到直立状态。
notion image
动作过程:用背阔肌的收缩力量将身体往上拉起,直到单杠触及或接近胸部。静止一秒钟,使背阔肌彻底收缩。然后逐渐放松背阔肌,让身体徐徐下降,直到回复完全下垂,重复再做。注意事项:把身体拉高时,尽量保持身体不要摆动,另外你可在腰上钩挂杠铃片来加重。
notion image
双杠臂屈伸主要锻炼胸大肌下部和肱三头肌,一个男人是否经常锻炼,看看他的胸大肌就知道了,所以双杠臂屈伸可以帮你做到这点。
动作要领:
握双杠两臂伸直支撑在双杠上,两腿自然弯曲,双脚重叠,身体放松下垂,双臂屈肘使身体降至最低点,呼吸时双臂用力,将身体撑起。如果想练习胸大肌的下部,则需要使胸大肌的下部位垂直于地面。身体保持垂直放松,不要故意挺胸。如练习肱三头肌可以抬头挺胸,通过臀部向后伸展使身体稍向后倾斜。这时力量会转移到肱三头肌上。
 
【丹尼尔的健身食谱】
早餐:两个水煮蛋,两片面包片
加餐:蛋白条、水果、坚果和葡萄干任选其一作为早餐与午餐间的零食
午餐:肉或者鱼,配一份糙米饭或者烤土豆
加餐:依然可以选择蛋白条
晚餐:肉或者鱼,配有绿叶蔬菜,像沙拉、莴笋、菠菜或者西兰花这样的蔬菜
 

开始订阅我的关于终生学习, 生产力以及知识管理的文章. 订阅后, 您将收到我的精选文章.

如何正确进行iOS系统的升降级

作者 Jimmy Lee
2023年10月7日 08:00

升级

  • 首先备份全部系统数据, 包含应用数据和其他配置数据, 这是为升级失败以及升级后想降级做准备
  • 使用手机自己的升级功能或者使用Mac进行升级

降级

  • 当升级过程失败或者体验了新系统后, 发现一些问题想降级, 那么就可以使用爱思助手等软件进行降级, 因为使用软件降级后, 是纯净的系统, 数据都会清理掉
  • 首先关闭手机的Find my功能
  • 然后使用爱思助手降级到备份时的系统版本或者更高的版本, 因为爱思助手不支持恢复数据到比备份时的系统更低的系统
  • 等待爱思助手降级后, 继续使用爱思助手的数据恢复功能恢复数据, 等待恢复完成
 

开始订阅我的关于终生学习, 生产力以及知识管理的文章. 订阅后, 您将收到我的精选文章.

我用过的手机

作者 Jimmy Lee
2023年9月27日 08:00
整理网站书签的时候, 发现一个统计使用过的手机网站, 登录后, 看了一下,之前填写的手机使用数据, 蛮有意思.
notion image
主线就是NOKIA→XIAOMI→APPLE
我的主页在这https://mowned.com/jimmy-lee/, 你们也可以统计下.
 

开始订阅我的关于终生学习, 生产力以及知识管理的文章. 订阅后, 您将收到我的精选文章.

如何画好技术设计图

作者 Jimmy Lee
2023年8月28日 08:00

程序员画图的痛点

  • 各个图形怎么对不齐啊?
  • 这个在线服务怎么要收费啊? 只能免费画这么几张图? 现在没网了, 用不了啊!
  • 同事画的图的逻辑比较老了, 现在业务迭代了, 已经跟最新的逻辑对不上了, 但是他只留了张图啊, 我怎么改啊? 诶, 重新画吧
  • 这个项目的设计图在哪里呀? 找不到, 唉, 看代码慢慢摸索吧.
  • 好不容易找到设计图了, 怎么是个在线的地址, 点进去, 已经404了啊

图的选择: 什么场景画什么图?

架构图

软件开发过程中,开发人员可以使用技术架构图来描述软件的整体架构,包括不同模块、组件和服务之间的依赖关系。这样,开发人员可以更好地理解系统的结构,并能够更好地进行开发和维护。此外,技术架构图还可以用于帮助开发人员诊断和解决系统中的问题。
适合场景
  • 给不懂技术的人演示, 展示公司技术实力
  • 介绍系统总体组成, 表现整个系统包含哪些服务, 让看的人有个点和面的印象. 其实跟实际代码开发过程没有什么重要关系.
  • 在设计一个新系统的时候, 必须使用架构图.
不适合的场景
  • 需要表现一个具体的功能点逻辑

时序图

时序图是一种UML交互图,用来描述对象之间发送消息的时间顺序和动态协作。它可以表示用例的行为顺序,每条消息对应一个类操作或状态机中的触发事件。时序图是一个二维图,横轴表示对象,纵轴表示时间,消息在各对象之间横向传递,依照时间顺序纵向排列。时序图也可以用来对一个场景下的对象交互建模,展示了系统的不同部件的执行序列。
时序图适合表现对象之间的动态协作和时间顺序。例如,它可以用于描述系统中不同部件之间的交互。
适合场景
  • 业务逻辑中涉及到其他组件,其他服务的交互时, 使用时序图展示较好; 如tcp连接过程, 数据包流传
  • 再排查bug,性能优化时能帮助定位是哪里的可能出现问题及出现性能瓶颈
不适合场景
  • 需要表现业务逻辑判断的场景
  • 需要表现整体架构的场景
补充:
时序图反映了一系列对象的交互与协作关系,清晰立体地反映系统的调用纵深链路
时序图的核心元素包括:参与者(Actor)、生命线(Lifeline)、控制焦点(Focus of control)、消息(Message)等。
notion image
顺序图的语法和功能
PlantUML序列图的语法:你可以有几种类型的参与者(演员和其他人),箭头,音符,组...改变字体和颜色也有可能。
https://plantuml.com/zh/sequence-diagram
微信支付时序图(经典)
notion image

流程图

notion image
流程图是一种图表,用于表示过程或工作流程。在软件设计中,流程图通常用于可视化软件算法或程序中涉及的步骤。它们可以帮助开发人员识别设计中潜在的问题和低效性,并计划和优化程序的逻辑和结构。流程图通常使用标准符号和形状来表示不同类型的操作、决策和输入。
适合场景
  • 适合表达一个具体的功能点逻辑, 这个一般会要求产品文档就得写好, 研发只需要在此基础上补充一些判断逻辑.
不适合场景
  • 涉及数据流转的场景表现不佳
  • 无法进行整体系统介绍, 只能表现具体功能点

状态图

状态图常用来表示某个对象的状态流转, 因为可能包含很多状态, 而不同状态之前可能不能任意转换, 因此使用状态图表示可能的路径, 在编程时可以规避BUG
notion image

参考与学习

UML、ArchiMate、BPMN、流程圖模板
了解 UML、BPMN、ArchiMate、流程圖、思維導圖、ERD、DFD、SWOT、PEST、價值鍊等等。從圖表示例中學習並開始在線創建圖表。
https://online.visual-paradigm.com/tw/diagrams/templates/

软件的选择: 我用过的各个产品的横评

推荐指数
产品名
下载(在线)地址
收费形式
适合场景
优点
缺点
⭐️⭐️⭐️⭐️⭐️
mysql workbench
https://www.mysql.com/products/workbench/
免费
数据表设计
1. 可以管理数据库 2. 可以导出E-R图 3. 可以标示表关系,如1-n,m-n
⭐️⭐️⭐️⭐️
excalidraw
https://excalidraw.com/
免费
流程图,架构图,思维导图
1. 可以绘制手绘风格的图 2. 非常适合云服务架构图, 因为有配套的云厂商的图片 3. 可以在线协作画图
⭐️⭐️⭐️
Idea UML图
https://www.jetbrains.com/
免费/收费
code review,代码设计
1. 使用UML功能,对类有一个直观展示 2. 可以一键导出各种画图软件的格式,或者在线编辑
⭐️⭐️⭐️
Datagrip
https://www.jetbrains.com/
收费
数据表设计
也可以展示数据表的E-R图
1. 不能标示表之前的关系 2. 收费
⭐️⭐️⭐️⭐️⭐️
VS Code的markdown扩展的mermaid插件
https://mermaid.js.org/
开源免费
架构图, 流程图,时序图,思维导图
1. 比较好看 2. 和markdown结合较好, 可以用较少的代码表达复杂的内容
⭐️⭐️⭐️⭐️⭐️
VS Code的PlantUML
http://www.plantuml.com/ https://c4model.com/
开源免费
架构图
1. 全能的软件
1. 图比较古老, 赶不上现在的审美
⭐️⭐️⭐️
draw.io
https://app.diagrams.net/
开源免费
架构图, 流程图,时序图
1. 非常适合云服务架构图, 因为有配套的云厂商的图片 2. 可以导出源文件.drawio, 方便版本管理
1. 源文件内容格式比较复杂, 几乎无法直接文本编辑来改变内容, 只能通过UI交互设计

Idea: Java程序员必备, UML图, Idea导出

notion image
idea 还可以通过插件来查看时序图 SequenceDiagram
notion image

MySQL Workbench: 最适合表设计以及展示的软件

notion image

Datagrip: Jetbrains家的数据库管理软件, 支持各种数据库

notion image

Mermaid: 代码即图片,使用mermaid插件设计流程图

notion image
notion image

PlantUML: 免费开源的全能绘图软件, UI稍显落后

notion image

draw.io: 最全能的技术绘图软件,支持各种图形种类, 也支持手绘风格

notion image
<mxfile host="app.diagrams.net" modified="2023-07-11T11:48:46.297Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" version="21.1.4" etag="Vk56FYurCNT3bhcBm2TL" type="device"> <diagram id="U-IhvMMfK_tPmmFvKWC0" name="Page-1"> <mxGraphModel dx="1950" dy="882" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="827" pageHeight="1169" background="none" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> <object placeholders="1" c4Name="哈哈哈" c4Type="Software System" c4Description="Description of software system." label="&lt;font style=&quot;font-size: 16px&quot;&gt;&lt;b&gt;%c4Name%&lt;/b&gt;&lt;/font&gt;&lt;div&gt;[%c4Type%]&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font style=&quot;font-size: 11px&quot;&gt;&lt;font&gt;%c4Description%&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;" id="jzu2_plOl5HEqln0LSlW-1"> <mxCell style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#1061B0;fontColor=#FF1CCA;align=center;arcSize=10;strokeColor=#0D5091;metaEdit=1;resizable=0;points=[[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];shadow=0;" vertex="1" parent="1"> <mxGeometry x="120" y="240" width="240" height="120" as="geometry" /> </mxCell> </object> <object placeholders="1" c4Name="Container name" c4Type="ContainerScopeBoundary" c4Application="Container" label="&lt;font style=&quot;font-size: 16px&quot;&gt;&lt;b&gt;&lt;div style=&quot;text-align: left&quot;&gt;%c4Name%&lt;/div&gt;&lt;/b&gt;&lt;/font&gt;&lt;div style=&quot;text-align: left&quot;&gt;[%c4Application%]&lt;/div&gt;" id="jzu2_plOl5HEqln0LSlW-4"> <mxCell style="rounded=1;fontSize=11;whiteSpace=wrap;html=1;dashed=1;arcSize=20;fillColor=none;strokeColor=#666666;fontColor=#333333;labelBackgroundColor=none;align=left;verticalAlign=bottom;labelBorderColor=none;spacingTop=0;spacing=10;dashPattern=8 4;metaEdit=1;rotatable=0;perimeter=rectanglePerimeter;noLabel=0;labelPadding=0;allowArrows=0;connectable=0;expand=0;recursiveResize=0;editable=1;pointerEvents=0;absoluteArcSize=1;points=[[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0.25,0],[1,0.5,0],[1,0.75,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.75,0],[0,0.5,0],[0,0.25,0]];" vertex="1" parent="1"> <mxGeometry x="30" y="200" width="400" height="280" as="geometry" /> </mxCell> </object> <mxCell id="jzu2_plOl5HEqln0LSlW-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="jzu2_plOl5HEqln0LSlW-5"> <mxGeometry relative="1" as="geometry"> <mxPoint x="-140" y="430" as="targetPoint" /> </mxGeometry> </mxCell> <object placeholders="1" c4Name="Person name" c4Type="Person" c4Description="Description of person." label="&lt;font style=&quot;font-size: 16px&quot;&gt;&lt;b&gt;%c4Name%&lt;/b&gt;&lt;/font&gt;&lt;div&gt;[%c4Type%]&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font style=&quot;font-size: 11px&quot;&gt;&lt;font color=&quot;#cccccc&quot;&gt;%c4Description%&lt;/font&gt;&lt;/div&gt;" id="jzu2_plOl5HEqln0LSlW-5"> <mxCell style="html=1;fontSize=11;dashed=0;whiteSpace=wrap;fillColor=#083F75;strokeColor=#06315C;fontColor=#ffffff;shape=mxgraph.c4.person2;align=center;metaEdit=1;points=[[0.5,0,0],[1,0.5,0],[1,0.75,0],[0.75,1,0],[0.5,1,0],[0.25,1,0],[0,0.75,0],[0,0.5,0]];resizable=0;direction=east;" vertex="1" parent="1"> <mxGeometry x="-290" y="10" width="200" height="180" as="geometry" /> </mxCell> </object> </root> </mxGraphModel> </diagram></mxfile> XML

Excalidraw: 更高的审美需求

notion image

个人建议的最佳实践

1. 图表代码化, 跟随项目代码一起被git管理, 这样可以跟踪流程变化, 避免使用一些在线服务存在付费, 以及图随着人员变动找不到了, 以及后续维护的同事不好改图 2. 架构图使用C4模型设计; 流程图, 时序图建议使用mermaid插件;库表设计使用DDL源码; 3. 新建项目的时候建议做架构图,数据库表使用E-R图,接口设计UML图; 项目迭代, 做时序图和流程图就够了

开始订阅我的关于终生学习, 生产力以及知识管理的文章. 订阅后, 您将收到我的精选文章.

今年的阅读目标24本书达成

作者 Jimmy Lee
2023年8月22日 08:00
notion image
今天是20230822, 完成了年初定的阅读24本书的计划, 继续努力到年底, 得到一个阅读基础量. 按目前进度来说,理论上可以阅读32本书, 加油.

开始订阅我的关于终生学习, 生产力以及知识管理的文章. 订阅后, 您将收到我的精选文章.

为什么我们不愿意code review

作者 Jimmy Lee
2023年5月29日 08:00

介绍

Code review 是软件开发的重要组成部分。它是指由一名开发者对另一名开发者编写的代码进行审查,以确保符合编码标准、高效并无错误。这种过程是团队合作和质量保障的重要环节,有助于提高代码的可维护性和可读性,降低代码缺陷率,保证软件质量和安全性。然而,尽管它的重要性,许多团队仍难以有效地实施 code review。在本篇博客中,我们将探讨几个原因,为什么 code review 很难推进执行。

缺乏时间

实施 code review 面临的最大挑战之一是缺乏时间。在软件开发项目中,时间非常宝贵,开发人员需要紧密协作,不断推进项目进度以满足客户的要求和期望。日常的任务往往已经排满,且项目进度紧张,将 code review 加入日程表可能会导致难以满足截止日期。此外,code review 需要大量的时间和注意力,这使得它难以融入已经排满的日程中。因此,code review 可能会被搁置或赶工,导致效果不佳。
 

抵制变化

另一个导致 code review 难以实施的原因是抵制变化。作为开发人员,每个人都有自己的编程习惯和风格,已经习惯了某种工作方式,可能不愿意接受新的流程或工具。在某些情况下,开发人员可能认为 code review 是不必要的,他们的代码已经足够好了。在这些情况下,很难获得团队的认同,code review 可能会被视为阻碍而不是有帮助的流程。因此,为了让 code review 更好地融入软件开发项目中,需要在团队中树立共识,让每个人明白 code review 的重要性,以及它对整个项目的质量和项目进度的影响。
 

缺乏责任制

最后,缺乏责任制可能会使实施 code review 成为一项挑战。如果没有人负责确保 code review 及时进行,可能根本不会进行。在某些情况下,开发人员可能会假定其他人会接手他们的工作失误,导致延迟和错过截止日期。为避免这种情况,建立清晰的 code review 流程所有权并确保每个人都知道自己的责任至关重要。需要指定专人负责 code review 的执行,并建立相应的流程和标准,确保每个人都清楚自己的角色和职责,以及执行的时间和方式。
 

合并困难

在一个项目中,如果不同的程序员使用不同的代码风格编写代码,合并代码时会遇到一些问题。这些问题包括变更点过多,很难分清什么是业务代码,什么是格式化导致的变更。因此,为了避免这种情况,我们需要制定一套标准的代码风格,并确保所有的程序员都遵守这个标准。这样可以使代码更易于阅读和维护。此外,我们还可以使用自动化工具,如代码格式化器,来自动化执行代码风格指南中的规则,并确保所有的代码都符合标准。这样可以节省时间和减少错误。

提交不够独立

在第一次审核中,发现有太多的提交次数,这导致涉及的文件过多,给后续的分析带来了很大的困难。

权限问题

如果项目的权限集中在某几个人手中,则可能出现以下问题:第一,由于这些人的原因,可能会导致 code review 请求无法及时处理;第二,这些人可能会因为自己的优先事项而错过一些重要的 code review 请求,从而造成项目的延误;第三,这些人可能会对他们不熟悉的代码审查请求感到不耐烦,从而使得 code review 的效率受到影响。

代码审查的好处

一个精心设计的代码审查过程和认真对待代码审查的文化可以在短期内没有质变的好处,但是长期来看可以解决以下问题:
  • 检查代码的正确性
  • 确保其他工程师能够理解代码更改
  • 强化整个代码库的一致性
  • 从心理上促进团队的所有权。新入职员工看到一段代码,可能提交者是个离职员工,现在已经找不到了。但是这段代码现在是谁维护呢?可以查看OWNERS文件找到这个人。
  • 实现知识共享
  • 提供代码审查本身的历史记录。某段代码不知道为什么这么写,可以在Git仓库找到这个合并链接,查找review时的评论,理解为什么这样修改

改进措施

以下是一些可以实际操作的让团队爱上 code review 的措施:
  • 首先第一步,先对所有代码进行格式化,将提交代码必须格式化落地
  • 为 code review 留出时间:在项目计划中留出足够的时间,使得每个人都可以在紧张的时间表内完成 code review 的任务。
  • 让 code review 更轻松:尝试使用更简单的工具和流程来执行 code review,减少任务的复杂性和难度。
  • 保持小的更改,较小的改动可以防止工程师浪费时间等待较大变更的审查,减少停滞时间. 优化提交过程,减少不必要的提交,可以将同一个功能的提交合并为一个commit再push
  • 对于每个提交,在commit message中清晰地描述修改的内容,这样可以更方便地追踪每个变更的影响。
  • 使用OWNERS文件设定多个代码拥有者,将项目权限分配给更多的人,以确保 code review 请求得到及时处理,并保障项目的顺利进行。
  • 建立正面的文化:鼓励团队成员分享他们的想法和意见,并在 code review 中展示他们的技能和知识,以鼓励更多的团队成员参与和享受 code review 过程。
  • 提供及时反馈:在 code review 过程中及时提供反馈,让团队成员知道他们的工作受到了重视和赞赏。这有助于建立一个积极的工作环境,鼓励更多的参与和建设性的反馈。
  • 建立奖励制度:为那些认真进行 code review 并提供有效反馈的人提供奖励,以激励更多的参与和积极的参与。

结论

有效的 code review 对于生产高质量的软件和减少错误至关重要。然而,由于缺乏时间、抵抗变化和缺乏责任制等原因,实施它可能具有挑战性。为了克服这些挑战,重视 code review,向团队传达其重要性,确保每个人都负责其在流程中的角色是很重要的。通过正确的方法,code review 可以成为您的软件开发过程中不可或缺的一部分,有助于提高软件质量和开发效率,减少错误和风险。

开始订阅我的关于终生学习, 生产力以及知识管理的文章. 订阅后, 您将收到我的精选文章.

MacBook的休眠机制

作者 Jimmy Lee
2023年5月24日 08:00

休眠与下面两个因素有关

  • 进入休眠的等待时间
  • 是否有防止睡眠的程序运行

如何查看休眠的等待时间

命令行方式

其中的sleep就是等待进入睡眠的分钟数
pmset -g System-wide power settings: SleepDisabled 0 VACTDisabled 0 Currently in use: lidwake 1 autopoweroff 1 lowpowermode 0 standbydelayhigh 900 autopoweroffdelay 259200 proximitywake 1 standby 1 standbydelaylow 600 ttyskeepawake 1 hibernatemode 3 powernap 0 gpuswitch 2 hibernatefile /var/vm/sleepimage highstandbythreshold 50 displaysleep 2 womp 0 networkoversleep 0 sleep 5 tcpkeepalive 1 halfdim 1 acwake 0 disksleep 10

界面查看

系统信息->电源 中查看, 其中的系统睡眠定时器
notion image
 

如何查看是否有防止睡眠的程序运行

界面查看

其中的防止睡眠为是的进程, 就会阻止休眠, 常见的程序有音乐, 图书, 索引程序等, 需要看情况停止掉
notion image

命令行查看

输入 pmset -g 如下显示, 如果有prevented的进程, 就休眠不了 sleep 5 (sleep prevented by runningboardd) 输入 pmset -g assertions 显示 2023-05-24 16:21:15 +0800 Assertion status system-wide: BackgroundTask 0 ApplePushServiceTask 0 UserIsActive 1 PreventUserIdleDisplaySleep 0 PreventSystemSleep 0 ExternalMedia 0 PreventUserIdleSystemSleep 1 NetworkClientActive 0 Listed by owning process: pid 520(WindowServer): [0x0000311800099780] 00:00:00 UserIsActive named: "com.apple.iohideventsystem.queue.tickle serviceID:100003fd2 service:AppleUserHIDEventService product:USB Gaming Keyboard eventType:3" Timeout will fire in 120 secs Action=TimeoutActionRelease pid 179(runningboardd): [0x0000342b00019951] 00:00:00 PreventUserIdleSystemSleep named: "app<application.com.tencent.wwmapp.22473637.22473642.2F0D80C6-FE4C-4AE7-9E00-A2EA47947703(501)>179-5862-13981:com.apple.CFNetwork.StorageDB" Created for PID: 5862. pid 179(runningboardd): [0x0000325f00019902] 00:07:40 PreventUserIdleSystemSleep named: "app<application.com.apple.iBooksX.1152921500311880360.1152921500311880904(501)>179-919-12078:Shared Background Assertion 117 for com.apple.iBooksX(FinishTask)" Created for PID: 919. Kernel Assertions: 0x4=USB id=532 level=255 0x4=USB creat=2023/5/24 15:36 description=com.apple.usb.externaldevice.14100000 owner=IOUSBHostDevice id=534 level=255 0x4=USB creat=2023/5/24 15:23 description=com.apple.usb.externaldevice.14110000 owner=USB Gaming Keyboard id=536 level=255 0x4=USB creat=2023/5/24 15:24 description=com.apple.usb.externaldevice.14120000 owner=USB Receiver Idle sleep preventers: IODisplayWrangler

开始订阅我的关于终生学习, 生产力以及知识管理的文章. 订阅后, 您将收到我的精选文章.

一次websocket服务故障复盘

作者 Jimmy Lee
2022年10月31日 08:00

故障现象

先收到报警通知,然后运营反馈问题,
websocket服务掉线用户大于2k

排查过程

集群整体负载正常
notion image
notion image
notion image
notion image
notion image
https://arms.console.aliyun.com/apm?pid=fl0zuy81v2%40f9d1ca21c1bad6a&regionId=cn-shanghai#/callChain/ea1ae6018c16637637393566236d0001/1663763439356/1663764039356/fl0zuy81v2@f9d1ca21c1bad6a?&page=apps
notion image
9-21 21:09:39
mongodb?
9-21 21:10:20
因为健康检查超时是3秒,但是这个请求3.6秒了,我看是检查mongodb的时候慢了,我再看看mongo怎么了
9-21 21:14:29
当时mongo CPU100%了
notion image
我分析了精确的监控,mongo从20:35:30到20:35:40 短短10秒钟时间 CPU从40%到100%,不知道发生了什么
notion image
比较异常的是这几个指标
从日志的先后来看,不是健康检查通不过才掉线的,是先掉线,后健康检查不通过的
20:35:35 battle-websocket开始出现大量掉线日志
20:35:35-20:35:40 mongo读写队列从平常的0飙升到117
20:35:40 mongodb cpu100%
20:35:42 健康检查超时,是20:35:38左右开始发出检查,42时超时,因为mongodb cpu100%,检查mongo用时3.6秒
websocket实例在这期间没有发生full gc
沈文俊 9-21 21:53:14
mongocpu上去还是因为大量重练的ws连接吧
9-21 21:55:10
对 从表现上来是这样
所以问题来到了为什么这个websocket实例会突然大量用户掉线,我看过没有异常gc,且掉线用户都来自同一个实例
9-21 21:58:27
notion image
没有什么错误日志
  • and __topic__: battle-websocket and __tag__:__client_ip__: "106.14.32.124" and error
那台容器的节点服务器 网络上会不会有什么问题?
https://cs.console.aliyun.com/?spm=5176.12818093.ProductAndResource--ali--widget-product-recent.dre0.3be916d09xleyZ#/next/clusters/c5ee2ef6132674f438dfca921ee9345b5/eventcenter?ns=kube-system
notion image
从k8s事件来看,发生了reload,但是时间对不上
跟运维确认,昨晚没有进行运维操作,但是集群确认有nginx reload操作,现在知道的是如果认为执行nginx reload操作,针对http服务没有什么大的影响,但是tcp长连接服务是会掉线的
继续查k8s日志
notion image
这个时间就对应的上了,这个时间点 edas有组件更新
9-22 10:37:23
我们这个老集群好像也不是edas
9-22 10:37:43
之前导入过
9-22 10:37:50
9-22 10:39:35
里面还有个sbp的项目是edas的 迁移掉然后取消接入edas吧
由此,本次故障的原因定位到了
由于k8s集群的组件自动更新, 为了使nginx配置生效, 进行了重启操作, 短时间内大量用户断开, 发起重连请求, 进而短时间内拖垮mongodb

结果

故障持续时间 20:35:30-20:36:40 1分10秒
故障影响范围,当时大约3500人对战平台出现掉线重连,未影响游戏中用户,出故障之前在线人数约13000人.
决定websocket集群取消接入eads,因为没有用到,且还存在这种自动更新的事
在11:15分操作了,立马复现昨晚的问题
观察mongo性能,出现了短暂的CPU100%,这还是业务低峰期
notion image

后续Action

1. 如果集群中有长连接服务,进行配置更新的时候要注意在业务低峰期操作,组件升级也需要与业务部门确认操作,集群中无用组件尽早去除 2. 检查代码是否能够优化;检查是否能够优化mongo连接配置,防止出现这种类似情况,不要直接影响到数据库

责任认定

主要责任人: 阿里云
次要责任人:

开始订阅我的关于终生学习, 生产力以及知识管理的文章. 订阅后, 您将收到我的精选文章.

我的生产力工具箱

作者 Jimmy Lee
2022年8月4日 08:00
notion image
本文主要记录经常使用的软件和硬件,不包含只是试用的,给大家一个参考,最近更新时间:20220806
时刻提醒自己:Less is more,不要陷入 “productivity porn”.

知识管理

  • Notion - 目前主力使用的工具,用来做资源收集,任务管理,项目管理等
  • 印象笔记 - 在使用notion之前使用的笔记软件,但是使用起来发现,原本是想用来做知识管理的,现在却变成了收藏夹,收藏了之后就极少去看
    • 优点:
    • 多端同步,各个平台的剪藏插件丰富,可以方便保存
    • 缺点:
    • 广告太多,我虽然已经是专业版用户了,但是还是一直弹广告,续费,续费,可能需要续费到宇宙尽头才不会让你续费
 

编辑器

  • VSCODE - 主力使用的编辑器,日常复制个文本,编辑,格式化等,足够轻量,保持较少的扩展,启动也比较快
  • VIM - 主要在服务器上使用,以及在Linux系统下,终端中编辑配置文件
 

文件管理

  • 百度网盘 - 目前还是这个网盘用的比较多,但是也面临着收藏即吃灰的窘境
  • Calibre - 本地的电子书管理方案
 

开发工具

  • 集成开发环境(IDE) 基本是Jetbrains全家桶了
    • Idea - 写java的,及乱七八糟的语言
    • Goland - 写golang的
    • Datagrip - 数据库管理软件,主流数据库都支持了
    • Phpstorm - 写php的
    • Pycharm - 写python的
  • wireshark - 抓包工具
  • postman - 调试接口的
  • lens - 管理k8s集群的
 

网上冲浪

  • shadowsocks-qt5 - 流畅上网的
  • qBittorrent - 下载种子的
  • slack
  • 其他中国必备通讯软件,微信,TIM,企业微信,钉钉
 

密码管理

  • Chrome密码记忆功能 - 基本上网站的密码都是用这个记的
  • Open Two Factor Authenticator - 密码二次验证,PC上使用的是这个Chrome扩展
  • 2FAS Auth - 苹果手机上用的是这个,支持导出
  • Notion - 其他一些账号,存储在Notion中
 

图像视频工具

  • Markdown - 使用markdown的插件mermaid,基本覆盖日常开发绘图需求
  • acciiflow - 可以使用文本字符绘图,适用于不能渲染markdown的场景,如果代码注释
  • Gimp - 由于主要工作在Linux下,因此使用这个软件编辑图片
  • Flameshot: 截图工具
  • OBS: 录屏工具,大家可能主要印象是直播工具,但是其实录屏又清晰文件大小又小
 
 

浏览器扩展

硬件

要抵御消费主义真的很难,我只能尽量克制
  • 鼠标
    • 家中: roccat kone pure 黑色 红色 两个
    • 公司:MX master 3
  • 键盘
    • 公司: 阿米洛VA87 PBT 侧刻 樱桃青轴
    • 家中: Ducky 2108S2 108RGB 松鼠轴青轴
  • 桌子
    • 家中: 普通木桌
    • 公司: 格子间桌+ 乐歌升降桌M9M
  • 手机 - iPhone13
  • 电脑
    • 家中: 组装的台式机
    • 公司: 自带的Code 01 15.6英寸(R7-4800H 32G 1T PCIE 100%sRGB WIFI6)
  • 耳机
    • 家中: SONY MDR-ZX110AP
    • 公司: AKG K240 Studio
    •  
       
💡
如果有什么感兴趣的,欢迎留言!
 

开始订阅我的关于终生学习, 生产力以及知识管理的文章. 订阅后, 您将收到我的精选文章.

❌
❌