初衷是解决中文输入法在 vim/evil 键位下的 insert
模式和 normal
模式的切换问题,实现 normal
模式自动切英文、insert
模式回复之前的输入状态。
当然各编辑器都有各自知名的解决方案,本次主要吐槽 Mac 平台 fcitx-remote-for-osx 和 squirrel 输入法间的“摩擦”。
初衷是解决中文输入法在 vim/evil 键位下的 insert
模式和 normal
模式的切换问题,实现 normal
模式自动切英文、insert
模式回复之前的输入状态。
当然各编辑器都有各自知名的解决方案,本次主要吐槽 Mac 平台 fcitx-remote-for-osx 和 squirrel 输入法间的“摩擦”。
本篇是为 elastic-apm-node 编写拓展系列的第二篇,主要介绍 egg 框架的定制指南。
单独拿 egg 出来讲,是因为市面主流的 APM 工具几乎都没有为 egg 提供支持。一方面 egg 底层基于 koa ,并且 egg-router 也是 koa-router 的二次封装,两者相似以致插件可以平稳切换,agent 的补丁方式也基本是一致的。另一方面,agent 代码必须早于 egg 和 egg-router 的加载才能生效,egg-bin、egg-script 等生态决定了编写框架之上的插件很难做到零代码入侵。
APM agent 作为 npm package 不适合做这样的事,更好的方法是我们利用 egg 工具链的接口,在引入 agent 的代码层处理好 egg 的配置。
根据上一篇《Node.js APM 产品调研》的市场调研结果,笔者更青睐 Elastic APM 这个开源产品,故决定带来它的一篇专题介绍。
尽管团队已经开始试用,但踩坑时间较短,与其编写测评,不如先带大家走进这个项目,剖析个别令人感兴趣的技术点。
服务进程登场时往往“蓄势而发”,犹抱琵琶半遮面,真正的服务端口跑起来之前做了太多准备工作,然而落幕工作常被人草草了之。
如何让进程自然结束,这本是 hello world 级的基础内容,却有很多项目忽视了这一步的必要性以及重要性。
目前使用 PM2 作为进程管理的项目仍占多数,有相关意识的朋友使用 pm2 reload
让进程“平滑”重启,但这就不需要额外的代码处理了吗?
举个例子,未捕获的异常导致服务强行退出时,是不是有可能进程尚未记录异常日志、请求执行到了一半、甚至中断了更复杂的业务工作?PM2 只能截住新的请求,旧的请求是否彻底执行完毕,仍需要业务自己判断。
下面我们先抛开 PM2 ,聊聊基本的进程退出需要哪些工作。首先我们从未捕获的异常说起。
部署 RabbitMQ、MongoDB 或其他服务的单节点,有时会将 bind_ip 之类的设置写作 127.0.0.1。然而在 Debian 系统这么操作可能就给自己挖了“坑”,不管你有没有遇到过 host
相关奇怪的部署问题,来看作者的一波填坑历程吧~
在 Debian 系的 Linux 发行版中,/etc/hosts
中前两行默认配置如下,其中 myhostname
即 /etc/hostname
指定的本机名称,可通过 hostname
指令查看。
1 | 127.0.0.1 localhost |
第二行配置将本机 host 指向了 127.0.1.1
,这又能对软件的安装造成什么影响呢?请看下面的例子。
svn 给笔者的一大印象就是非常容易产生冲突,特别是项目加入新人后,由于初期没有强硬地制定规范,导致后期合并代码时灾难连天。决定在此分享这些“亡羊补牢”的规则,也算是避免 svn 产生合并冲突的一点经验。