试着复刻一个vue的计算属性

之前对于Vue的响应式封装(这里主要思考的是computed),主要是用用,其实是懒得思考背后的原理的。毕竟原理其实可以用一句话说明:计算属性对别的属性产生有向的依赖关系,这个依赖关系构成一个有向无环图(DAG),图上的某个节点更新后重新计算其所有后置节点即可。

但是仔细想来,内部其实有一些时间复杂度的问题。显然,我们不能暴力调用回调函数(会卡出指数级时间复杂度 O(2n)O(2^n) 下面会详细解释)。同时朴素的做法很难解决这样的问题:

const a = ref([]);
const b = computed(() => a.join(","));
for (let i = 1; i <= n; i++) {
a.value = a.value.concat([i]);
}

注意到对于一个网页而言,我们实际上期望 b 能在整个宏任务跑完以后才更新。所以实际上a.value 的setter触发的更新必须要进行推迟。

这篇文章讲讲我怎么在思考这些的过程中试着复刻一个vue的计算属性 computed

Latex符号大全

Latex符号大全

静态版Ruby?Crystal语言试用

前几天在思考,Python和JS都拥抱了类型检查(类型注释),但是Ruby却只能用Sorbet这样的影响性能的类型检查器(Ruby没有官方的类型检查工具,引入静态类型检查的gem反而降低了性能),在搜索中找到了 Crystal 这门语言。

https://crystal-lang.org/

看描述我就惊艳到了:作为一个静态语言,Crystal居然长得这么像Ruby,于是本着不妨玩玩的想法,我进行了Crystal的初试。

# A very basic HTTP server
require "http/server"

server = HTTP::Server.new do |context|
context.response.content_type = "text/plain"
context.response.print "Hello world, got #{context.request.path}!"
end

address = server.bind_tcp(8080)
puts "Listening on http://#{address}"

# This call blocks until the process is terminated
server.listen

查看你的Misskey存档!

简而言之,我写了一个可以查看Misskey/Firefish/Sharkey/…等Misskey系软件导出帖子存档的工具!

网址: https://lhcfl.github.io/misskey-archive-viewer-web

源代码: https://github.com/Lhcfl/misskey-archive-viewer

node-discourse-api is developing

I am currently working on unofficial node-discourse-api. If you want to help, you can come and have a look.

API documentation

从中心化平台跑路:迁移到联邦宇宙(Fediverse)

2023年10月18日, X (Twitter) 发布了一则公告,宣布他们在进行一项“测试”:在新西兰和菲律宾注册的新用户必须支付 $1 的年费才能在 X (twitter) 上和人互动。并且“在此测试中,现有用户不受影响”。
这促使我写下这篇文章:早该跑路了!如果之前的 Twitter 还努力营造一种“为了所有人”的印象,重视用户的黏性,Elon Musk的肆意妄为无疑是宣告 Twitter 终究是一个由公司掌握的营利性平台,而任何这样的大型中心化平台都不可避免的被少数人控制。国内平台尤甚,The big brother可以随意获取你的隐私,审查你的言论 (censorship),无需理由就能禁言、封禁你的账户,随意关闭任何回答的评论区。你真的愿意让你使用社交平台的权利被拿捏在它们手中吗?

Mastodon的单一文化问题

Mastodon 非营利组织的首席执行官兼 Mastodon 软件的首席开发者 Eugen Rochko(在联邦宇宙上被称为 Gargron)最近的举动让一些人担心 Mastodon(该软件项目和该非盈利组织)对 Fediverse 的其余部分造成的巨大影响。是的。我们的确应该担心。

Hexo 博客添加数学支持

eiπ=1e^{i\pi} = -1

论坛联邦化笔记:关于Mastodon, ActivityPub的思考

(未完成博文)是一些探索联邦化论坛的时候产生的思考

配置Hexo的GitHub Actions自动推送

还在用hexo d来推送你的Blog到Github上吗?本文教您如何使用Github Actions自动推送!