#939 一点工作心得

2023-08-15
  1. 戒躁,克制反驳别人的想法
    一则,别人与我看法相左的言辞中,一般也有他一点道理在
    二则,情绪受激之时说话总是容易偏颇,不如平心静气地思考思考
    三则,和为贵
  2. 沟通的时候多想想对方的立场
    由于身处的位置不同,看问题的角度不同,对同一件事情的看法有很大差异
  3. 三人行必有我师
    大家身上都有值得我学习的点,多学习别人的优点,也要学习别人看问题的角度
  4. 将压力分摊出去
    了解同事 + 信任同事
    注意:及时跟踪进度
  5. 合理安排工作
    分清轻重缓急,不要遗漏
  6. 适应快速切换
    应该我更喜欢专心地做一件事,但实际生活中,工作中,几乎不可能如此,总是不停地有各种事情插入
    需要学会在各个任务之间快速切换

#937 数学:小圆沿着大圆滚动

2023-07-22

阮一峰博客上看到这么一个数学题(原文是 maths.org 2014 年的一篇文章):

已知:小圆的半径为 $r$,大圆的半径为 $4r$
:小圆自身滚动了几周?

#936 转载:成年期的快与慢

2023-07-21

我们生活在这样一个社会:小孩子像成年人一样老成,而成年人像小孩子一样幼稚

现在的孩子们比以前更容易接触到成年人的世界,因此他们更早成人化。

从很小的年龄起,他们就在视频网站观看暴力战争,在社交网络上看到性感和暴露的照片和视频。

然而,当孩子们成年以后,他们往往无法实现经济独立,也没有机会承担足够的责任

结果,整个社会的文化就变得很幼稚,成年人感到无法做出承诺,即使承诺了也缺乏信心,对以后的生活感到难以把握。

他们的行事方式和处事态度,就像还在青少年时期。

#935 F12 网络过滤器

2023-07-16

示例

mime-type:image/png larger-than:1K
# Edge 官方示例,表示过滤出大于 1K 的 PNG 图片

domain:*.csdn.net method:POST
# 过滤出 CSDN 域的 POST 请求。

has-response-header:Content-Type -domain:*.baidu.com
# 过滤出带 Content-Type 头的请求,排除百度域。

清单

属性 详情
domain 仅显示来自指定域的资源。您可以使用通配符(*)来包含多个域。
例如,*.com 会显示所有以 .com 结尾的域名资源。
DevTools 会将所有找到的域名填充到自动完成下拉菜单中。
has-response-header 显示包含指定 HTTP 响应头的资源。
DevTools 会将所有找到的响应头填充到自动完成下拉菜单中。
is 使用 is:running 查找 WebSocket 资源。
larger-than 显示大于指定大小的资源,单位为字节。
设置值为 1000 相当于设置值为 1k
method 显示通过指定的 HTTP 方法类型检索的资源。
DevTools 会将所有找到的 HTTP 方法填充到下拉菜单中。
mime-type 显示指定 MIME 类型的资源。
DevTools 会将所有找到的 MIME 类型填充到下拉菜单中。
mixed-content 显示所有混合内容资源(mixed-content:all),或仅显示当前显示的资源(mixed-content:displayed)。
scheme 显示通过不安全的 HTTP(scheme:http)或安全的 HTTPS(scheme:https)检索的资源。
set-cookie-domain 显示具有与指定值匹配的 Set-Cookie 标头中的 Domain 属性的资源。
DevTools 会将所有找到的 Cookie 域填充到自动完成中。
set-cookie-name 显示具有与指定值匹配的 Set-Cookie 标头中的名称的资源。
DevTools 会将所有找到的 Cookie 名称填充到自动完成中。
set-cookie-value 显示具有与指定值匹配的 Set-Cookie 标头中的值的资源。
DevTools 会将所有找到的 Cookie 值填充到自动完成中。
status-code 显示与特定 HTTP 状态码匹配的资源。
DevTools 会将所有找到的状态码填充到自动完成下拉菜单中。
  1. 多个条件之间是 AND 关系,OR 关系暂时不支持。
  2. 前面加上 - 表示取反,小技巧:可以通过输入 - 之后的自动补全查看所有支持的选项。

参考资料与拓展阅读

#934 软件开发中的“上游”与“下游”

2023-07-13

类比到河流,上游和下游概念就非常明确,水从上游往下游流动。

在工业生产车间中,不同工序就组成一条河流,流动的产品,前面的工序是上游,后面的工序是下游。
下游依赖上游。

在软件设计中,不同服务(SOA、微服务)组成一条河流,流动的是数据,先处理数据的是上游,后处理数据的是下游。
下游依赖上游。
注意:数据是怎么个流动方式的不重要,可能是上游推的,可能是下游拉的。上游和下游之间可能会互相调用 API,这个也不影响数据的依赖关系。
总之,上游靠近入口网关,下游靠近出口网关。

开源项目中,fork 关系组成一条河流,流动的是代码,被 fork 的项目是上游,fork 出来的项目是下游。
下游依赖上游。
当然,下游的代码更新也可能会反馈到上游。

#933 转载:美国最具争议的问题,哈佛为何败诉?

2023-07-11

两周前,美国社会向来最具争议的政策之一——自上世纪 60 年代开始践行的“平权法案”(Affirmative Action)被推翻。

美国最高法院针对涉及哈佛大学和北卡罗莱纳大学被控在招生时考虑种族比例的案件裁定,宪法禁止大学在招生过程中考虑申请人的种族因素。这一判决被视作自推翻堕胎权判例后又一次历史性裁决,也有观点指出,这一裁决更多体现美国最高院保守派压倒性势力以及保守主义的全面回归。

看理想两位节目主讲人庞颖、詹青云,关于此次平权法案被推翻特别录制了一期番外,延续《思辨力 35 讲》的节目形式,庞颖和詹青云分别从支持者、反对者的两方立场就平权法案的争议与利弊进行了一场辩论。问题不仅关乎种族正义、教育平等,也关乎社会的公正与良善。

#932 PEP 703 提案

2023-07-11

Python 内部的 GIL(全局解释器锁)使 Python 的多线程开发变得更加简单,避免了大部分竞争条件,但是限制了 Python 进程使用多核心处理器,所有需要并行的场景全部受限。
官方建议,如果需要用到多核,那就选择多进程编程。

Python 出现的时候还没有多核 CPU,而现在多核心早就成为了主流,4 核、8 核太常见了。

因此从来不乏移除 GIL 的声音,不过没有一次成功。要想不对现有的项目造成太大的影响简直难于登天。
PS:几年前有一个叫做 Gilectomy 的项目(GIL Ectomy,GIL 切除术)因为导致 Python 性能下滑严重而失败。

最大的挑战是要保持对现有代码的兼容性,保住基本盘,也就是容易上手,容易开发。

  • 2021 年,香农计划成员 Eric Snow 提交 PEP 684 A Per-Interpreter GIL(每个解释器一个 GIL)。
    这应该是一个比较稳妥的方案,但我怀疑性价比是否足够。
    PS:和下面提到的 nogil 方案不冲突。

  • PEP 683 – Immortal Objects, Using a Fixed Refcount

  • PEP 554 – Multiple Interpreters in the Stdlib

  • 2021 年,Meta(Facebook)开发者 Sam Gross 基于 Python 3.9 创建了一个 nogil 的分支,最终证明了这个方案技术上可行,相较于 Gilectomy 单核性能没有收到太大的影响,拓展性也不错。

  • 2022 年 5 月,Sam Gross 在 Python 语言峰会上介绍了他的 nogil 项目,提议移除 GIL。
  • 2023 年 1 月,Sam Gross 又提交了一份新的提案 PEP 703 Making the Global Interpreter Lock Optional in CPython(使 GIL 成为可选项)。

现在是最接近移除 GIL 的时刻。
如果顺利通过,几年之后,我们就能用上没有 GIL 的 Python。

问题

  1. PEP 703 引入 --disable-gil 来创建一个没有 GIL 的 Python 版本。
    但是会导致以后部分 Python 库的开发需要提供两种包文件,运行在 nogil 上的版本,和运行在 GIL 上的版本。

参考资料与拓展阅读