1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#+TITLE: 阅读笔记
#+DATE: 2026-01-04
#+STARTUP: overview
* Inbox
:PROPERTIES:
:CUSTOM_ID: reading-inbox
:END:
快速记录的阅读笔记和学习内容将出现在这里。
** 作者比较了三个写作平台:Write.as、Pika.Page 以及 Bear Blog。我从未接触过这些写作平台。过去,我以为你要写博客只能是自己构建、部署一个。直到最近我才知道,其实早就有了这样的平台,可以帮助你构建网页样式,你只需要写……还有选择域名?应该吧。
:PROPERTIES:
:SOURCE: https://commentingon.xyz/bear-vs-pika-vs-writeas/
:END:
[2026-01-05 Mon 11:56]
** 作者聊了聊他眼里,从 90 年代到现在的这 30 年里,web 开发都发生了什么。这篇文章有点长,值得了解这段历史。
我个人很羡慕从小就接触了计算机并去学习原理的人。我是疫情的时候才学习计算机相关的东西。当时我想要自己弄一个视觉小说游戏,接触了 OnScripter,后来想着反正闲着也是闲着,不如学习编程。当时入门学的是 C++,但是没有系统地学习,基础没有打好就开始做「C-c C-v战士」了。
让我意外的是,WordPress 居然在03年就诞生了。后面想了想也合理,它的底层是 PHP,能用上这东西的怎么说也是老资历了。我只用过一次 WordPress,是因为甲方要求我用这个。感觉刚会 Web 开发不久,对这种低代码平台很是嗤之以鼻——又慢又难用,实在是不够优雅。现在看来技术栈什么的真的没有那么重要,业务才是最重要的。就像是个人博客网站,重点是展示自己,也就是内容。不过技术栈也可以或多或少代表一个人的某些特质,还是不能把话说死了。
我了解过前端的历史,很多事情都要从那个手机开始说起——iPhone。智能手机的大众化让开发者不得不去考虑「如何让网站变成在移动设备上看也很正常」这个问题。答案是响应式设计。前端和后端就此正式分成了两派,你写你的 API,我渲染我的样式,我们不走同个道了~
文章里提到了 MongoDB,并讲了这样的一个笑话:「初创公司会选择 MongoDB 因为他们会考虑到未来的百万用户,然后在用户只有几千人的情况下花费数年时间。」哦不,这说的根本就是我!
Agile 和 Scrum,我认为它们是有趣的东西。Scrum 可以在现在的许多企业里看到,至于 Agile,就不太一定了。我在某个项目里曾经提起过 Agile,主要是因为那会儿功能都没有约定好,你个破登录做了这么久做不好,不如直接开始折腾后面的部署,先把 MVP 展示出来。结果那个同事以很鄙夷的语气问道:「你想要搞敏捷开发?」虽然后面登录做好了,但是没有保护路由,所以登录不登录根本不重要。而他也因为不太懂部署和前后端之间的关系,折腾了很久才部署成功。
作者写到 AI 时代的时候,这种事实的冲击依然让人难以接受:原本感觉无限丰富的市场,居然收得这么快速。初创公司貌似变多了,但是岗位一直在减少,大家挤破了头都想进一个岗位——靠更好看的简历、更有噱头的项目、更硬的人脉……
:PROPERTIES:
:SOURCE: https://www.artmann.co/articles/30-years-of-br-tags
:END:
[2026-01-05 Mon 12:08]
** 找到两个数的最大公约数
如果用 Python 来说的话,或许是:
#+BEGIN_SRC python
def gcd(p, q):
if q == 0:
return p
r = p % q
return gcd(q, r)
#+END_SRC
首先了解什么是公约数,其实就是 Common Factor,即可以整除这两个数字的数字。最大公约数顾名思义,是最大的公约数。
如果数字 q 是 0 的话,最大的公约数只能是 p 了。
但是我不理解后面的,为什么要得出余数 r,然后再获取 q 和 r 的最大公约数?
这本书用的是 Java 语言来进行演示,不过作者也很努力地强调,算法和编程语言的选择关系不大,学会其原理后用什么来实现都可以。因为我对 Python 的语法更熟悉(不好意思 JavaScript 你真的很奇怪),所以我会用 Python 来演示。不过呢,使用 Java 语言的人去读这本书学到的肯定会更多,作者也教读者如何写 Java 代码,很是贴心。
其实我做算法做的很糟糕,我都不知道我当年是如何通过的 CS50AI,里面多数都是算法题目,推荐一试。
最初用 Python 入门编程的一个问题是,一时间想不起来 for 循环怎么写。Python 的 for 循环和其他语言的 for 循环很不一样,这也让我在写其他语言的 for 循环时,很难一下子就理解 i 和 j 到底是什么的位置。
书中出现了一个我不明白的代码:
#+BEGIN_SRC java
public static double sqrt(double c)
{
if (c < 0) return Double.NaN;
double err = 1e-15;
double t = c;
while (Math.abs(t - c/t) > err * t)
t = (c/t + t) / 2.0;
return t;
}
#+END_SRC
说是牛顿迭代法,不过我不是很清楚这个法具体是什么东西。
1.1.6.4 节要开始讲递归了。这是一个我很不明白的概念。当然我知道它的字面意义,但是脑子依然无法一时间想出来它是如何运作的。作者说递归代码有三点:
1. 方法的第一条语句总是一个包含 return 的条件语句
2. 总是去尝试解决一个规模更小的子问题,需要收敛到最简单的情况
3. 调用的父问题和尝试解决的子问题之间不应该有任何交集
:PROPERTIES:
:SOURCE: 算法·第四版
:END:
[2026-01-06 Tue 11:20]
** 世界没有你的时候也会继续运转,你会怎么办?
艰难时期有着两个糟糕的部分:一是认为自己是唯一一个经历这一切的人,二是发现世界继续向前,而你停滞不前。事实是,没有人会救我们。只有我们可以拯救自己——这听上去像是毒鸡汤,但确实如此。我们很小,是这个宇宙的无数尘埃之一,我们只能依靠自己。
:PROPERTIES:
:SOURCE: https://tala.bearblog.dev/what-do-you-do-when-life-keeps-going-on-without-you/
:END:
[2026-01-05 Mon 11:52]
* 书籍笔记
* 课程笔记
* 文章笔记
* 视频笔记