Mongoose 中实现虚拟字段查询

MongoDB mongoose Schema

mongoose为数据模型提供了虚拟属性, 借此可以更加一致地、方便地读写模型属性,类似于C#或Java中的访问器。 我们知道虚拟属性在Query阶段一定是查不到的,因为事实上MongoDB并没有存储这些属性。 但是否可以通过一个拦截器来实现虚拟属性的查询呢?

这个问题很有趣,而且在很多场景下都相当方便。例如:

  • 实现一个暴力的全文检索时,需要对多个字段匹配统一查询词,该查询词可抽象为虚拟属性;
  • 多处都需要进行同一个复杂条件的查询时,可以用虚拟属性封装该查询条件。

事实上,虚拟属性查询和虚拟属性读写都是为了代码复用。

Mac 下编写中文 Beamer

Mac 字体 LaTeX XeTeX 中文

TEX 是一个文档排版系统,通过内容与样式的分离使作者能够专注于文本内容。 例如:可以使用\chapter{<title>}来添加一个章节标题,而不需手动地去选择18号粗体。

TEX is a document preparation system that enables the document writer to concentrate on the contents of their text, without bothering too much about the formatting of it. For example, chapters are indicated by \chapter{⟨title⟩} rather than by selecting 18pt bold. – texdoc clsguide

不得不承认LaTeX的学习曲线堪比VIM,但熟悉LaTeX带来的回报也是其他排版工具难以企及。 神奇的是LaTeX最大的门槛居然在于中文排版。 本科时与LaTeX一起度过的那些昼夜,基本都是在从Windows到Ubuntu拷贝字体, 以及调试CTEX宏包或者XeLatex配置。

本文给出如何在Mac下舒服地编写TEX演示文稿,包括引入中文,以及使用Beamer。

实现 Mongoose Schema 间继承

JavaScript mongoose 继承 数据库 原型继承 Schema

在创建数据库模型时我们希望这些模型能够互相继承或扩展, 例如一个银行网站可能所有模型都需要实现逻辑删除、 都需要记录创建人、最后修改人,以及删除人的信息。 通常可以通过扩展(比如mixin)和继承(inherit)两种方式来实现。

对于小规模网站(比如20个模型以下)来讲, 继承的方式已经足够通用而且继承的代码复用方式编写代码更加方便。 Mongoose并未直接地提供改选项,本文实现一个基本的模型间继承关系。

恢复 TMUX 工作区

Bash Session Tmux

我们知道使用 TMUX 后状态会保存在 Server 端,你的 Terminal 重启不会丢失任何东西。 但 Server 重启后 Session 会全部丢失,如果你像 Harttle 一样在开发 PC 本地运行 Tmux Server 的话, 每次开机后都需要重新建立各种会话和窗格。

但没有什么是不能自动化的,我们可以通过 Tmux 配置文件(即初始化脚本)来自动建立工作区。 本文便来手动编写一个初始化工作区的 TMUX 脚本。

Makefile构建前端项目

Shell Linux Makefile Unix awk grep sed

Make是GNU下的构建自动化工具,用于从源文件构建可执行程序和程序库。 由Makefile定义构建依赖关系,运行Make时这些依赖会递归地展开。 可以说Make和Shell是Linux下生存的必备技能,当然还需要一款你热爱的编辑器。

Make还会检查文件修改时间来判断是否需要执行某条依赖。 因此除了程序库外,Make也常常用于自动更新存在文件间依赖的项目。 比如:批量更新网站缩略图

Harttle曾使用过上百个Grunt/Gulp插件,尝试着去体会它们所承诺的那些优雅。 而今Harttle决定重新回到Make的怀抱,在前端为什么需要构建工具? 一文中详述了这一选择的全部理由。

前端为什么需要构建工具?

Makefile Gulp CommonJS Grunt JavaScript 测试 模块化

社区中有不少项目引入GulpGruntWebpack等工具来支持测试和发布流程。 这些构建工具都有着这样的或者那样的缺点,此时Node社区悄悄兴起了一群npm党。 他们认为应该坚决干掉这些构建工具,其坚决程度好不亚于Vim党。

例如 2014 年发布在 keithcirkel 的why-we-should-stop-using-grunt 和 2016 年发布在 infoQ 上的我为何放弃Gulp与Grunt,转投npm scripts。 (抱歉又暴露出国内前端领域的2年落差)

虽然也烦透了Gulp/Grunt,但Harttle坚持认为我们需要构建工具。 本文梳理了Web前端的那些构建需求,整理了Harttle经历过的前端构建工具。 也给出了Harttle的信仰:Makefile

导航: 上一页 下一页

加载中...

🔝