JavaScript 字符串转数字

JavaScript 字符串 Number

JavaScript 有很多字符串转数字的方式,但它们的转换规则很不一样适用范围也不同。 这里给出一些总结,以及一个对比表格。

TL;DL

value “3.14”/3.14 null false true “Infinity”/Infinity “1e3” “123z” “z123” 10n
parseInt(value) 3 NaN NaN NaN NaN 1 123 NaN 10
Number(value) 3.14 0 0 1 Infinity 1000 NaN NaN 10
+value 3.14 0 0 1 Infinity 1000 NaN NaN TypeError

此外,

  • “0x” 开头都被解释为 16 进制。
  • “0x” 开头都被解释为 10 进制,除了 parseInt 在某些浏览器下解释为 8 进制。
  • undefined 都会转为 NaN。

Vim 使用系统剪切板

Vim 剪切板 寄存器 Vim-Practice

Vim 是运行在 Terminal 里的 Shell 程序,所以要把内容拷贝出来可以通过 Terminal,也可以通过 Vim 自己。不配置 Vim 剪切板时只能通过 Shell 来拷贝粘贴:

  • 通过 Shell 拷贝(比如在 iTerm 里按住 Alt 选取内容)会有问题:比如会包含 Vim 左侧行号、折行变成了换行。
  • 通过 Shell 粘贴有类似的问题:相比于 p 命令,在插入模式下 Ctrl+V 时 Vim 会把内容当作字符键入,触发 Vim 的所有处理键入的插件,比如自动补全、语法检查等。不仅会很慢,而且可能会破坏你的内容(比如粘贴一对括号,可能 Vim 会再帮你自动补全一个多余的右括号)。

所以完美的拷贝粘贴一定要通过 Vim 本身。Vim 中 p(paste)、d(delete)、y(yank)等拷贝粘贴操作使用的是 匿名寄存器 ""(unnamed register),本文就来解释怎么在 Mac/Windows/Linux 上把 Vim 的 匿名寄存器 映射到操作系统的剪切板。

TL; DR

  1. 确保你的 vim 支持剪切板,通过 vim --version | grep clipboard 检查。
  2. 确定你的剪切板寄存器是 "+(XA_SECONDARY)还是 "*(XA_PRIMARY)。
  3. 同步剪切板和匿名寄存器,在 ~/.vimrc 添加配置比如 set clipboard=unnamed

4K 设备配置指南

网络 视频 HDMI

只要 4K 显示器就能拥有 4K 体验吗?这篇文章写在 4K 出现 六年之后的今天,再来重新审视这个问题,以及如何正确地配备显示器、片源、网络和视频线缆。

Bash 转义和引号的使用

Bash xargs grep sed 转义

字面量、转义和引号是任何编程语言的基础,但却少有人认真地学习 Bash 中的转义和 引号。 好消息是 Bash 引号的语义非常简单,这篇文章就可以完全描述。 TL;DR

  1. 反斜线用来转义除换行之外的所有字符,反斜线加换行为连行;
  2. 单引号用来直出字面量,其内容部分不允许转义,包括单引号转义也不允许;
  3. 双引号内允许 命令替换 和对特定几个字符转义,双引号内的反斜线对其他字符没有特殊含义,会被当作字面量处理。

状态码很重要

HTTP Web 搜索引擎 REST

我们知道 HTTP 状态码 用来标识响应的状态,不恰当的状态码可能会影响 SEO,用户体验和可访问性,甚至产生不可恢复的线上问题。 因为状态码不仅仅是客户端 AJAX 的返回值,它对 Web 系统架构有着重要的影响。

但有些网站从不返回 4xx,用 3xx 或 200 来处理错误。可能是为了减少错误报警来提升 KPI(比如有些老板分不清 4xx 和 5xx),可能是为了减少 nginx 返回页面的大小(比如直接 302 到 CDN),也可能是 HTTP 时代 ISP 和路由器会劫持 4xx 打自己的广告(比如 如何看待小米路由进行 404 网页劫持?)。 我们不去细究原因,只把它作为案例来讨论 404/302 状态码的误用对 Web 系统的影响。

对 tail -f 使用管道

TTY Unix 管道 awk grep sed

最近发现 tail -f 时管道后面的程序都会被卡住,才发现 grep,sed,awk 不直接输出到 TTY 时都是带缓冲的。平时跟在 cat 后使用没问题是因为输入管道关闭触发了 flush。本文详细解释其中的坑,以及怎么让 sed, awk, grep 立即 flush。 TL;DR:grep 添加 --line-buffered,sed 添加 -u,awk 调 fflush()

Vue 服务器端渲染(SSR)源码分析

SSR Vue

本文从框架开发者而非使用者的角度,学习和探讨 Vue SSR 的源码。 希望能让更多人理解 SSR 魔法的工作原理和实现思路。 因此本文不会介绍最终接口的详细参数,如 createRenderer() 的具体参数、createBundleRenderer() 的配置方法, 只聚焦在 SSR 相关代码的详细设计,介绍其中比较重要的对象、方法和流程。

如果你在找 Vue 的使用文档,或者是否应该使用 Vue SSR,请移步 Vue 官网:https://ssr.vuejs.org/

下一页