互联网的未来很可能是规模更小的社区 |
2025-03-20 |
The future of the internet is likely smaller communities, with a focus on curated experiences
非常赞同 The Verge 和 Vox Media 的研究团队发布的这篇调查报告,研究表明:
非常赞同 The Verge 和 Vox Media 的研究团队发布的这篇调查报告,研究表明:
- 大平台正在失去信任,颠覆已经到来
- 权力正在向消费者回归,比如近几年 Fediverse (联邦宇宙) 的发展
- 消费者渴望更有个人认同感的社区
- 小型化、目标驱动型社区是未来的趋势
- 内容推动社区发展,参与并不总是要大声喧哗,有时,只要在线就足以建立有意义的联系。90%的人什么也不做;9%的人偶尔发布一次;1%的人承担了 80%的内容创作
为博客添加 Algolia 搜索 |
2025-03-17 |
原先我是使用 pg_search 包做搜索功能,但搜索效果很差,由于没有安装中文分词库,所以模糊搜索几乎不可用。
所以我想优化搜索功能,刚开始是准备自部署 meilisearch 服务端来完成,初始代码写完后,却一直无法完成 ActionText 的索引,遂放弃。
随后简单对比了几家提供搜索功能的服务商,只有 Algolia 提供了免费层,1万次/月的搜索次数,1百万条索引记录,非常慷慨,而且它也是 Hacker News 的全文搜索后端,很好用。
Algolia 支持的数据导入方式非常丰富,除了 api 外,还提供了主流 CMS 的插件、爬虫、文件的导入方法:
algolia import data methods
这里我使用了 Rails 的SDK进行导入,步骤如下:
1. 添加包到 Gemfile 并安装
所以我想优化搜索功能,刚开始是准备自部署 meilisearch 服务端来完成,初始代码写完后,却一直无法完成 ActionText 的索引,遂放弃。
随后简单对比了几家提供搜索功能的服务商,只有 Algolia 提供了免费层,1万次/月的搜索次数,1百万条索引记录,非常慷慨,而且它也是 Hacker News 的全文搜索后端,很好用。
Algolia 支持的数据导入方式非常丰富,除了 api 外,还提供了主流 CMS 的插件、爬虫、文件的导入方法:

这里我使用了 Rails 的SDK进行导入,步骤如下:
1. 添加包到 Gemfile 并安装
gem "algoliasearch-rails"
2. 添加初始化文件:config/initializers/algoliasearch.rb
AlgoliaSearch.configuration = { application_id: ENV["ALGOLIASEARCH_APP_ID"], api_key: ENV["ALGOLIASEARCH_API_KEY"], # pagination_backend: :will_paginate # 如果使用了 will_paginate 分页,可添加该行 }
3. 在需要索引的模型中,添加搜索功能,比如我在 Article 模型中添加的代码:
class Article < ApplicationRecord has_rich_text :content # ... include AlgoliaSearch algoliasearch if: :should_index? do attribute :title, :slug, :description, :plain_content attribute :plain_content do text = content.to_plain_text algolia_max_characters = ENV.fetch("ALGOLIA_MAX_CHARACTERS", "3500").to_i if text.size > algolia_max_characters text = text.truncate(algolia_max_characters) end text end searchableAttributes [ "title", "slug", "description", "plain_content" ] end def should_index? status == "publish" || status == "shared" end #... end
需要注意的是,免费层的每个索引记录大小需要限制在 10kb 以内,但我使用 bytesize 方法时无法成功添加,提示无效的 object,所以这里我直接使用字符数。
然后在 articles_controller 中添加相关处理代码
然后在 articles_controller 中添加相关处理代码
def index respond_to do |format| format.html { @page = params[:page].present? ? params[:page].to_i : 1 @per_page = 10 if params[:q].present? # 使用Algolia搜索 algolia_results = Article.algolia_search(params[:q], { hitsPerPage: @per_page, page: @page - 1 }) # Algolia页码从0开始 # 获取Algolia的结果总数 @total_count = algolia_results.size @articles = algolia_results else # 不搜索,只分页 @articles = Article.published .includes(:rich_text_content) .order(created_at: :desc) .paginate(page: @page, per_page: @per_page) @total_count = @articles.total_entries end } # ... end end
在 view 中添加搜索代码
<%= form_tag root_path, method: :get, class: 'search-form' do %> <%= search_field_tag :q, params[:q], placeholder: 'Search...' %> <%= submit_tag 'Search' %> <% end %>
最后,设置好认证信息和环境变量后,在 rails console 中进行首次索引:Article.reindex!
如果想清除所有索引,则执行:Article.clear_index!
完成
完成
为 GitHub 构建免费语义搜索工具的心得体会以及失败的原因 |
2025-03-14 |
What I Learned Building a Free Semantic Search Tool for GitHub and Why I Failed
来自 Coder 公司的开发者 Warren 发现了一个 Github Issue 在搜索上的痛点,于是开发了语义搜索工具 SemHub,但该工具的用户留存率几乎为0,似乎已经注定是一个失败的项目,因此作者写了这篇文章分享失败经验。
来自 Coder 公司的开发者 Warren 发现了一个 Github Issue 在搜索上的痛点,于是开发了语义搜索工具 SemHub,但该工具的用户留存率几乎为0,似乎已经注定是一个失败的项目,因此作者写了这篇文章分享失败经验。
用户牵引力才是王道--即使你的产品在技术上取得了可喜的成果,但如果你的问题过于边缘化,那么你就无法获得足够的用户来开发可行的产品。
你必须解决他们的问题,人们才会给你时间,我想“Github”搜索不够好这个问题对大多数开发者来说都太微不足道了。
熟悉的诺基亚回来了 |
2025-03-13 |
根据报道,苹果公司正在为 iOS 19、iPadOS 19 和 macOS 16 重新设计界面,以便挽救持续低迷的销售量。
看到这条新闻,我想起了曾经调侃诺基亚的一句话:科技以换壳为本。
只不过这次的对象不是诺基亚,而是苹果,换的也不是壳,而是 UI。
做为曾经压倒诺基亚的那根稻草,不知将会被哪根新稻草压倒呢,期待。
看到这条新闻,我想起了曾经调侃诺基亚的一句话:科技以换壳为本。
只不过这次的对象不是诺基亚,而是苹果,换的也不是壳,而是 UI。
做为曾经压倒诺基亚的那根稻草,不知将会被哪根新稻草压倒呢,期待。
如何克服焦虑 |
2025-03-12 |
以下是观看视频:Test Anxiety 后的感想,虽然视频讲的是考试焦虑,但很多观点可以泛化到更广义的焦虑问题,故分享,也期待大家的留言交流😋
---
适当的焦虑是正常的,它能帮助你分辨什么是重要的,什么是无关紧要的。
但如果焦虑过多,就会导致皮质醇水平升高,进而影响大脑海马体对记忆的调取。
那么,我们为什么会焦虑?如何才能有效缓解呢?
---
适当的焦虑是正常的,它能帮助你分辨什么是重要的,什么是无关紧要的。
但如果焦虑过多,就会导致皮质醇水平升高,进而影响大脑海马体对记忆的调取。
那么,我们为什么会焦虑?如何才能有效缓解呢?
为什么会焦虑?
1. 害怕失败
我们之所以害怕失败,是因为曾经经历过失败,心里留下了阴影,不想再次体验那种痛苦。
但你要知道,现在的你已经不同于过去,你拥有更多经验和智慧。
未来并非过去的重复,而是由你现在的选择决定的。
因此,不妨:
我们之所以害怕失败,是因为曾经经历过失败,心里留下了阴影,不想再次体验那种痛苦。
但你要知道,现在的你已经不同于过去,你拥有更多经验和智慧。
未来并非过去的重复,而是由你现在的选择决定的。
因此,不妨:
- 回顾并分析过去失败的原因,明确问题所在。
- 把失败当作成长的加速器,它教给你的东西比成功更多、更深刻。
2. 害怕未知
未知总是让人不安,但其实未知也意味着可能性。
与其让自己陷入对未来模糊的不安中,不如主动去探索、去了解。
每一次尝试,都会让未知变得更清晰、更可控。
3. 害怕风险和后果
仔细回想一下,人生中真正决定性的选择其实并不多,可能不超过三次。
大部分选择都不是致命的,也都有补救措施。
与其原地踏步、浪费时间,不如大胆迈出一步:
- 只有行动起来,你才能知道这条路是否正确。
- 行动才能帮你排除其他可能性,减少焦虑。
如何缓解焦虑?
- 写下来:把让你感到焦虑的事情写在纸上,从抽象飘渺的感觉转化为具体可描述的文字,将脑中的负担卸载到纸上后,你会释放更多心理资源,更专注地解决当前任务。
- 尝试写日记,可以参考文章《怎么写日记》
- 随便选一件事做起来:不要纠结于找到“最完美”的起点,先行动起来,让事情取得进展
写在最后
只有行动才能带来改变,而改变才是缓解焦虑最有效的方法。
PS:写到这,我突然发现,冥想似乎也是一种可以解决焦虑的工具,因为大部分焦虑来自于我们无法正确看待自己而产生的,但冥想可以让我们以旁观者的视野来看待自己,看来当初做的的冥想计划可以再次实施起来了
曼哈顿最勤奋的字体 |
2025-03-11 |
太有意思了这篇文章:The hardest working font in Manhattan
作者是一位设计师和作家,他发现了一种叫做 Gorton 的字体,这种字体在曼哈顿到处都有,甚至在全球也非常普遍。尽管它已经存在了135年,却从未有人专门写过关于它的文章。
作者是一位设计师和作家,他发现了一种叫做 Gorton 的字体,这种字体在曼哈顿到处都有,甚至在全球也非常普遍。尽管它已经存在了135年,却从未有人专门写过关于它的文章。
随后,作者对 Gorton 字体进行了全面研究,从它的历史发展到设计的演变,再到它在各个领域的应用,甚至还涉及了相关的机械设备。
令人钦佩的是作者那份对细节的执着与热情,当他在澳大利亚的废弃船厂发现 Gorton 字体的变体,当他意识到这个字体曾随阿波罗飞船登上月球,当他在纽约街头行走100多英里只为捕捉这个字体的各种呈现形式,我能感受到,随着作者不断发现的新线索,那种兴奋和满足感一定难以言喻
这种发现美的能力和好奇心,还有作者那强大的写作能力,真的很让我很嫉妒和羡慕。
我又发现了一种能写进博客的内容类型:对日常生活的好奇心。就像这位发现 Gorton 字体的作者一样,我们周围其实充满了被忽视的有趣事物,也许美就隐藏在不经意之间。
期待我的第一篇关于好奇心发现的文章会是什么样的。
令人钦佩的是作者那份对细节的执着与热情,当他在澳大利亚的废弃船厂发现 Gorton 字体的变体,当他意识到这个字体曾随阿波罗飞船登上月球,当他在纽约街头行走100多英里只为捕捉这个字体的各种呈现形式,我能感受到,随着作者不断发现的新线索,那种兴奋和满足感一定难以言喻
这种发现美的能力和好奇心,还有作者那强大的写作能力,真的很让我很嫉妒和羡慕。
我又发现了一种能写进博客的内容类型:对日常生活的好奇心。就像这位发现 Gorton 字体的作者一样,我们周围其实充满了被忽视的有趣事物,也许美就隐藏在不经意之间。
期待我的第一篇关于好奇心发现的文章会是什么样的。
如何解决拖延症 |
2025-03-11 |
以下是我观看 Procrastination(拖延症) 视频的学习笔记:
在来自 Ph.d. Steel, Piers 的《拖延方程式》这边书中,有一个公式:
Motivation = (Expectancy * Value) / (Impulsiveness * Delay)
这是一个拖延症的心理模型,即做某件事的动机 = (期望 * 价值) / (冲动 * 延迟)
在来自 Ph.d. Steel, Piers 的《拖延方程式》这边书中,有一个公式:
Motivation = (Expectancy * Value) / (Impulsiveness * Delay)
这是一个拖延症的心理模型,即做某件事的动机 = (期望 * 价值) / (冲动 * 延迟)
- 期望:你有多少信心能完成这个任务,你有多少期待想去做这个任务
- 价值:你完成任务所获得的奖励,以及实际执行任务的体验是多么愉快或不愉快
- 冲动:是你对干扰和冲动去做其他事情的敏感程度;你越不能抵抗那种突然想去查看Twitter的欲望,你就越会推迟完成任务
- 延迟:从现在到你完成任务并获得奖励之间的时间,这往往是最难控制的条件,因为大部分任务是有固定的截至日期的
根据公式,我们需要提高期望和价值,减少冲动,合理控制截至日期。具体方法如下
- 提高期望
- 将大任务分解成可执行的小任务
- 寻求外部人员/工具的帮助
- 提高价值
- 选择对你更有意义的任务
- 提高完成任务的实际奖励
- 改善工作的体验(环境、音乐、朋友、开始前流程等)
- 为完成子任务添加额外奖励
- 游戏化任务(比如 Habitica 应用)
- 奖励的乐趣密度
- 避免低密度乐趣,比如刷短视频、微博等,这些没有意义,并没有休息的功效,还会增加情绪负担,且时间不可控
- 优先高密度乐趣,比如打游戏、运动、桌游、旅游等,这些乐趣会产生期待,可提供作你工作时的能量
- 减少冲动
- 使用番茄钟,记录冲动,待完成当前番茄钟后再去做
- 减少延迟
- 开始任务前,合理安排每个子任务的截至日期
- 公开或让第三方监督进展
关于意志力,作者认为它是一种有限的资源,会在一天中逐渐消耗,但无论该理论是否成立,我们的身体都需要良好的休息。
目前有非常多解决拖延症的方法,但当我们在讨论拖延症或者生产力时,其本身也是一种拖延,所以从现在开始,用简单的方法开始工作吧
关于见世面 |
2025-03-10 |
我一直希望自己的女儿能多出去看看世界,但却一直没有头绪,也许是因为我自己也没怎么见过世面。
说到旅行,我从未踏出过国门,即便国内有那么多省份,我去过的也不超过10个。
谈到经历,我做过的职业也很普通,除了刚毕业时短暂涉足过演艺圈,之后便一直从事计算机相关的工作。
讲到经验,至今我仍在上海挣扎着生活,谈不上成功,也说不上失败,只是非常普通地过着日子。
至于思想,我似乎懂了很多道理,却依旧碌碌无为。
我理想中的见世面,是让她多接触不同的职业和行业,不仅知道世界的丰富多彩,更要明白这种多样性具体体现在哪里。
前几天妇女节,看了冷兔公众号推送的《这就是女性可以成为的样子吧》,才发现原来职业的多样性远超我的想象:有人专门研究雪,有人是岩洞学家、护林员、野生园丁,还有专注于文化考古的人类学家,每一种职业都充满了趣味与意义。
作为父亲,我最大的心愿,就是希望她能找到自己真正热爱、能给予她成就感的事情。但最重要的是,如果像我一样,没有找到人生目标,也不要放弃,依旧保持好奇心的去生活,不用担心家里给的任何路线或定义,依旧勇敢的去探索这个世界。
回想起自己的成长经历,我发现很多时候,我们的视野会被环境所局限。或许正因为我自己没能拥有更广阔的视野,才更希望女儿能拥有更多选择的自由,不被眼前的世界所束缚。
接下来,我打算尝试带她去参观不同职业的工作场所,不限于博物馆、科技馆,甚至是一些小众的展览;也许还可以参加一些亲子体验活动,让她亲自感受不同职业背后的乐趣与挑战,也可以看看关于不同职业的分享演讲,比如TED Talks或者国内的一席,或者参加一些志愿者活动
我并不期待她一定要成为多么成功的人,只希望她未来能够清楚地知道自己喜欢什么,愿意为之付出努力,并从中获得真正的快乐与满足。
说到旅行,我从未踏出过国门,即便国内有那么多省份,我去过的也不超过10个。
谈到经历,我做过的职业也很普通,除了刚毕业时短暂涉足过演艺圈,之后便一直从事计算机相关的工作。
讲到经验,至今我仍在上海挣扎着生活,谈不上成功,也说不上失败,只是非常普通地过着日子。
至于思想,我似乎懂了很多道理,却依旧碌碌无为。
我理想中的见世面,是让她多接触不同的职业和行业,不仅知道世界的丰富多彩,更要明白这种多样性具体体现在哪里。
前几天妇女节,看了冷兔公众号推送的《这就是女性可以成为的样子吧》,才发现原来职业的多样性远超我的想象:有人专门研究雪,有人是岩洞学家、护林员、野生园丁,还有专注于文化考古的人类学家,每一种职业都充满了趣味与意义。
作为父亲,我最大的心愿,就是希望她能找到自己真正热爱、能给予她成就感的事情。但最重要的是,如果像我一样,没有找到人生目标,也不要放弃,依旧保持好奇心的去生活,不用担心家里给的任何路线或定义,依旧勇敢的去探索这个世界。
回想起自己的成长经历,我发现很多时候,我们的视野会被环境所局限。或许正因为我自己没能拥有更广阔的视野,才更希望女儿能拥有更多选择的自由,不被眼前的世界所束缚。
接下来,我打算尝试带她去参观不同职业的工作场所,不限于博物馆、科技馆,甚至是一些小众的展览;也许还可以参加一些亲子体验活动,让她亲自感受不同职业背后的乐趣与挑战,也可以看看关于不同职业的分享演讲,比如TED Talks或者国内的一席,或者参加一些志愿者活动
我并不期待她一定要成为多么成功的人,只希望她未来能够清楚地知道自己喜欢什么,愿意为之付出努力,并从中获得真正的快乐与满足。
苹果设备使用 VPN 的安全问题 |
2025-03-10 |
提高专注力的方法 |
2025-03-10 |
很多方法其实都是显而易见的,但有时候就是会忘记,因此做个小记
1. 不要多线任务
2. 专门的位置/地点,提前布置好环境,关闭手机提醒并翻转手机(屏幕向下),关闭无关的浏览器标签
3. 预期管理,使用番茄钟,只需专注25分钟即可,有结束时间,所以大脑压力不大
4. 休息期间,不要做任何其它事,防止注意力遗留到下一个任务钟,比如工作的时候沉浸在上一个短视频里
5. 一个长休息后,可以切换到简单的或者有趣些的任务,或者自主进入沉沦时间
6. 训练大脑在工作时,抵制快餐式的刺激,比如短视频、信息提醒等,每一次抑制,都是一次加强专注力的训练
7. 规律作息、健康饮食、每日锻炼
1. 不要多线任务
2. 专门的位置/地点,提前布置好环境,关闭手机提醒并翻转手机(屏幕向下),关闭无关的浏览器标签
3. 预期管理,使用番茄钟,只需专注25分钟即可,有结束时间,所以大脑压力不大
4. 休息期间,不要做任何其它事,防止注意力遗留到下一个任务钟,比如工作的时候沉浸在上一个短视频里
5. 一个长休息后,可以切换到简单的或者有趣些的任务,或者自主进入沉沦时间
6. 训练大脑在工作时,抵制快餐式的刺激,比如短视频、信息提醒等,每一次抑制,都是一次加强专注力的训练
7. 规律作息、健康饮食、每日锻炼