全部文章
按发布时间浏览小栋博客的全部内容

差生文具多系列VisualStudioCode最好看的编程字体
为什么换字体 VS Code 默认字体在 Windows 上是 Consolas,在 macOS 上是 Menlo。这俩都不丑,但看久了眼睛会累。换上 JetBrains Mono 之后,几个肉眼可见的提升: 笔画粗细更均匀 ,长时间看不晃眼 x 高度大 (小写字母的高度),小字号也清晰 连字(ligatures) : => 显示成 →, != 显示成 ≠, === 显示成 三个等号合并,代码更紧凑 类似字符区分度高 :0 跟 O、1 跟

2345好压批量文件改名王v6.0
这款批量文件改名工具是从 2345 好压里单独抽出来的组件——好压本体是个压缩软件,但它附带的改名功能其实很好用,有人就把它精简提取成了独立版本,不用为了改个名装一整套压缩软件。 能做什么 批量重命名 :一次性给成百上千个文件按规则改名,比手动一个个改快得多。 字符替换 :批量替换文件名里的指定字符,比如把所有文件名里的空格换成下划线。 绿色独立 :从好压里提取的单独版本,体积小,免安装。 整理下载文件夹、相册、素材库的时候特别顺手——选

蚂蚁集团旗下语雀崩了:在线文档及官网均无法打开
蚂蚁集团旗下的在线文档与协同工具语雀今天疑似出现服务器故障,在线文档和官网一度都打不开。 对此,语雀官微回应称,这是网络故障导致的无法访问,该故障不会影响用户存储在语雀的数据,也不会造成数据丢失,目前正在紧急恢复中。 语雀是蚂蚁集团旗下的在线文档编辑与协同工具,主打"结构化知识库管理",形式上类似书籍目录。和其他可以随手新建文档的产品不同,语雀里的每一篇文档都必须归属于某个知识库——这种产品设计的用意,是从源头帮用户建立知识管理的意识,养成整理知识的

Fiddler抓包安卓电模拟器解决无法抓包问题
问题场景 开发安卓 App 时,经常需要抓真机或者模拟器里的 App 流量来调试接口。用 Fiddler 抓 PC 浏览器流量是默认行为,但要把模拟器/手机的流量引到 Fiddler 来,需要做几步配置 —— HTTPS 解密、远程连接允许、根证书安装、模拟器代理设置、证书信任。下面是完整流程,我把踩过的坑也都标出来。 整体流程 简单说就是: Fiddler 端配置:开 HTTPS 解密、允许远程连接、导出根证书 模拟器端配置:网络桥接、设置代

深入解析4层代理和7层代理的区别:优化网络性能的关键选择
什么是网络代理 代理(Proxy)是一种网络中间服务,客户端不直接连真正的服务器,而是通过中间代理转发请求。代理服务器接收客户端请求,然后选一个后端服务器把请求转过去,再把响应回来。 代理用得最多的两个场景: 负载均衡 :把请求分摊到一组真实服务器,避免某台被压垮 安全 / 访问控制 :对外只暴露代理的 IP,真实服务器藏在后面 而 "4 层代理"和"7 层代理" 是按 OSI 模型分类的。要理解这个区别,得先看 OSI 模型。 OSI 七

Vue移动端适配vw和 postcss-px-to-viewport使用
vw 适配 vs rem 适配 Vue 移动端做适配,传统方案是 lib-flexible + postcss-px2rem (动态调 html 根字号 + 转 rem)。但社区慢慢转向更纯粹的方案: 用 vw 单位 ,完全不依赖运行时 JS。 vw(viewport width)是 CSS 单位, 1vw = 视口宽度的 1% 。比如视口 375px 宽, 1vw = 3.75px 。直接用 vw 替代 px,浏览器原生适配,不需要任何 JS 介入。 对比:

解决Vue项目每次更新浏览器缓存问题
问题:用户死活看不到新版本 SPA 项目部署完,产品经理说他改不出新的功能。F12 一看,加载的还是上次发布的 app.123abc.js ,新 commit 完全没生效。让他强刷一下 (Ctrl+F5) 立刻就好,但你没法要求所有用户都来这一下。 本质是 浏览器缓存 没失效。Vue / Webpack 默认 hash 文件名( app.[hash].js )按理说能自动 cache-bust,但很多项目里: 构建 hash 策略没开,文件名一直是 app

护眼宝 V3.1.2 官方版
护眼宝是一款专门用来缓解用眼疲劳的小工具。长时间盯屏幕的人,眼睛干涩、酸胀基本是常态——这类软件的思路是通过调节屏幕色温、亮度,再加上定时提醒,把"强制休息"安排进你的工作节奏里。 主要功能 五种护眼模式 :打开软件后可在五种预设模式间切换,适配不同光线环境和用眼场景。 用眼时长统计 :实时记录当天累计用电脑的时间,到点提醒你该歇了。 眼保健操引导 :内置眼保健操教程,跟着做能放松眼周肌肉。 主界面能直接看到当天已用电脑的时间:

前端项目使用await-to-js异步代码优化利器
痛点:async/await 的 try/catch 包装 用 async/await 写代码很爽,但每个调用要包 try/catch 处理异常,代码很快就会变成下面这样: async function getList() { try { const res = await getAListOfClassifiedItems({ p1, p2 }) if (res.data.code === 200) { // 处理成功 } else { console.e

域名DNS解析中DNS隐/显性 URL记录
场景 大部分人都拿过这个需求:站点同时有顶级域名( example.com )和 www 二级( www.example.com ),为了不让搜索引擎把这俩当成两个站、分散权重,需要把其中一个 301 跳到另一个。 常规做法是在 Web 服务器(Nginx / Apache / IIS)里写一条 301 规则。但 很多 DNS 服务商提供的"URL 转发"记录可以不走服务器层,直接在 DNS 解析时就完成跳转 。配置极简单,不用动 Web 服务器配置,适合临时需求或者

vue3+typescript+pnpm详细介绍使用
为什么用 pnpm 不用 npm/yarn pnpm 的核心优势两个 —— 快 、 省磁盘 。原理: 硬链接 + 内容寻址 —— 全局只存一份每个版本的包,项目里的 node_modules 实际是硬链接指向那份。装第二个项目时,相同的依赖直接复用,速度极快。 严格的依赖隔离 —— 不像 npm 把所有依赖平铺到 node_modules 根目录,pnpm 严格只暴露 package.json 里声明过的依赖。这能防止"幽灵依赖"(代码里

解决Nuxt3项目创建项目失败链接失败等问题
问题:创建 Nuxt 3 项目卡在网络 用 npx nuxi init my-app 创建新项目时,经常卡在拉模板这一步。控制台报错通常是: fetch failed Error: ENOTFOUND raw.githubusercontent.com connect ETIMEDOUT 185.199.108.133:443 这是 GitHub 提供的几个域名( raw.githubusercontent.com 、 github