# 2019-10

![](https://p.ipic.vip/z1gao9.jpg)

每天给你推荐一个新奇，好玩，高品质的开源库，好文，观点或言论等。。

## 2019-10

### 2019-10-31\[技能]

虽然我们不是专门的网络工程师，但是不免在实际工作以及面试中会需要这方面的知识，当然这是浅层的即可。如果完全不知道，那么对于一些网络性能优化问题肯定是没有概念，从而无从下手的。

网上关于 HTTP 协议的文章很多，面试的时候关于 HTTP 三大版本的差异也是热门考点。这篇文章就通俗易懂地解释了`HTTP/2与HTTP/3 的新特性`, 相比于之前，为什么要推出新的协议，核心解决了什么问题？有什么不足？ 这些东西网上资料要么就是太专业，要么就是太笼统和人云亦云，这篇文章是相对比较适合新手读的一个文章。

![](https://p.ipic.vip/z6ndx7.jpg)

文章地址： <https://segmentfault.com/a/1190000020714686#articleHeader16>

### 2019-10-30\[类库]

很多年前我自己写过一个简陋的`pub/sub库`, 这个仓库甚至被一些人在用。很多时候我们需要用到这种灵活的`pub/sub`功能，这个时候我们就会自己实现，或者用一些开源的。 今天给大家介绍的就是鼎鼎大名的 Jason Miller 写的一个`tiny event pub sub implement`，代码就几十行，不仅注释详实，而且给出了丰富的类型定义，代码简单易懂，非常适合学习。

代码地址： <https://github.com/developit/mitt/blob/master/src/index.js>

### 2019-10-29\[网站]

上一次给大家分享了一个常用正则的 VSCode 插件（2019-10-11 期），另外的[《大前端面试宝典》](https://lucifer.ren/fe-interview/#/?id=%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f)也讲到了正则的学习，并给出了我认为非常不错的学习资料。

今天我继续给大家介绍几个正则学习&练习的网站。

* [Regex Golf](https://alf.nu/RegexGolf) 是一个有名的正则练习网站，会根据你的正则打分，难度偏高。 ![](https://p.ipic.vip/1b5zph.jpg)
* [regexone](https://regexone.com/lesson/introduction_abcs) 是一个交互友好，面向新手的一个正则练习网站，可以交互式地学习正则，右边还贴心地给出了 Notes，另外语言不同其实正则规范也不太一样，这个网站给出了不同语言的正则讲解，很用心。值得一题的是，里面的资料非常新，最新的`/u- interpret the regular expression as unicode codepoints` 都有。 ![](https://p.ipic.vip/h2l4qw.jpg)
* [regexr](https://regexr.com/)这个不是练习的， 是用来可视化的， 和之前的[regexper](https://regexper.com/)有点像，就连域名都差不多，不过这个用户体验是真的棒。 ![](https://p.ipic.vip/dxmwro.jpg)
* [The regular expression game](http://play.inginf.units.it/#/) 是一个过关类型的正则练习网站，有意思的是它可以根据你写的正则匹配程度进行打分，即使你没有全部匹配也是可以得分的。 ![](https://p.ipic.vip/z9hwxv.jpg)

### 2019-10-28\[工具]

这个是人称贺老的百姓网贺师俊`Hax`整理的一份`中文技术活动日程`， 这些活动有几个特点：

* 技术活动的主要语言是中文
* 技术活动的主要参与者是程序员
* 技术活动的主要日程接受公开报名
* 技术活动具有一定规模

目前这个仓库仅有个简陋的 `yaml 数据文件`，记录`技术活动的时间和一些信息`。后续希望能加入一个更好的查询界面。活动组织者可直接修改数据文件并提交 PR，或提交 issue 描述一下活动情况。活动组织者也可以 watch 本仓库，这样当有变动时（通常是会议信息更新），可以收到通知。

![](https://p.ipic.vip/5i1vs1.jpg)

仓库地址：<https://github.com/hax/chinese-tech-conf-schedule>

### 2019-10-25\[工具]

今天给大家推荐的是一个我个人非常喜欢的一个`好用且免费图床工具` - [IPic](https://apps.apple.com/cn/app/ipic-markdown-%E5%9B%BE%E5%BA%8A-%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E5%B7%A5%E5%85%B7/id1101244278?mt=12)。 这个工具不仅内置免费的微博图床,还可以自己定义，我本人还添加了腾讯云的 COS

使用起来也非常简单，直接复制图片，然后点击对应的图片即可，另外值得一提的是它本身还支持直接生成 MardDown 链接，这对经常用 MarkDown 写作的我来说绝对是一个非常实用的功能。

另外它还搭配了一个软件[IPic Mover](https://apps.apple.com/cn/app/ipic-mover/id1183822957?mt=12)用来迁移图床，比如你的文章里面都是新浪图床，只需要一键就可以瞬间迁移到别的平台，比如腾讯云 COS。 不过这个搭配的工具是收费的，但是有免费体验时间。

![](https://p.ipic.vip/kv3rjj.jpg)

### 2019-10-24\[技能]

今天是 1024 程序员节，祝广大的程序员们节日快乐。🎩🎩🎩🎩🎩🎩

之前给大家介绍了一款跨平台的 Web 平台技术栈检测工具 Wappalyzer。这几天我看了下他的源码，觉得很不错，于是就想着推荐给大家。

Wappalyzer 的整体架构非常有意思，这里讲一下我发现的主要特点，更多细节等待着你的探索。

* 平台相关的代码放在 drivers 文件夹下，公共的代码在 src/wappalyzer.js
* 特地写了 validate 脚本来检测代码。
* 将检测逻辑抽离到了 src/app.json 中， 以配置文件的形式存放（这个 json 文件结构设计地很精巧，应该是花了心思的）
* 主要采用正则来检测应用
* 考虑到间接引用，比如框架 A 引用了 B，那么检测到了 A 也会把 B 带上

如果想快速上手可以看下 ta 提供的[测试用例](https://github.com/AliasIO/Wappalyzer/blob/master/src/wappalyzer.spec.js)，非常简洁。

Github 地址： <https://github.com/AliasIO/Wappalyzer>

### 2019-10-23\[网站]

今天给广大的前端朋友们介绍一个在线做题的网站，可以瞬间在线知道答案，而且不需要登陆，一共 58 道题目，不知道后续会不会更新。 这个网站的题目我看了其实没有什么新意，但是不需要登陆而是直接使用 LocalStorage 来存储你的答题情况对用户来说很轻量，给我的感觉很好，感兴趣的可以试一下。

![](https://p.ipic.vip/lcf3sw.jpg)

(题目列表)

![](https://p.ipic.vip/wu99hs.jpg)

(题目详情)

网址： <https://quiz.typeofnan.dev/>

### 2019-10-22\[观点]

前一段时间王思聪的股权遭到了冻结，据中新经纬记者计算，王思聪名下冻结股权价值合计已经超过 8445 万元。

“这种情况一般是王思聪欠别人钱，别人追讨，作为诉讼保全措施冻结的。”金杜律师事务所律师李量接受虎嗅采访时说，“王思聪欠钱可以是直接欠，或和贾跃亭一样，给别人提供担保，承担了连带责任。”

但是实际上这种冻结对于王思聪来说根本起不到作用，他会有很多方法来免除所谓的强制执行，他只要将自己的股权先一步将股权质押给万达集团，这样`质押权人就对被保全的股份有优先权`, 换句话说这`对王思聪来说这种冻结根本无效`。

现实中有很多这样的事情，这些规则似乎是在`限制那些“能力不足”的人，而对社会上这些“制造规则的人”无能为力`。更可悲的是，很多人对这些不知道，不关注。其实越是贫穷的家庭，越是生活在社会底层的人，他们的后代，大概率还会是穷人。其实，我们奋斗的目标无非就是：让子女一出生就站在了别人的肩膀上！

### 2019-10-21\[效率]

我是一个有着轻微强迫症的人，社交软件的小红点有时候会打乱我的节奏，将我从专注模式(Focus Mode)强制转化为发散模式（Diffuse Mode）。 这两种模式适合我们做不同类型的工作，因此掌控小红点，避免这种不希望的模式切换是提高效率的一个有效途径。

我的做法是：

* 手机静音
* 电脑关闭红点提醒

mac 电脑可以在系统偏好设置 - 通知 - 对应 APP - 将标记应用程序的勾去掉

![](https://p.ipic.vip/hgkwmx.jpg)

一般而言，你也不用担心会错过什么东西，因为右侧通知还是会有的，比如钉钉的会议提醒等。

经过这样的设置，你就可以自由切换两种模式，而不会被频繁打断，当然还是会有人来打断你，这个问题我们以后再讲。

### 2019-10-18\[类库]

UMI 的官方定位是`可插拔的企业级 react 应用框架`。其作者云谦也是 Ant-Design，dvajs 的核心贡献者，同时也是我早期关注的人之一。这个项目的价值绝对不亚于更受大家欢迎的 dvajs，是一个值得学习的项目。

说白了，Umi 和 create-react-app（cra）类似，就是现有技术栈的组合，封装细节，让开发者用起来更简单，只写业务代码就可以了，它有几个特点：

![](https://p.ipic.vip/9eixut.jpg)

* 零配置就是默认选型都给你做好了。
* 开箱即用就是技术栈都固化了。
* 约定大于配置，开发模式也固化好了。

下图是云谦介绍 umi 的定位的时候贴的一张架构图：

![](https://p.ipic.vip/3zntux.jpg)

项目地址：<https://github.com/umijs/umi>

### 2019-10-17\[工具]

之前分享过《2019-09-23 - 为什么一行 80 个字符是一个值得遵守的规范，即使你拥有 4k 显示器？》，里面提到了并排窗口的问题。 多个显示器确实可以提高效率，如果你能高效地利用每一个显示器，效果会更棒。

> 配合 4k 大屏显示器效果更棒

今天介绍的这款工具就是一款窗口布局工具，能够快速修改当前窗口大小并放置在指定位置，Moom 默认操作点设立在了窗口左上角的绿色按钮上，将鼠标 hover 在绿钮上就会弹出一个选择菜单，里面有五种尺寸可选，单击选项即可变化窗口大小，并能将窗口移动到指定位置。

> 搭配使用快捷键效果更棒

![](https://p.ipic.vip/tnd7ba.jpg)

### 2019-10-16\[工具]

今天给大家推荐的是一款非常好用的 Chrome 插件，可以用来查看网站是由什么技术栈构建的。其实类似的软件也有别的，但是这个是我使用过的最好的一个。

![](https://p.ipic.vip/yesxyi.jpg)

（这个是其官网的检测结果）

![](https://p.ipic.vip/8p6yr5.jpg)

（这个是 GitHub 的检测结果）

项目主页： <https://www.wappalyzer.com>

### 2019-10-15\[技能]

今天给大家分享一个微信小技巧，据说有的人还不知道，所以今天就把它分享出来，大家如果有什么微信使用小技巧也欢迎在下方进行评论。

今天的小技巧是`判断对方是否把你拉黑或者删除`:

1. 给对方转账，是好友会让你输入密码，不是好友都不用你输入密码，直接弹出下图，整个过程好友不知情的！

* 如果拉黑会提示： `请确认你和他（她）的好友关系是否正常`
* 如果删除，则会提示： `你不是收款方的好友`

![](https://p.ipic.vip/yro7m7.jpg)

1. 点开好友名片，如果显示左图，说明她真的没有发过一条朋友圈。若显示右图，点开个人相册却什么也看不到，那么你有可能被删除、拉黑、朋友圈屏蔽，或者发过朋友圈但设为私密了。

![](https://p.ipic.vip/udu1nn.jpg)

为了搞清楚对方是删除还是屏蔽，你就可以用到开头转账的那一招啦！

### 2019-10-14\[好文]

如果想做一些高级的东西，编译是一个绕不过的坎，Babel 是一个前端的转义工具，Babel 有着自己的插件系统，这是个系列文章，通过这个系列你可以学到 AST，以及 Babel 插件相关的东西，并且你可以自己动手写一个 Babel 插件。

![](https://p.ipic.vip/usdzta.jpg)

文章地址：

* [Step-by-step guide for writing a custom babel transformation](https://lihautan.com/step-by-step-guide-for-writing-a-babel-transformation/)
* [Creating custom JavaScript syntax with Babel](https://lihautan.com/creating-custom-javascript-syntax-with-babel/)

### 2019-10-12\[工具]

前端在调试兼容性样式的时候是一个很头疼的问题，各个浏览器以及同一个浏览器不同版本支持的 css 都是不同的，比如有些不支持 Grid，有些不支持 cal 函数。如果你自己根据这些去修改代码肯定是非常低效的，这个 Chrome 插件就是解决这样的问题，你可以在高级的浏览器上调试，自行禁用一些 css 特性来 debug。

![](https://p.ipic.vip/bm2mr4.jpg)

仓库地址： <https://github.com/keithclark/css-feature-toggle-devtools-extension>

chrome 插件地址： <https://chrome.google.com/webstore/detail/css-feature-toggles/aeinmfddnniiloadoappmdnffcbffnjg>

### 2019-10-11\[工具]

常用正则大全, 支持 vscode 扩展插件

值得一提的是它支持 VSCode 插件形式使用：

![](https://p.ipic.vip/kyez90.jpg)

目前有 57 个正则：

![](https://p.ipic.vip/1suvao.jpg)

插件地址： <https://github.com/any86/any-rule>

### 2019-10-10\[技能]

傅里叶变换是一种在各个领域都经常使用的数学工具。这个网站将为你介绍傅里叶变换能干什么，为什么傅里叶变换非常有用，以及你如何利用傅里叶变换干漂亮的事。傅立叶变换有很多实际的应用，比如 MP3 的原理，MP3 是如何将声波转化为二进制，并如何进行压缩的？ 比如 JPEG 的原理等。

![](https://p.ipic.vip/bl9p1v.jpg)

这个文章（网站）是我见过傅立叶变换最直观的一个解释之一，并且支持交互式操作。

![](https://p.ipic.vip/ike7wl.jpg)

网站地址： <http://www.jezzamon.com/fourier/zh-cn.html>

### 2019-10-09\[工具]

VSCode 是我经常使用的一个软件，结合自己的开发习惯我也会增加很多配置和插件等，如何将这些插件进行备份以便将来换电脑可以及时同步过来，这里关于 VScode 的配置我用的是 VSCode [setting sync 插件](https://marketplace.visualstudio.com/items?itemName=Shan.code-settings-sync)。

这个需要结合 Gist 使用，具体使用方式请查看官方文档：

![](https://p.ipic.vip/zxr114.jpg)

![](https://p.ipic.vip/nxhasy.jpg)

![](https://p.ipic.vip/h2xa6n.jpg)

其实我有一个专门的[开发常用配置文件备份仓库](https://github.com/azl397985856/dev-config)用来存放这些东西，这是我的仓库存放的配置，这样我即使换了电脑也能很快地用到我最舒服的配置。

![](https://p.ipic.vip/mvp7f0.jpg)

如果大家没有更好的方式，不妨采用这种方式，如果你有更好的方式欢迎给我留言。

### 2019-10-08\[工具]

今天是国庆结束的第一天，大家假期玩的怎么样？ 希望大家可以尽快从假期的状态中转变回来。今天给大家推荐一个我个人使用比较多的一个功能，就是`剪贴板历史`。

我在使用手机的时候（笔者使用的是安卓机），会经常复制一些文字或者图片，然后进行粘贴，有时候会需要粘贴之前复制的一个东西，因此剪贴板历史就显得很重要，手机上我用的就是`搜索输入法自带的剪贴板历史功能`。

而在电脑上我使用的是 Alfred 自带的`剪贴板历史`功能，只不过默认不开启，你需要去配置一下才行。

![](https://p.ipic.vip/r4ivdg.jpg)

然后你就可以查看你的剪贴板历史了：

![](https://p.ipic.vip/i8quci.jpg)

![](https://p.ipic.vip/xf00ma.jpg)

## 关注我

我重新整理了下自己的公众号，并且我还给它换了一个名字`脑洞前端`，它是一个帮助你打开大前端新世界大门的钥匙 🔑，在这里你可以听到新奇的观点，看到一些技术尝新，还会收到系统性总结和思考。

在这里我会尽量通过图的形式来阐述一些概念和逻辑，帮助大家快速理解，图解是我的目标。

之后我的文章会同步到微信公众号 `脑洞前端` ，你可以关注获取最新的文章，并和我进行交流。

另外你可以回复大前端进大前端微信交流群， 回复 leetcode 拉你进 leetcode 微信群，如果想加入 qq 群，请回复 qq。

![](https://p.ipic.vip/bp35i7.jpg)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://leetcode-solution-leetcode-pp.gitbook.io/mz-ri-yi-jm/2019-10.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
