Tool

自动运行MongoDB Docker为Replica模式

最近工作中碰到一个有意思的问题:需要让 MongoDB 的 Docker 镜像以 Replica 模式运行起来。而官方 MongoDB 的 Docker 镜像默认是单机而非 Replica 模式。当然,如果你启动 Docker 后再进入容器内,手动修改配置生效,肯定能搞定。但毫无疑问这是效率很低的做法。如何让这一切自动实现,而不是每次重新运行 MongoDB 都手工去改?

实现在Vim内直接查询macOS词典的Plugin

我每天都会使用 Vim。用 Vim 不论编写自己的代码还是阅读别人的代码,这中间自然都会碰到一些不认识的英文词汇,自己就总会习惯性地想随手查一下单词的中文释义。而如何最高效地解决这个问题便成了一个有趣的事情。

让Docker-Compose如虎添翼的DIP

前一篇博客“骑鲸之路——Docker模式下的Rails开发环境构筑(翻译)”的文章末尾,作者提到了一个叫 Dip 的工具,引起了我的兴趣。作为 Evil Martions 的开源作品,品质应该是有保证的,值得一试。我经过几天的试用后,感觉很是“惊艳”,觉得完全把它看作 Docker 本地开发环境的两大杀手级生产力工具:Docker-Compose + Dip,称为“帝国双璧”亦不为过。这篇博客就来简单介绍下 Dip 的使用。

把 SF Mono 字体 Patch 为 Nerd Font

作为一名开发者,在编程中使用等宽字体是很重要的。我最近几年一直使用的是 Adobe 公司的 Source Code Pro 字体。这款等宽字体的字形设计优美,间距适中,阅读时眼睛不易疲劳,完全可以排到等宽字体的 Top 3。不过再好的东西,时间长了也有审美疲劳。正好最近看到了这一篇文章《从 DejaVu Sans Mono 换成 Hack 字体了》,作者的审美甚合我心,于是打换一款试试。

在 Github Actions 支持下升级博客到 Jekyll 4.1

我一直使用 Github Page 作为自己的博客,简单,够用。而博客是使用 Jekyll 来搭建的,这也是 Github 官方的推荐方式之一。最近发现 Jekyll 已经到了 4.1.0,于是打算把博客也升级到最新版。说干就撸起袖子开始。

使用 Alfred workflow 上传截图到七牛并自动生成外链URL

今年准备多写点Blog文章了。

Set up development environment & workflow using cygwin in windows7

使用Cygwin在Windows7下构建开发环境和工作流(上)

Use vagrant and chef to create virtual environment quickly

Vagrant+Chef 快速部署虚拟机环境

A powerful tool for developer, Vagrant

程序员的神兵利器-Vagrant

Programming

TestProf文档中文版翻译完成上线

我在前几篇博客中翻译推荐了关于 TestProf 的一些使用方法和技巧,这个 Evil Martins 出品的 Ruby 测试工具 Gem 的强大和有趣,从中可窥一斑。要想了解和使用 TestProf 的全部功能,当然还是需要去看它的官方文档(地址:https://test-prof.evilmartians.io)。顺便说一句,连这个 Gem 文档的网站都秉承了 Evil Martins 的一贯风格,同样的精致,同样的讲究设计感。

“端口—适配器”模式的概念(3)

这是“端口—适配器”模式的概念梳理第三部分。

“端口—适配器”模式的概念(2)

这是“端口—适配器”模式的概念梳理第二部分。

“端口—适配器”模式的概念(1)

最近看了下 DDD(领域驱动设计)和在 Go 中的应用。目前看来,整洁架构(Clean Architecture)和 “端口-适配器架构”(Ports and Adapters Pattern,又叫六边形架构 Hexagonal Architecture)是相对比较成熟的方案了。而后者的概念比较复杂一些,于是在概念上进行一些梳理和澄清。本文是第一部分。

GitHub个人页面的新玩法

最近 GitHub 推出了一个新功能,让你可以展现更加个性的 Profile 页面。简单来说,就是可以创建一个与自己 GitHub 账号同名、且包含README.md的 Repo,那么这个README.md的内容将会自动显示在你的个人 Profile 页面上,而且是在顶部展示。这个新功能一下子引发了大量开发者的极大兴趣,各自八仙过海各显神通,把这个东西玩出了“花”。

成为2020 GitHub北极源代码保险库计划的贡献者

GitHub 最近公布了一项“北极源代码保险库计划”,要把开源软件代码埋藏在北极的数百米地底,至少保存 1000 年。从 GitHub 的官方博客公告看,目前已经有数百万开发者的开源代码被保存到这个“保险库”中了。可以在每个人的 GitHub Profile 页面中查看到自己有没有成为其中之一。

Ruby测试的“工厂疗法”

本文已获得原作者(Vladimir Dementyev)和 Evil Martians 授权许可进行翻译。原文是 TestProf 这个 Evil Martians 出品的 Gem 介绍文章系列的第二篇。作者介绍了造成 Ruby 慢测试的一个主要元凶——Factory Cascade,以及如何使用 TestProf 来消灭这个元凶。文中也提到了众所周知的 Factories vs. Fixtures 问题,而 TestProf 可以做到让你鱼和熊掌兼得。

Ruby慢测试的“良医圣手”

本文已获得原作者(Vladimir Dementyev)和 Evil Martians 授权许可进行翻译。原文介绍了 TestProf 这个 Evil Martians 出品的强大 Gem。作者通过详细的范例场景和代码演示,说明了 TestProf 怎样对 Ruby 测试进行性能分析,找出慢测试的痛点,以及如何使用其提供的工具箱对慢测试改进,缩短测试运行时间,进行令人愉悦的 Ruby 开发。

《Programming Elixir >= 1.6》第五章:匿名函数

函数是 Elixir 的数据转换基石的重要引擎之一。Elixir 函数又分为匿名函数和具名函数。《Programming Elixir >= 1.6》用整个第五章专门讲述了“匿名函数”的概念,可见其重要性。如果是写过 JavaScript 的朋友,对“匿名函数”的概念一定不陌生。而 Elixir 的“匿名函数”到底怎样,看这一章就能完全了解。

2020时代的Rails系统测试

本文已获得原作者(Vladimir Dementyev)和 Evil Martians 授权许可进行翻译。原文介绍了在新的 2020 时代,摒弃了基于 Java 的笨重 Selenium 之后,如何在 Rails 下构建基于浏览器的高效系统测试。作者对于系统测试概念进行了详细阐述,演示了具体配置的范例和运行效果,对 Docker 开发环境也有专业级别的涵盖。非常推荐。

骑鲸之路——Docker模式下的Rails开发环境构筑(翻译)

本文已获得原作者(Vladimir Dementyev)和 Evil Martians 授权许可进行翻译。原文介绍了一套成熟的 Rails 项目的 Docker 化开发环境如何搭建,怎样通过一些配置技巧让其高效运行。也谈到了这种模式下的开发流程和诀窍等问题。关于 Docker 作为开发环境的做法早已不是新鲜事,相关文章更是有非常多了。但本文是一名卓越的 Ruby 开发者在两年开发实践中提炼出的真正经验之谈,解答了之前自己对 Docker 开发环境模式的种种疑惑,因此觉得很有价值,遂成此文。

在 Rails 6 中整合 Stimulus 和 Tailwind CSS

上一篇博客提到了 Stimulus。Stimulus 也是 Basecamp 开源发布的一个前端 JS 方案(我个人认为,跟 React、Vuejs这些 JS 框架相比,Stimulus 应该还称不上是一个框架)。Stimulus 的文档很简单,主要就 Handbook 和 Reference 两部分,基本两个小时就能看完。

对 Hey.com 技术栈的期待

近一周来,著名的 Basecamp 公司发布了新式的 Hey.com 的邮件服务,号称是针对当前诸如 GMail 等邮件服务的一次“革命”,在 Twitter 上引发了巨大的议论风暴。而作为公司创始人、Rails 创建者的 DHH 大神,在 Twitter 上也发了多个推,来说明 Hey.com 的卓越不凡。其中一篇更是列举了 Hey.com 当前使用的技术栈,他称之为“Heystack”(甚至分享了所用到的 Gemfile),如下:

《Programming Elixir >= 1.6》第四章:基本语法(节选二)

这是《Programming Elixir >= 1.6》第四章的第二部分。不多说了,直接上正文吧。

《Programming Elixir >= 1.6》第四章:基本语法(节选一)

其他编程语言中的常规语法介绍在《Programming Elixir >= 1.6》里直到第四章才终于姗姗来迟。这一章介绍的是 Elixir 中全部的各种内置类型。函数在 Elixir 中也是一种类型,但会用单独的一章来专门介绍而不在本章之内。出人意料的是,字符串和结构体也不在本章里,因为它们不是 Elixir 的基本类型,而是由基本类型构成的高级类型。

《Programming Elixir >= 1.6》第三章:不可变性

《Programming Elixir >= 1.6》第三章介绍了 Elixir 的另一块基石,不可变性(Immutability)。我阅读本书之后的个人体会是,Elixir 一共有三大基石:模式匹配、不可变性和 OTP,以这三块基石为底,José Valim(Elixir 的创建者。他的名字是葡萄牙语,应读作:何塞·瓦里姆)构建起了整个语言的宏伟大厦。

写好RSpec的9个技巧

看到这篇关于 Rspec 的9个技巧,觉得不错,就简略翻译一下,便于今后查阅。

《Programming Elixir >= 1.6》第二章:模式匹配

《Programming Elixir >= 1.6》的结构形式与一般的编程语言入门书完全不同。常规的编程语言书一般都会从基本语法开始讲起,无非数字、字符串、函数、变量等等。但这本书不是。Dave Thomas 意识到 Elixir 拥有如此与众不同的语法特性,他认为让读者首先接触并理解这种特殊性才是更好学习该语言的方式,所以在第一步就首先介绍了 Elixir 最为特殊也最为重要的模式匹配(Pattern Matching)。

《Programming Elixir >= 1.6》第一章(节选)

《Programming Elixir >= 1.6》的第一章标题为“Take the Red Pill”。毫无疑问,这个说法的出处源自《黑客帝国1》中的红蓝小药片背景。不言而喻,Dave Thomas 老爷子明显是想表示如果你选择了 Elixir,就意味着选择了编程的“真相”。懂这个梗的人看到这里自然会会心一笑,有了想探究一下这个“真相”到底是什么的兴趣。

《Programming Elixir >= 1.6》序言

Elixir 是一门奇妙的语言。我本身是一名 Ruby 开发者,自从第一次接触到 Elixir,就被它类似 Ruby 的语法而同时又拥有的一系列独特特性所吸引。要学习一门新语言,当然是从最经典的书籍开始。而著名的老爷子 Dave Thomas 本身就具有业内卓越的号召力,他亲自撰写的《Programming Elixir >= 1.6》自然是我的首选。于是就从这本书开始我的 Elixir 之旅了。

“雄伟巨石” 可以成为 “城堡”

【本文首发于 RubyChina 社区】DHH 在 2020.04.08 发表了一篇最新博客 “The Majestic Monolith can become The Citadel”,继续讨论对微服务的一点看法,提出了一种与微服务相对的“城堡”模式。在 Twitter 上也引发了不少关注,搜关键字“The Majestic Monolith”就能看到很多。这是原文链接:https://m.signalvnoise.com/the-majestic-monolith-can-become-the-citadel/

Rails render path 继承关系一例

近两天在 Rails 的开发中,突然发现了关于 render path 的一个之前未曾注意到的有趣地方。

Frontend

为什么我偏爱 Ember.js 胜过 Angular 和 React.js

前几天看到了这篇文章:Why I prefer Ember.js over Angular & React.js,觉得对于国内期望了解 Ember.js 的开发者来说是一个不错的介绍。于是和该文的作者 Paul Shan 联系取得翻译的授权,翻译了过来。译文如下:

Translation

TestProf文档中文版翻译完成上线

我在前几篇博客中翻译推荐了关于 TestProf 的一些使用方法和技巧,这个 Evil Martins 出品的 Ruby 测试工具 Gem 的强大和有趣,从中可窥一斑。要想了解和使用 TestProf 的全部功能,当然还是需要去看它的官方文档(地址:https://test-prof.evilmartians.io)。顺便说一句,连这个 Gem 文档的网站都秉承了 Evil Martins 的一贯风格,同样的精致,同样的讲究设计感。

Ruby测试的“工厂疗法”

本文已获得原作者(Vladimir Dementyev)和 Evil Martians 授权许可进行翻译。原文是 TestProf 这个 Evil Martians 出品的 Gem 介绍文章系列的第二篇。作者介绍了造成 Ruby 慢测试的一个主要元凶——Factory Cascade,以及如何使用 TestProf 来消灭这个元凶。文中也提到了众所周知的 Factories vs. Fixtures 问题,而 TestProf 可以做到让你鱼和熊掌兼得。

Ruby慢测试的“良医圣手”

本文已获得原作者(Vladimir Dementyev)和 Evil Martians 授权许可进行翻译。原文介绍了 TestProf 这个 Evil Martians 出品的强大 Gem。作者通过详细的范例场景和代码演示,说明了 TestProf 怎样对 Ruby 测试进行性能分析,找出慢测试的痛点,以及如何使用其提供的工具箱对慢测试改进,缩短测试运行时间,进行令人愉悦的 Ruby 开发。

《Programming Elixir >= 1.6》第五章:匿名函数

函数是 Elixir 的数据转换基石的重要引擎之一。Elixir 函数又分为匿名函数和具名函数。《Programming Elixir >= 1.6》用整个第五章专门讲述了“匿名函数”的概念,可见其重要性。如果是写过 JavaScript 的朋友,对“匿名函数”的概念一定不陌生。而 Elixir 的“匿名函数”到底怎样,看这一章就能完全了解。

2020时代的Rails系统测试

本文已获得原作者(Vladimir Dementyev)和 Evil Martians 授权许可进行翻译。原文介绍了在新的 2020 时代,摒弃了基于 Java 的笨重 Selenium 之后,如何在 Rails 下构建基于浏览器的高效系统测试。作者对于系统测试概念进行了详细阐述,演示了具体配置的范例和运行效果,对 Docker 开发环境也有专业级别的涵盖。非常推荐。

骑鲸之路——Docker模式下的Rails开发环境构筑(翻译)

本文已获得原作者(Vladimir Dementyev)和 Evil Martians 授权许可进行翻译。原文介绍了一套成熟的 Rails 项目的 Docker 化开发环境如何搭建,怎样通过一些配置技巧让其高效运行。也谈到了这种模式下的开发流程和诀窍等问题。关于 Docker 作为开发环境的做法早已不是新鲜事,相关文章更是有非常多了。但本文是一名卓越的 Ruby 开发者在两年开发实践中提炼出的真正经验之谈,解答了之前自己对 Docker 开发环境模式的种种疑惑,因此觉得很有价值,遂成此文。

《Programming Elixir >= 1.6》第四章:基本语法(节选二)

这是《Programming Elixir >= 1.6》第四章的第二部分。不多说了,直接上正文吧。

《Programming Elixir >= 1.6》第四章:基本语法(节选一)

其他编程语言中的常规语法介绍在《Programming Elixir >= 1.6》里直到第四章才终于姗姗来迟。这一章介绍的是 Elixir 中全部的各种内置类型。函数在 Elixir 中也是一种类型,但会用单独的一章来专门介绍而不在本章之内。出人意料的是,字符串和结构体也不在本章里,因为它们不是 Elixir 的基本类型,而是由基本类型构成的高级类型。

《Programming Elixir >= 1.6》第三章:不可变性

《Programming Elixir >= 1.6》第三章介绍了 Elixir 的另一块基石,不可变性(Immutability)。我阅读本书之后的个人体会是,Elixir 一共有三大基石:模式匹配、不可变性和 OTP,以这三块基石为底,José Valim(Elixir 的创建者。他的名字是葡萄牙语,应读作:何塞·瓦里姆)构建起了整个语言的宏伟大厦。

写好RSpec的9个技巧

看到这篇关于 Rspec 的9个技巧,觉得不错,就简略翻译一下,便于今后查阅。

《Programming Elixir >= 1.6》第二章:模式匹配

《Programming Elixir >= 1.6》的结构形式与一般的编程语言入门书完全不同。常规的编程语言书一般都会从基本语法开始讲起,无非数字、字符串、函数、变量等等。但这本书不是。Dave Thomas 意识到 Elixir 拥有如此与众不同的语法特性,他认为让读者首先接触并理解这种特殊性才是更好学习该语言的方式,所以在第一步就首先介绍了 Elixir 最为特殊也最为重要的模式匹配(Pattern Matching)。

《Programming Elixir >= 1.6》第一章(节选)

《Programming Elixir >= 1.6》的第一章标题为“Take the Red Pill”。毫无疑问,这个说法的出处源自《黑客帝国1》中的红蓝小药片背景。不言而喻,Dave Thomas 老爷子明显是想表示如果你选择了 Elixir,就意味着选择了编程的“真相”。懂这个梗的人看到这里自然会会心一笑,有了想探究一下这个“真相”到底是什么的兴趣。

《Programming Elixir >= 1.6》序言

Elixir 是一门奇妙的语言。我本身是一名 Ruby 开发者,自从第一次接触到 Elixir,就被它类似 Ruby 的语法而同时又拥有的一系列独特特性所吸引。要学习一门新语言,当然是从最经典的书籍开始。而著名的老爷子 Dave Thomas 本身就具有业内卓越的号召力,他亲自撰写的《Programming Elixir >= 1.6》自然是我的首选。于是就从这本书开始我的 Elixir 之旅了。

“雄伟巨石” 可以成为 “城堡”

【本文首发于 RubyChina 社区】DHH 在 2020.04.08 发表了一篇最新博客 “The Majestic Monolith can become The Citadel”,继续讨论对微服务的一点看法,提出了一种与微服务相对的“城堡”模式。在 Twitter 上也引发了不少关注,搜关键字“The Majestic Monolith”就能看到很多。这是原文链接:https://m.signalvnoise.com/the-majestic-monolith-can-become-the-citadel/

Vim

Vim 批量递增数字的技巧

众所周知,Vim 自带的默认快捷键⌃-A、⌃-X可以对单个数字进行增减操作,这在碰到适用的场景时当然非常方便。但是,编程中另一种场景也是经常遇到的: