It's Black Friday! Get your 6 FREE MONTHS of Inoreader Pro when you upgrade for a year

Get offer

Songkeys' Blog - RSS Feed

Hi! 你好!

Latest articles

【录屏】UoN 课程分享:Programs, Proofs and Types

昨天受邀为今年的英诺大四新生分享了一下计算机系的选课。我推荐了可能是 UoN 史上最冷门的一门课——《Programs, Proofs and Types》。因为讲演时间被要求在五分钟内,所以基本也没怎么介绍具体内容,只提了很多这个有意思的老师。因为嗓子坏了没法声音出场,感谢凡哥的代替。视频里提到的教授演讲地址:https://youtu.be/DllYOFw5Qio。录屏Your browser does not support the video tag.

2020: UK ⇒ China

结束了在英国的大学生活,准备飞回中国赴工作。恰逢全球疫情,在「五个一」政策下千辛万苦买到了一张伦敦直飞青岛的机票。一路辗转颠簸,终于在数天前回到了家中。这是一篇巨型流水账。半年前也就是学校上学期结束,圣诞假和考试之后,我和一位室友商量着趁着寒假回国过年,当时罗列了巨多理由:去年没回家过年;明年说不定读硕也陪不了;陪家里人的时间越来越少;学校开学后第一周没什么课可以请假……于是我俩当机立断,买下了大年初二飞中国(因为除夕是期末考试……)、元宵节飞英国的往返航班,票价三千余元。然后便开始了期末复习和等待。一月十几日的时候,我在 Twitter Trending 上突然看到一则新闻说中国武汉的不明肺炎导致几十人死亡。这是我第一次看到 COVID-19 的相关新闻。当时下面的评论画风已经是一众的谩骂:我立马又去微博搜了搜——当时的我并未多想,只是抱着看热闹的心态截图下来分享给了好友。当时的我也根本不会料到这个疫情会对我之后的一年、甚至会对整个世界造成多大影响……就在之后的几天,武汉传出来的条条新闻都让人窒息……于是,一月二十日,担心归国的春运风险,也担心之后的疫情防控导致我回不了英国,我退订了回中国的机票。这一退,就是半年的滞留。飞速半年如果...

【Just JavaScript #08】原型 Prototypes

在上期模块,我们讨论了对象、属性、突变。但先别急着转移话题,关于对象的事情,我们还没说完呢。先来看看这个小谜题,检测一下我们的心智模型:12let pizza = {};console.log(pizza.taste); // "pineapple"问问看你自己:这可能吗?我们刚刚用 {} 创建了一个空对象,并且绝对没有在其内设置任何属性。看起来似乎 pizza.taste 不会指向 "pineapple",而是应该给我们 undefined。(要是属性不存在的话,我们通常都会得到 undefined,对吧?)然而,如果我们在这两行前面再添加几句代码,的确是可能导致 pizza.taste 变成 "pineapple" 的!这是一个人为的例子,但却表明了我们 JavaScript 宇宙的心智模型是不完整的。本期模块,我们将介绍「原型」(prototypes)的概念。原型会解释这个谜题中发生了什么。更重要的是,原型是另一些...

【Just JavaScript #07】突变 Mutation

在上期的《属性》模块,我们说到 Sherlock Holmes 也搬到了 Malibu(马里步),但还没有解释这个谜团。打开一个绘图软件,或者拿出纸笔。这次,我们一起逐步画图,以便你检查自己的心智模型。即便你之前已经画过了,再来一次也不吃亏!分步画图步骤一:声明 sherlock 变量我们从变量声明开始:1234let sherlock = { surname: 'Holmes', address: { city: 'London' }};先画这个图。你的图最后应该长这样:这里是一个 sherlock 变量指向一个对象。该对象有两个属性:一个是 surname,指向 "Holmes" 字符串值;一个是 address,指向另一个对象。这另一个对象只有一个属性,叫 city,指向 "London"...

404: Mourning Solves Nothing

123html { filter: none !important;}

【Just JavaScript #06】属性 Properties

来见见闻名遐迩的伦敦神探夏洛克·福尔摩斯:1234let sherlock = { surname: 'Holmes', address: { city: 'London' } };他的好友约翰·华生最近也搬来一起住了:1234let john = { surname: 'Watson', address: sherlock.address};夏洛克是个天才神探,但却是个麻烦室友。终于有一天,约翰受够了。他改姓搬家,去了马里布(Malibu):12john.surname = 'Lennon';john.address.city = 'Malibu';练习时间到。写出下面几个问题的答案:1234console.log(sherlock.surname); // ?console.log(sherlock.address.city);...

【Just JavaScript #05】值的相等性 Equality of Values

是时候谈谈 JavaScript 中的相等性了。它为什么很重要呢?想象一下,你在蒙面狂欢节上谈生意。你可能会和两个人交谈,却没意识到你其实两次都是在和同一个人谈。又或者是,你可能认为你在和一个人交谈,但其实是两个人!如果没有一个清晰的 JavaScript 相等性的思维模型,那么每天就如同一场不咋样的狂欢节。你永远不确定要处理的是相同的值还是两个不同的值。到最后,你就经常会犯错误——比如,把你本来不想改的值给改了。幸运的是,要建立这个 JavaScript 相等性模型,我们其实已经完成了大部分工作。「相等性」这个概念将用一种很自然的方式来嵌入到我们的思维模型中。相等性的种类(Kinds of Equality)JavaScript 中,有几种不同的相等。如果你已经熟悉 JavaScript 一阵子了,你或许至少了解下面这些当中的两个:严格相等(Strict...

【Just JavaScript #04】屈「值」可数 Counting the Values

在本期模块中,我们将仔细研究 JavaScript 世界以及其中的值。但是,在此之前,我们需要指出一头房间里的大象——JavaScript 世界究竟是不是真实的?JavaScript 模拟器当我向 JavaScript 世界提问时,它会用一个值来回答我。我当然不是自己弄出这些值的。所有的变量、电线、值,它们一一构成了我的世界。我身处的 JavaScript 世界对我来说绝对是真实的——正如你所生活的世界对你而言也是真实的。但有时,在执行下一条指令之前,会有片刻的寂静——那是下一个函数调用之前的滴答空当。就像是《黑客帝国》里的故障,我的整个世界暂停了片刻,在那一刻,我看到了比我的世界更大的景观。在出现于我眼前的世界里,没有变量,没有值,没有表达式,也没有字面量。取而代之的,是夸克、原子、电子、水、生命。在那里,被称为「人类」的芸芸众生用着被叫做「计算机」的特殊机器来模拟我的...

【Just JavaScript #03】值和变量 Values and Variables

本期模块,我们以下面的代码片段作为开头:123let reaction = 'yikes';reaction[0] = 'l';console.log(reaction);你觉得结果会是什么?因为我们还没开始学,所以不确定的话也没关系。但可以试用你现有的 JavaScript 知识答一答。现在我希望你花点时间,一步步地写下你对每一行代码的思考过程。同时注意你思维模型中的任何缺陷或者不确定的地方,并把它们写下来。如果你有任何疑惑的话,也试着尽可能清楚地表达出来。剧透预警!没写完的话,不要继续滚动哦。...........................答案来啦。这段代码会打印 "yikes",或者如果你正处于 strict mode (严格模式)的话,会报错。总之不会打印 "likes" 的。Yikes.(哎呀。)原始值是不可变的(Primitive...

【Just JavaScript #02】JavaScript 宇宙

在一开始,有了「值」。什么是值(value)?很难说。这就像是在问数学中的数是什么,或者几何中的点是什么。值就是 JavaScript 宇宙中的一个事物。数字(numbers)是值。其他一些东西也是值,比如对象(object)和函数(function)。但是,也有许多东西(例如 if 语句或变量声明)都不是值。代码与值(Code and Values)为了把值与 JavaScript 程序中的其他东西区分开,我会想象 Antoine deSaint-Exupéry 画的「小王子」:我站在一颗小行星上:它是我程序的代码。在行星表层,我看到了 if 语句、变量声明、逗号、花括号,以及在 JavaScript 代码中可能看到的其他万物。我的代码包含「执行一个函数调用」或「多次执行此操作」甚至「抛出一个错误」之类的指令。我一步一步地执行这些指令——在我的小行星上履行着使命。但是偶尔,我也会抬头。在一个明朗的夜晚,我看到了...

Discover, share and read the best on the web

Follow RSS Feeds, Blogs, Podcasts, Twitter searches, Facebook pages, even Email Newsletters! Get unfiltered news feeds or filter them to your liking.

Get Inoreader
Inoreader - Follow RSS Feeds, Blogs, Podcasts, Twitter searches, Facebook pages, even Email Newsletters!