除夕杂感

zh

直到下午四点,供桌才摆上。

冒着热气的鸡,整只;两尾鱼,张着嘴卧在盘中;一摞柑,愣是叠成了宝塔的形状;此外,还有一包包花花绿绿的零食。一米见方的桌子被塞得满满的,全是贡品。

母亲忙得团团转。本来是不想拜天公的,但转念一想,不是太好,便摆上了。阳光下,热气一直往上冒,往上冒,直到看不见的地方——那里,想必就住着那位神。

看来,这位神一定是个重要人物了——不然,母亲怎会遗忘了其他的几位,而只供奉他一个?

搬家之前,家里可还是住着许多神的:门口有一个,阳台上有一个,厨房有一个,抽屉下有一个,就连洗衣机上也有一个。听母亲说:每一家都有,每一位神,都在守卫着这个家。

神们也不是白干活,也是要吃饭的。不只是过年,每个月中总有那么几天,神们会一起来要吃的。每到这时,母亲便会忙活起来,为他们张罗吃的。好在他们并不挑剔——生的,熟的,速食的,神们都默默地收下了。当然,贡品在屋子里转了一圈,自然又都进到了我们的肚子里。

每换一个地方,母亲便上一炷香,虔诚地跪下来,轻轻地拜两拜,口中念念有词。

接着,她又拉我一起来。

我不懂,她便教我——想着自己想要的事就好了。

我学着样子跪下来,胡乱说了几句,装模作样地拜了两拜,余光却仍盯着那食物。

听母亲说,这是老家带来的习俗。对神的敬畏,在那个古老的地方,说着那古老语言的人们,已经沿袭了很久很久了。

人终是怕神的——以前是,现在也是;中国是,外国也是。神像一群喜欢偷窥的人,在这里,也在那里,在每个角落偷窥着你。你受欺负时,神会给你庇护;你做坏事时,神会予你惩罚。因此,怕神的人,多是善良的。

说是怕神,倒不如说是怕天,敬畏变幻莫测的未知。活物总是怀着对死亡的恐惧,人类也不例外。未知中蕴藏着杀机,使愚昧的人类感到不安,转而求助于那假象中的造物主,那超能力者,那个开着全局视角看戏的“人”,这便成了“神”。神为人类抵挡着未知,人类也因此安分守己,深怕触犯了神,再次被暴露于未知的荒野中。

然而,神正在离去,因为未知正在散去。

但藏在那未知背后的是什么,谁又知道呢?未知的背后仍是未知,现实可以是虚幻,真理也可以是谬误,时间洪流夹带着未知,使任何人都只能屏息,任何人,都不可以妄自尊大。

好在,还有神——尽管神正在离去。

但终究,怕神的人是善良的。

READ MORE

17 行代码实现的简易 Javascript 字符串模板

zh

这是源于两年前,当我在做人生中第一个真正意义上的网站时遇到的一个问题。该网站采用前后端分离的方式,由后端的 REST 接口返回 JSON 数据,再由前端渲染到页面上。

同许多初学 Javascript 的菜鸟一样,起初,我也是采用拼接字符串的形式,将 JSON 数据嵌入 HTML 中。开始时代码量较少,暂时还可以接受。但当页面结构复杂起来后,其弱点开始变得无法忍受起来:

  • 书写不连贯。每写一个变量就要断一下,插入一个 +"。十分容易出错。
  • 无法重用。HTML 片段都是离散化的数据,难以对其中重复的部分进行提取。
  • 无法很好地利用 <template> 标签。这是 HTML5 中新增的一个标签,标准极力推荐将 HTML 模板放入 <template> 标签中,使代码更简洁。

为了解决这个问题,我暂时放下了手上的项目,花了半个小时实现一个极简易的字符串模板。

READ MORE

Python“黑魔法”之 Meta Classes

zh

接触过 Django 的同学都应该十分熟悉它的 ORM 系统。对于 python 新手而言,这是一项几乎可以被称作“黑科技”的特性:只要你在 models.py 中随便定义一个 Model 的子类,Django 便可以:

  • 获取它的字段定义,并转换成表结构
  • 读取 Meta 内部类,并转化成相应的配置信息。对于特殊的 Model(如 abstractproxy),还要进行相应的转换
  • 为没有定义 objectsModel 加上一个默认的 Manager

开发之余,我也曾脑补过其背后的原理。曾经,我认为是这样的:

启动时,遍历models.py中的所有属性,找到Model的子类,并对其进行上述的修改。

当初,我还以为自己触碰到了真理,并曾将其应用到实际生产中——为 SAE 的 KVDB 写了一个类 ORM 系统。然而在实现的过程中,我明显感受到了这种方法的丑陋,而且性能并不出色(因为要遍历所有的定义模块)。

那么事实上,Django 是怎么实现的呢?

自古以来我们制造东西的方法都是“自上而下”的,是用切削、分割、组合的方法来制造。然而,生命是自下而上地,自发地建造起来的,这个过程极为低廉。 ——王晋康《水星播种》

这句话揭示了生命的神奇所在:真正的生命都是由基本物质自发构成的,而非造物主流水线式的加工

那么,如果 类 也有生命的话,对它自己的修饰就不应该由调用者来完成,而应该是自发的

幸而,python 提供了造物主的接口——这便是 Meta Classes,或者称为“元类”。

READ MORE

诗集

zh
mybirth:fDCJhVUYITMJHBapLo7zoA==:Mko5rQBDxhI2bgV6hgSD6g==:TmJlVE67JWhZ0tLAe8Ki6TVgQayVN29bdBG40UKK1KM0Y+XmGcqWXF1C4sWHwhuLOaVI3t/X82OfIMLqNfYjt6sVMBUTXto1cZ746byHyon20EAFs5eiT/o+fViFldGSXJglzClbsEXGO925zxvcb1fCEWJpee19AY4+yagRgNAXD6QiTQHjMpIe1vOvB7kG+l0VWpr0OGDSTSM1qpagb3rk5H1W80XLOFGDw+9U1XQt9FC7omPgKHhC/titcwX58QtV8v0wjvQP8WnpRI4RA/8wA2gS3uAI5DlS96EOoPW12F3ugXrfQNHq+f4pKlI7Ua3/G5WXSuloyMUu6hw0X1kKBSGMChS+9oPUhX0fN8wTWefpFAjmyuDI+ROtKP14CtlelPACY2Wh738hKi2fN/mVKUocADIXIWrapG8cZF6+Uc7hlaTS/Ifn6RizCRyOoKw1ghlFuPVKSk8USLlx6cmm+40ZSvLuZWHJumUn9FKe0ea8FzsSecP9NOyvr99uUo7tqL/itZbvo7K9muF2/p8nhdUd4G+dHjeZTI4LNc/+1i55YxKYOCcc1FnIFNX7F/EymS5rZc3uZzHlPZ6D68Tq4KCwikdbl4uy+pa0npeXIYFYns4lvz5KbYlQx4eNZSTW1dk5obQ1nNso/mTdRDHMgWFu8mSst5/gGFc/Vn498jvjK+a7OP1qfL6Cl5SfQYJJGwop3obPXVhDeTTc+EamY5EoCn5CvzIHzFmKvqN8SVSxPrKJu3l/dkZAYSG/4NkxarN72G6eZhmscbKxz2keMW+jGzNfPekXPA7sgQgSN4pNazPvZzxkC0R66QgQ
**THIS CONTENT IS ENCRYPTED**
 
DECRYPTING...
READ MORE

生活,需要被“发现”

zh
mybirth:cYwisGFQUQeP6hdUU4lavQ==:i3mQmQcAGpPn/S70OnaxqQ==:IK5DZURumHWw0ohcSq00W/J9jlklKIHdbfFs99j+8qGxfGnEZMq4a0Rzi7cd6PeEmPtRiDVFPpQi4IB02vMpvdUZyX3QyOEpfgXqNHNFRJ79Dr4kDovb9cbEE7AtWN/6lR4fefYTX6oYsAt8EAoMjSKKUocB0ZFDblaOtAAhx9oA22MGVvxRVhhP/JurZt5ay6+5Kf2vynn+/D8oX51ycKOxibZy43/dKp4VtDCnNEKI3Q96D9Mkf5eYoD5RX14duqCD6dRDqqT5eekoRv53328UQu46b8NOxtKOUeXlP7TnWMFMOR3JaGe+XhXprIDRCtfv+FgtfeB5g+wRfeon4f9sxAnVdgcufnRLvwpTA3I=
**THIS CONTENT IS ENCRYPTED**
 
DECRYPTING...
READ MORE

家书·十八岁成人礼

zh
mybirth:GmPf1EaRtvKNzHyqygNhSw==:2wuKjpysQM/339L0W5/qPA==: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
**THIS CONTENT IS ENCRYPTED**
 
DECRYPTING...
READ MORE

炫技?还是需求?

zh
mybirth:SmF2WUPMfr94DAegyQWigg==:CZfw/tPUMb3Zvs8yw4kDgA==:bOz8dn3cW8a6QKFjXu1R5M86SscKW+HdcemTzB84/POLBc4MaVI8E83Xn8PqG0oxhQVRY9gjomFmO81fc2jaxD03DZdbL9NkHnUbFINTp4v3D4p+pRrXUGfQ+3/a3NcGvUbZcT81FlQURHoQpL7NxV99Bs3zJJsAqThsnnZEa9RS4YA5lBO9Cql5kglsQ5MUpgv3uvSAjp2vqDlac+E5LOgmJTwks9nwQg6B3DHNbXT1FFnTs3iN4hjHOKP5rlLQ4cXCoY+2pEjeWR0O/64YwWAsJcGqZCCeG7s4Qfwz8nE4cuJVo/abws5OwVQFKqhOa3Sp0a1VyCNyi00abFITpYOO2BpieyiCey1iGw6TJ2pyKDm4/+vxHoM+ryMePbxf6v7vCbChgkGePawDperaJ5WIaQZeMWfl5AWgsh6oXbq55x/+UeclCZimhvA5lRJpD/UUgvQ1bPpqqaws+oBNdQ==
**THIS CONTENT IS ENCRYPTED**
 
DECRYPTING...
READ MORE

【译】响应式图片的现状

zh

原文链接:戳这里

Web 是一种可视化的媒体。绚丽的视觉效果,很大程度上离不开图片文件所作出的贡献。虽然(Whilst)其中的许多效果都可以用 CSS 和 内联 SVG 来实现,互联网上的许多站点仍需要图片文件。

从去年的统计来看,每个站点中,图片平均占了一半的页面体积,并且随着时间的推移,图片体积有持续增加的趋势;就 2014 年而言,图片的大小便增长了 **21%**。

与此同时,互联网终端的种类、数量也在增长。从 72 ppi(市场份额正在下降)到 600 ppi,不同设备的分辨率(resolution)有着天壤之别。

创建能在任何设备中都有着高质量的图片,其实再容易不过了——用 1000 ppi 的质量保存图片,然后就可以不用再理他了(译者注:原文是 call it a day)。生成的图片,即使是在分辨率最高的设备上查看也是十分清晰的(crisp)。但是,在图片质量提升的同时,图片文件的大小也会相应地增加。要知道,页面加载时间可是影响用户体验的首要因素——因此,保证站点能够及时地呈现在用户面前是我们义不容辞(incrumbent)的责任。高质量的图片,即使是在宽带环境下加载也要耗费几十秒,更不用说(let alone)是移动端的设备了——简直就是无法使用。

响应式图片的目的,不是要为设备提供尽可能高质量的图片(这一点,我们很容易做到),而是要为设备提供它所能支持的最高质量的图片,仅此而已(nothing more)。

从这篇指南中,你将了解到响应式图片的工作原理(what works),响应式图片仍然存在的问题和陷阱(pitfall),以及如何将响应式图片运用到网站中。

READ MORE

【译】“为什么有这么多的编程语言?”

zh

原文链接:戳这里

在过去的一周中,几位同事曾两次问了我这个问题。听起来,这像是一个糟糕的问题,但事实上并不是这样的。

最简短的答案就是:尽管我们并不需要这么多语言,但我们还是想要(want)它们。 让我们再探索得更深一些吧。

READ MORE

记一次 DoS 诈骗网站的经历

zh
mybirth:hUeY3Bw1xWsNki6GswV0JQ==:rTdeAcCAcNTUPlnCHEl9uw==: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
**THIS CONTENT IS ENCRYPTED**
 
DECRYPTING...
READ MORE