NAS 入门篇

由于 Time Machine 先后救我于水火之中两次,但是我的路由器实在不方便做,仗着有一点微小的闲钱(2000 块……),我就开始研究 NAS 了。

货比三家

在购买之前,首先先查了一波 NAS 的户口:群晖、威联通、玩客云——玩客云首先由于功能薄弱先 Pass,与其说玩客,不如说是视频+,具体是在什么值得买看到的……Emmmm,一点都不 Server。

威联通的价格比群晖低好多,不过相对的软件生态也不太一样,刚开始苏老师跟我疯狂案例威联通,看了一下价格还算可以,同样的价格群晖的配置比威联通低一点,而且还只有两个盘位,隔壁威联通能买到四个盘位,配置可扩展性也更高一点——但是在 DIY 的黑群的对比下,完全是碾压级别的……便宜。

- 阅读剩余部分 -

我只想让一堆 Promise 跑起来:promise-foreach

最近在写项目的时候有个需求:我的 Promise 即使失败了也没关系——更进一步的,当且仅当失败率大于某一值,这才是一个失败的请求。

于是我查看了包括 ES6 Promise 和 Bluebird 的实现,发现都没有我想要的效果:

  1. 异步无序
  2. 每个方法使用相同处理函数
  3. 失败不影响结果

在完成项目之后把函数抽出来作为一个单独的 utils 模块发布,今天总算把 lint 和 test 补齐了,于是顺手写一篇宣传文。

他没什么大作用,函数实现还是表现形式都比较 Low:

const foreach = require('sky-promise-foreach')

foreach([...promises], (result) => {
  // success handler for each promise
}, (err) => {
  // error handler for each promise
})

在同事的建议下,之后有空可能会出一个改版,把这个库做的更通用一点。

Repo 地址:https://github.com/csvwolf/promise-foreach

[翻译]小心你复制的内容:使用零宽字符将用户名不可见的插入文本中

翻译源:Be careful what you copy: Invisibly inserting usernames into text with Zero-Width Characters

不想读?试试这个 demo

零宽字符都是不可见的「非打印」字符,大多数应用程序中都不会显示这些字符。比如,我在这句话中添加了十个零宽字符​​​​​​​​​​,你能分辨出来吗?(提示:将句子粘贴到 Diff Checker 来查看这些字符的位置。这些字符可以被用于做某些用户的「指纹」字符。)

- 阅读剩余部分 -

脏读、幻读与不可重复读

最近在读 《MySQL 技术内幕 InnoDB 存储引擎》,里面提到的各种概念都很新鲜,以前听说过脏读、幻读、不可重复读,但是对于概念不甚了解,于是查了一下,这里做个笔记。

数据库事务特征

数据库事务特征,即 ACID:

A Atomicity 原子性

- 阅读剩余部分 -

别闹!自签名证书!

程序员英语这本书虽然事实证明确实写的不怎么样,但是开头的一些内容还是值得参考的,比如其中的一道思考题:自签名证书会带来哪些危害。

既然说起这个,当然要从最简单的 HTTPS 说起。

为什么我们需要 HTTPS

理论上而言,HTTPS 即通信加密,可以预防窃听和中间人攻击,当然,对于大多数用户和网站而言,最重要的是避免了各层的劫持。

- 阅读剩余部分 -

JavaScript Note.我想插入一个动态的脚本

发现各位观众老爷们要求太高吓得我都不敢更新了……喵喵喵,我明明只是一个笔记本顺便分享一下……的说。

还是安静的当个笔记本吧……

最近两次跌到在同一个坑里,问题其实非常简单,也非常基础,就是——我需要动态加载并执行脚本。

一般来说,我喜欢用 innerHTML 这种简单明快的方式添加内容,但是却发现,innerHTML 竟然无法执行我添加的 <script> 脚本,很明显,这不符合我的预期——

- 阅读剩余部分 -

Grafana 插件开发从零到一

阅前高能提醒:这篇文章总的来说并不是在教你怎么开发,而是告诉你怎么去学习开发一个 Grafana 的插件,说是从零到一,MAX_VALUE 其实是 100,望珍重。

引子

前一阵子突然接到了一个新任务:开发一个 Grafana 的 Datasource——差不多是这个表情。

15311431794605.jpg
作为一个新时代的好码畜,上一次配置 Grafana 面板的时候,含着热泪抱着大佬的大腿,在几乎完全是大佬输入的情况下完成了面板——我连面板都不会配你竟然让我开发?What,我没听错吧。

在此之前,我们为服务添加监控除了已经注入到满足条件的数据库后使用已有数据源配置,还有的就是 mock 请求映射到数据源,但是这样有太多不可变操作,如果我们能自己写个 datasource 岂不是美滋滋,一把梭。

- 阅读剩余部分 -

闲话 CDN

开头

这篇文章通过 FCC 上海线下和成都微信的分享,整理成文字稿顺便凑一下更新,考虑到吃瓜读者们不知道都了解到啥程度,以及我科普作者的身份(自己定的),我决定从入门到放弃的介绍一下,大致涉及:

  • 什么是 CDN
  • 为什么我们要用 CDN
  • 访问原理
  • 架构
  • 应用与踩坑
  • 现实世界的 CDN

由于每个地方都事无巨细讲起来非常费劲,费劲就容易跳票,而且会导致篇幅过长,所以其实都是科普向的,如果想要深入,在每个地方都会给出链接,可以进行针对性的深入阅读。

- 阅读剩余部分 -

使用 Docker 来进行测试

上一篇 egg 的介绍中我们说到测试的问题,测试一直是个让人很头大的问题,不过有了 Docker 以后就解决了很多问题,本文用数据库来抛砖引玉,举个🌰,更重要的是一种思路。

要进行 mock,其实本质思路是一样的,我们需要一个用完就可以卸载的数据库,以便下一次测试使用,他必须对外暴露一个端口,可以读写数据。

为了避免被打,补充一则,本文是基于 app 安装到运行的过程需要 ssh key 或者其他身份认证系统的情况所写,之后会补充常规情况。

- 阅读剩余部分 -