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/

Chrome 80 跨域 Cookie 变化的影响和应对方案

Chrome Cookie SameSite Secure 跨域

根据 时间线 Chrome 80 稳定版本将在 2020-02-04 发布。 它的 变更列表 中有两项 Cookie 安全 相关的变更, 对非安全连接下的 Cookie 设置和 Cookie 跨于发送做了更多限制。 这意味着通过 Cookie 跨域跟踪用户的相关功能可能会受到影响(比如日志、统计), 且只能在 HTTPS 上修复(意味着可以避免针对非安全连接的 MitM 攻击)。 具体地,有这两个 feature:

对应的标准草案可以在 IETF 网站找到:Incrementally Better Cookies。 下文关注这两个变更对业务带来的影响,以及可能的应对方案。

从当前位置打开 Terminal

Terminal Shell i3wm

我们有很多工作区时,每次打开一个 Terminal 都需要先 cd 到和上一个 Terminal 一样的位置再开始工作。 这个过程既然是固定的,那就一定能自动化。

我遇到的具体场景是,i3wm 有 workspace(工作区)的概念,每个工作区可以打开任意多个 Terminal。 我希望同一个工作区的 Terminal 打开时都有一样的 CWD(Current Working Directory), 不同的工作区有不同的 CWD。即:打开 Terminal 时,自动 cd 到当前工作区其他 Terminal 所在的位置

本文基于 Reddit 上的一个小脚本展开,这一思路适用所有 Terminal Emulator 和 Desktop Environment(尽管我只有 Window Manager 也是适用的)。

上一页 下一页