好资源和短想法
找出歌名,让歌出名:来头不小的 Shazam 是怎么来的? [by Kiririn]
https://sspai.com/post/75362
https://sspai.com/post/75362
我是如何在 Notion 中运用 PARA 模型来整理第二大脑 [by JuniperPhoton]
https://sspai.com/post/74753
https://sspai.com/post/74753
https://github.com/rui314/chibicc
一个C语言编译器项目。为了让读者可以从头到尾清晰地理解项目演进的过程,作者非常用心地编排每一次的commit。虽然这是一个挺“玩具”的编译器,但是已经可以对一些项目进行编译了,这些项目包括Git、SQLite、libpng,它甚至也已经实现了自举。
挺有意思的。
一个C语言编译器项目。为了让读者可以从头到尾清晰地理解项目演进的过程,作者非常用心地编排每一次的commit。虽然这是一个挺“玩具”的编译器,但是已经可以对一些项目进行编译了,这些项目包括Git、SQLite、libpng,它甚至也已经实现了自举。
挺有意思的。
https://youtu.be/B6oMqAJ5k3w
最近也在看这款车,这个视频比较好的说了一些优缺点
最近也在看这款车,这个视频比较好的说了一些优缺点
#杂
程序员始终逃不过所谓的“35岁年龄问题”(有可能这个问题过了几年又变成了40:)
我今年已经40了,而且:
* 我是从大学一毕业就开始做程序员的。
* 从来没有做过一天的管理,从来的身份都是“工程师”,未来也不想转方向。
* 我非常喜欢写代码,未来打算一直写代码到退休。
尽管如此,仍然有很多其他人可能关心的问题,我解决(解答)不了:
* 如何做到“财富自由”?(我工作这些年也没有达到,还欠了一屁股的债,惭愧:)
* 程序员如何转管理?(没想过,和代码打交道比跟人打交道轻松多了:)
* 如何成为“技术大牛”?(别问我,我不是,你认错人了:)
* 如何确保学习的技术永不过时?(空气凝固了:)
....
以上这些别人关注的问题,有些我不关心,还有一些确实是能力所限解答不了。
而且我还有可能将来某天面对这样现实的问题:
* 假如某天我失业了,如何确保一定能再找到一份程序员的工作?
* 新知识你要是学不动了,该怎么办?
....
无法回答。
我对这些现实问题的处理方式就是等真的有问题了再来处理吧(懒惰是程序员的美德之一)。现阶段能做的就是做好工作、在所在领域保持学习。
我这样的“大龄、非成功程序员样本”,可能对陌生人的意义,更多的在于:当你开始问所谓的“35岁年龄问题”时,不妨可以看看我这个“异常样本”。
虽然是“异常样本”,虽然可能不太具备参考价值,也不是“标准答案”,不具备“可复制性”,但是由于我相当多的输出都在网上可见,所以总归可能对所谓的“35岁年龄问题”提供另一种角度和思考。
至于什么角度、如何思考,这就见仁见智了。我只提供事实,不参和观点和评论。
以上。
程序员始终逃不过所谓的“35岁年龄问题”(有可能这个问题过了几年又变成了40:)
我今年已经40了,而且:
* 我是从大学一毕业就开始做程序员的。
* 从来没有做过一天的管理,从来的身份都是“工程师”,未来也不想转方向。
* 我非常喜欢写代码,未来打算一直写代码到退休。
尽管如此,仍然有很多其他人可能关心的问题,我解决(解答)不了:
* 如何做到“财富自由”?(我工作这些年也没有达到,还欠了一屁股的债,惭愧:)
* 程序员如何转管理?(没想过,和代码打交道比跟人打交道轻松多了:)
* 如何成为“技术大牛”?(别问我,我不是,你认错人了:)
* 如何确保学习的技术永不过时?(空气凝固了:)
....
以上这些别人关注的问题,有些我不关心,还有一些确实是能力所限解答不了。
而且我还有可能将来某天面对这样现实的问题:
* 假如某天我失业了,如何确保一定能再找到一份程序员的工作?
* 新知识你要是学不动了,该怎么办?
....
无法回答。
我对这些现实问题的处理方式就是等真的有问题了再来处理吧(懒惰是程序员的美德之一)。现阶段能做的就是做好工作、在所在领域保持学习。
我这样的“大龄、非成功程序员样本”,可能对陌生人的意义,更多的在于:当你开始问所谓的“35岁年龄问题”时,不妨可以看看我这个“异常样本”。
虽然是“异常样本”,虽然可能不太具备参考价值,也不是“标准答案”,不具备“可复制性”,但是由于我相当多的输出都在网上可见,所以总归可能对所谓的“35岁年龄问题”提供另一种角度和思考。
至于什么角度、如何思考,这就见仁见智了。我只提供事实,不参和观点和评论。
以上。
#杂
我记得大概是去年这个时候,由于前公司要重构一下存储元数据的存储引擎,开始研究怎么实现一个轻量级的存储引擎。
当时想研究一下市面上的B+Tree版本的存储引擎,可是有的项目很大(Innodb、WireTigger等),有的项目就是个玩具,只能演示原理做不到生产级别。这段时间可以说压力很大,印象最深的是当时去北京团建外出到景区,当天凌晨有世界杯亚洲区预选赛澳大利亚对中国,睡不着就一边看代码一边听比赛。
这时候偶然看到的一个精简的2.5版本的sqlite btree库,只有几千行代码,这个简单的实现打开了理解生产级B+Tree实现的大门。
在这之后就是“顺势”看了更高版本的sqlite btree实现,这些故事都写在了:《sqlite3.36版本 btree实现(零)- 起步及概述》。
仅就“生产级B+Tree”实现而言,sqlite的实现虽然还是有各种问题:比如效率不高等,但是都向我展现了总体的实现思路,后面再看这方面的实现也有了基础,比如今年研究了ARIES这篇论文,最近还在看BW-Tree的论文。
现在一年时间过去了,我又开始探索一个新的领域:Jepsen,想在项目里使用上这个项目来验证我们系统的实现,初期仍然跟以往自己独立研究一些问题一样遇到很多困难,因为太多新的知识点没有接触过:Clojure、模型检验(Model checking),等等。
回头来看,很多我后来看来获得技术上很大成长的时候,都是这种独立、深入研究某个领域之后带来的:身边没人请教、自己找答案、深入阅读文档、代码,等等。这样的经历多了以后,对这种压力似乎也感到适应,对压力之后的收益也清楚,甚至对解决这些难题有一些期望了。
我记得大概是去年这个时候,由于前公司要重构一下存储元数据的存储引擎,开始研究怎么实现一个轻量级的存储引擎。
当时想研究一下市面上的B+Tree版本的存储引擎,可是有的项目很大(Innodb、WireTigger等),有的项目就是个玩具,只能演示原理做不到生产级别。这段时间可以说压力很大,印象最深的是当时去北京团建外出到景区,当天凌晨有世界杯亚洲区预选赛澳大利亚对中国,睡不着就一边看代码一边听比赛。
这时候偶然看到的一个精简的2.5版本的sqlite btree库,只有几千行代码,这个简单的实现打开了理解生产级B+Tree实现的大门。
在这之后就是“顺势”看了更高版本的sqlite btree实现,这些故事都写在了:《sqlite3.36版本 btree实现(零)- 起步及概述》。
仅就“生产级B+Tree”实现而言,sqlite的实现虽然还是有各种问题:比如效率不高等,但是都向我展现了总体的实现思路,后面再看这方面的实现也有了基础,比如今年研究了ARIES这篇论文,最近还在看BW-Tree的论文。
现在一年时间过去了,我又开始探索一个新的领域:Jepsen,想在项目里使用上这个项目来验证我们系统的实现,初期仍然跟以往自己独立研究一些问题一样遇到很多困难,因为太多新的知识点没有接触过:Clojure、模型检验(Model checking),等等。
回头来看,很多我后来看来获得技术上很大成长的时候,都是这种独立、深入研究某个领域之后带来的:身边没人请教、自己找答案、深入阅读文档、代码,等等。这样的经历多了以后,对这种压力似乎也感到适应,对压力之后的收益也清楚,甚至对解决这些难题有一些期望了。
#杂
去年12月因为新工作要使用Rust,于是买来两本Rust编程的书开始学习:
《Rust权威指南》和《Rust程序设计》。
我记得当时离职之后有个一周左右的空窗时间,就把这两本书看了个大概,直接到新工作开始干活,边干边加深对Rust的理解。
前两周整理出给多抓鱼的闲书,于是把第一本出掉留下了第二本,正好今天推上一位朋友晒图说在多抓鱼刚好收了我出的这本书。
我回想了一下就学习一门知识的步骤:
1. 找一两本这个领域的书籍来阅读。这个流程不能太长,尽量控制在一个月以内,也不要求面面俱到。这个阶段的目标是:对这门知识的大体结构有了了解,掌握最常用的用法。
2. 上手实践。遇到有难以理解掌握的知识就累积起来,找一个大块的时间做一个总结归纳。我的周刊里有写过Rust并发相关的一篇文章,就是这第二步的总结:《周刊(第19期):Rust并发安全相关的几个概念(上)》。
3. 了解这个知识领域常用的搜索工具,知道在哪里可以快速找到答案,以Rust而言最好的工具就是浏览器插件:Rust search extension。
4. 有了知识体系、实践、知道怎么搜索,这时候实际上书的重要性进一步下降了,因为很多时候我已经知道怎么查找答案了,这也就是为什么会把这本书二手出掉的原因之一,另一个原因是对比起《Rust程序设计》来说,权威指南有点浅了,所以我宁可先留着《Rust程序设计》。
当然回想起来,能快速使用Rust开始干活,也是拜其他工具所赐:
* Rust Analysis插件、Rust编译器都能给出更好的报错信息,“教”我如何写好Rust代码,出错的时候告诉我哪里错了该怎么改。
* 我换了性能更高的笔记本(M1、64G内存),这样编译速度更快,这些编译工具也就能更快的提示我了。
去年12月因为新工作要使用Rust,于是买来两本Rust编程的书开始学习:
《Rust权威指南》和《Rust程序设计》。
我记得当时离职之后有个一周左右的空窗时间,就把这两本书看了个大概,直接到新工作开始干活,边干边加深对Rust的理解。
前两周整理出给多抓鱼的闲书,于是把第一本出掉留下了第二本,正好今天推上一位朋友晒图说在多抓鱼刚好收了我出的这本书。
我回想了一下就学习一门知识的步骤:
1. 找一两本这个领域的书籍来阅读。这个流程不能太长,尽量控制在一个月以内,也不要求面面俱到。这个阶段的目标是:对这门知识的大体结构有了了解,掌握最常用的用法。
2. 上手实践。遇到有难以理解掌握的知识就累积起来,找一个大块的时间做一个总结归纳。我的周刊里有写过Rust并发相关的一篇文章,就是这第二步的总结:《周刊(第19期):Rust并发安全相关的几个概念(上)》。
3. 了解这个知识领域常用的搜索工具,知道在哪里可以快速找到答案,以Rust而言最好的工具就是浏览器插件:Rust search extension。
4. 有了知识体系、实践、知道怎么搜索,这时候实际上书的重要性进一步下降了,因为很多时候我已经知道怎么查找答案了,这也就是为什么会把这本书二手出掉的原因之一,另一个原因是对比起《Rust程序设计》来说,权威指南有点浅了,所以我宁可先留着《Rust程序设计》。
当然回想起来,能快速使用Rust开始干活,也是拜其他工具所赐:
* Rust Analysis插件、Rust编译器都能给出更好的报错信息,“教”我如何写好Rust代码,出错的时候告诉我哪里错了该怎么改。
* 我换了性能更高的笔记本(M1、64G内存),这样编译速度更快,这些编译工具也就能更快的提示我了。
#App
🕔 Rize: 追踪你的时间
相信大家第一眼都被 Rize 酷炫的仪表盘给吸引了。蓝,黑,紫充满科技感的配色,渐变的进度条颜色让 Rize 从一众时间追踪 APP 中脱引而出。
Rize 从桌面应用,浏览器网页和日历活动三个方向追踪用户的时间。一天结束后,用户可以从 Rize 的报告中既可以获得宏观的数据,也可以获得微观的数据。
💽 数据分析
最宏观的数据在仪表盘右上方,展示了用户总共的工作时间。用户可以轻松得知今天工作时间有没有达标。
往下看便是细一层的数据。Rize 将时间分为了三块,专注,会议和休息。用户不同的工作性质会让造就这一部分巨大的差距。专注功能会类似番茄时钟。点击每个板块,Rize 会提供一些数据统计。例如对于休息,Rize 会提供平均每次休息时间,平均工作多久休息一次和休息总时间。在这基础上,Rize 还会提供参考范围。
右侧的底部是更加细致的分类。Rize 给了不少预设类别和许多预设的规则。大部分应用都可以找到对应的分类。剩下的将归为 Uncategorized。Rize 的预设 Category 非常多,用户可能会不适应它的分类。
中间一块是关于项目以及专注任务的信息。最左侧是各个 APP 和网站使用的时间,上面是一天的时间线。
⭐ 亮点
除了基本功能之外,当开启 Rize 后,桌面会出现一个悬浮栏。悬浮栏告诉用户目前 Rize 的状态,工作时间以及一天过去了多少。一天过去多少这个功能,我个人比较喜欢。这让我清楚地知道我今天还有多久时间可以干活。
📢 媒体
Rize 荣获 PH 的日榜第一。Rize 在 Twitter 上收获了 2.5k 的关注者,并在不断地与用户互动。
💰 价格
Rize 支持 MacOS 和 Windows,提供十四天的试用。试用之后,想要试用全部功能需要 $9.99 一个月。
☁️ 感想
Rize 希望帮助用户更好的利用时间,用户也希望借助 Rize 提供工作效率,但目前来看还是有些困难。Rize 只能完成时间分析和追踪的那一步。如何规划,提升,获得反馈,重新矫正仍在 Rize 的能力范围之外。想要提高效率,用户需要的绝对不止是 Rize。
频道:@NewlearnerChannel
🕔 Rize: 追踪你的时间
相信大家第一眼都被 Rize 酷炫的仪表盘给吸引了。蓝,黑,紫充满科技感的配色,渐变的进度条颜色让 Rize 从一众时间追踪 APP 中脱引而出。
Rize 从桌面应用,浏览器网页和日历活动三个方向追踪用户的时间。一天结束后,用户可以从 Rize 的报告中既可以获得宏观的数据,也可以获得微观的数据。
💽 数据分析
最宏观的数据在仪表盘右上方,展示了用户总共的工作时间。用户可以轻松得知今天工作时间有没有达标。
往下看便是细一层的数据。Rize 将时间分为了三块,专注,会议和休息。用户不同的工作性质会让造就这一部分巨大的差距。专注功能会类似番茄时钟。点击每个板块,Rize 会提供一些数据统计。例如对于休息,Rize 会提供平均每次休息时间,平均工作多久休息一次和休息总时间。在这基础上,Rize 还会提供参考范围。
右侧的底部是更加细致的分类。Rize 给了不少预设类别和许多预设的规则。大部分应用都可以找到对应的分类。剩下的将归为 Uncategorized。Rize 的预设 Category 非常多,用户可能会不适应它的分类。
中间一块是关于项目以及专注任务的信息。最左侧是各个 APP 和网站使用的时间,上面是一天的时间线。
⭐ 亮点
除了基本功能之外,当开启 Rize 后,桌面会出现一个悬浮栏。悬浮栏告诉用户目前 Rize 的状态,工作时间以及一天过去了多少。一天过去多少这个功能,我个人比较喜欢。这让我清楚地知道我今天还有多久时间可以干活。
📢 媒体
Rize 荣获 PH 的日榜第一。Rize 在 Twitter 上收获了 2.5k 的关注者,并在不断地与用户互动。
💰 价格
Rize 支持 MacOS 和 Windows,提供十四天的试用。试用之后,想要试用全部功能需要 $9.99 一个月。
☁️ 感想
Rize 希望帮助用户更好的利用时间,用户也希望借助 Rize 提供工作效率,但目前来看还是有些困难。Rize 只能完成时间分析和追踪的那一步。如何规划,提升,获得反馈,重新矫正仍在 Rize 的能力范围之外。想要提高效率,用户需要的绝对不止是 Rize。
频道:@NewlearnerChannel
#Design #GitHub情报 #Tools #Web
🎨 用两款在线工具,轻松制作文章简介封面
对于像我这样不太会设计的人来讲,每次制作文章封面都要思考很久。在我看来,文章封面必须要包含:主题图片、标题和一些概述文字。今天介绍的两个项目,可以帮助我们轻松实现这一点
1️⃣ CoverView
🔗:GitHub | Web
CoverView 是一款开源的在线文章封面生成器,输入文章标题、作者,并且自定义字体、颜色、徽标图案后,即可生成并下载章简介封面
2️⃣ Pika
🔗:Web
相比于 CoverView,Pika 在设计和功能上更为成熟。除了能够自定义文章标题、作者、概述、图片等封面元素外,Pika Pro 还支持直接通过文章 URL 获取 Meta 信息并自动填充。虽然需要付费,但它确实提供了非常多的自定义选项
👀 其实类似的封面格式,GitHub 在去年也开始使用,便于分享链接后人们能在预览图中直观地看到项目相关信息。无独有偶,我很喜欢的播客节目 Anyway.FM 也用 CDN URL 巧妙地实现了动态 Twitter 卡片预览,非常有意思
📘 关联阅读:
1️⃣ chaosMachine:一键生成独特图片背景
2️⃣ Haikei · 快速生成独特的背景设计
3️⃣ Wicked Backgrounds:一键生成 SVG 波浪背景图片
4️⃣ Figen:灵活、可自定义的封面图片生成器
频道:@NewlearnerChannel
🎨 用两款在线工具,轻松制作文章简介封面
对于像我这样不太会设计的人来讲,每次制作文章封面都要思考很久。在我看来,文章封面必须要包含:主题图片、标题和一些概述文字。今天介绍的两个项目,可以帮助我们轻松实现这一点
1️⃣ CoverView
🔗:GitHub | Web
CoverView 是一款开源的在线文章封面生成器,输入文章标题、作者,并且自定义字体、颜色、徽标图案后,即可生成并下载章简介封面
2️⃣ Pika
🔗:Web
相比于 CoverView,Pika 在设计和功能上更为成熟。除了能够自定义文章标题、作者、概述、图片等封面元素外,Pika Pro 还支持直接通过文章 URL 获取 Meta 信息并自动填充。虽然需要付费,但它确实提供了非常多的自定义选项
👀 其实类似的封面格式,GitHub 在去年也开始使用,便于分享链接后人们能在预览图中直观地看到项目相关信息。无独有偶,我很喜欢的播客节目 Anyway.FM 也用 CDN URL 巧妙地实现了动态 Twitter 卡片预览,非常有意思
📘 关联阅读:
1️⃣ chaosMachine:一键生成独特图片背景
2️⃣ Haikei · 快速生成独特的背景设计
3️⃣ Wicked Backgrounds:一键生成 SVG 波浪背景图片
4️⃣ Figen:灵活、可自定义的封面图片生成器
频道:@NewlearnerChannel
最近有人问了我这么一个问题:”怎么才能快速增加TG频道的关注?“我的回答:”如果你只想要关注者的话,发涩图。“
如果只限定在中国人上的话,TG的用户一定是社会的少数,至少有翻墙的能力所以大部分有点技术底子,男性居多,那么如果想吸引大部分人群的眼光,放一些吸引本能的东西是应该很有效果的。
问题在于,这些”受众“是否是你真的想吸引的。第一,将TG作为主要本能寻觅处的个人更有可能缺乏自己搜索资源的能力,这些人的能力、立场、三观,可能与你频道的初衷完全相反。第二,以图像、视频为媒介的信息,尤其是与本能相关的信息打破了语言的边界和隔阂,换句话说你可能吸引到的不只是本语言的看客,这些会降低频道整体的Engagement rate,而且还要考虑你是否有精力时间和能力去应付。
Tom Scott在英国RI的演讲中提到:”YouTube频道的关注者数量其实无法代表你频道的质量。其代表的只是你在这个平台呆了多久、你一共向因特网扔了多少东西、和你有多少1-hit-wonder(爆红的视频)而已。“ 个人认为,如果为了单纯的数量(而且是无法盈利的数量)去违背自己的初衷和频道的本来受众,那就有些没意思了。
如果只限定在中国人上的话,TG的用户一定是社会的少数,至少有翻墙的能力所以大部分有点技术底子,男性居多,那么如果想吸引大部分人群的眼光,放一些吸引本能的东西是应该很有效果的。
问题在于,这些”受众“是否是你真的想吸引的。第一,将TG作为主要本能寻觅处的个人更有可能缺乏自己搜索资源的能力,这些人的能力、立场、三观,可能与你频道的初衷完全相反。第二,以图像、视频为媒介的信息,尤其是与本能相关的信息打破了语言的边界和隔阂,换句话说你可能吸引到的不只是本语言的看客,这些会降低频道整体的Engagement rate,而且还要考虑你是否有精力时间和能力去应付。
Tom Scott在英国RI的演讲中提到:”YouTube频道的关注者数量其实无法代表你频道的质量。其代表的只是你在这个平台呆了多久、你一共向因特网扔了多少东西、和你有多少1-hit-wonder(爆红的视频)而已。“ 个人认为,如果为了单纯的数量(而且是无法盈利的数量)去违背自己的初衷和频道的本来受众,那就有些没意思了。
CalDigit TS4 评测:如何用一根雷电 4 线驱动 2 块最高规格的 XDR? [by 宛潼]
https://sspai.com/post/75166
https://sspai.com/post/75166
自学这个东西, 个体差异大.不同领域对自学的看法也完全不一样, 有像计算机一样推崇自学的, 也有像物理数学这样, 自学目标超过基础级就约等于民科.
虽说是自学, 部分人对自学的理解和实践可能是 没有老师的上课. 但是准确来说,其实是 "自教".
自学效果完全取决于自己的教学理念和教学方案. 自学难度也在于这个, 我都没学呢. 我要怎么设计出合适的教学方案?
所以行业对自学的评价本质上是自学者教学水平的预期,大学课程越烂,理解知识越简单的越好。
典型就是计算机,大家都相信大学课程烂,同样自学者根据路线自我教学的难度较低。
换成数学,研究生毕业都未必能教好数学呢。谁信你初学者能自学的好?多半只会变民科
虽说是自学, 部分人对自学的理解和实践可能是 没有老师的上课. 但是准确来说,其实是 "自教".
自学效果完全取决于自己的教学理念和教学方案. 自学难度也在于这个, 我都没学呢. 我要怎么设计出合适的教学方案?
所以行业对自学的评价本质上是自学者教学水平的预期,大学课程越烂,理解知识越简单的越好。
典型就是计算机,大家都相信大学课程烂,同样自学者根据路线自我教学的难度较低。
换成数学,研究生毕业都未必能教好数学呢。谁信你初学者能自学的好?多半只会变民科