常用MongoDB命令

JavaScript MongoDB 数据库

MongoDB与JavaScript天然的兼容性使得在Node.js下使用MongoDB及其舒服。 我们通常会使用类似mongoose的ORM工具来操作MongoDB。 然而手动查看数据库在很多场景下仍然很有用,例如Debug模型间关系,清空用户表,重置数据库。

本文列举了这些常用的MongoDB命令。MongoDB文档:https://docs.mongodb.com/

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 脚本。

为Express.js编写一个Logger

Express.js JSON JavaScript Node.js

Express.js是Node.js下最基础最灵活的Web服务器。 Express的日志工具有很多,比如默认的访问日志工具morgan, 通用日志工具winston等等。

本文便来发掘一下这些日志工具的优秀特性,并一一给出实现: 对象输出、日期前缀、访问日志,模块名前缀,以及彩色输出等。

Makefile构建前端项目

Shell Linux Makefile Unix awk grep sed

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

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

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

上一页 下一页