Arch Linux 日常:从“折腾”到“生产力”的进化之旅
直到今天(3月9号),整整一周的高强度使用和不断调教,我终于敢说:Arch 不仅能活下去,而且比想象中更适合我的双重身份——开发者与工地施工员。 这周我都折腾了什么? 环境与字体配置:解决了最初中文字体发虚和缺失的问题,现在我的终端和浏览器里,等距字体和各类 Nerd Fonts 混杂得极为和谐,阅读代码简直是享受。孩子们,不会QT和没用过环境变量的不要用这玩意。 包管理 (pacman & yay) 的终极快感:受够了去各种官网下载 .exe,然后提防捆绑安装的日子。在 Arch 里,一句 yay -S 软件名,几秒钟后软件就安静地待在启动器里了。无论是微信、Node.js 还是复杂的开发库,全都在掌控之中。 工作流重建:在工地需要处理的基础办公任务也找到了替代品。WPS 的 Linux 版出奇的好用;而绘图、修图等需求,也能在开源社区找到轻量又无广告的替代软件。 系统维护:滚动的恐惧与刺激:大家都说 Arch 是“滚挂”代名词。这周我确实遇到了一次因为特定包依赖冲突导致的无法启动 XWayland 的小问题。但是看报错日志、去论坛查疑、最终通过降级包修复成功的过程,让...
孩子们,我不做 Windows 人啦!
“Are you sure you want to format /dev/nvme0n1p3?”“Yes.” 就在 3 月 2 号的这个夜晚,我正式把装满了各种恶心管家、弹窗广告和强推组件的 Windows 分区,干!掉!了! 才怪,孩子们,grub双引导和windows原生的dx12还是不错的,但是在此之前,我得把环境和生态全部搬过来。 孩子们,我不做 Windows 人啦!(Jojo 脸.jpg) 桌面与美化:从简陋黑框到酷炫极客Arch 的安装这回轻车熟路了(感谢 archinstall 脚本的辅助,终于不用一行行敲命令了)。装完系统才是真正折腾的开始。 **窗口管理器 (WM)**:没有选择臃肿的 KDE 或者 GNOME,我头铁地选了 Hyprland。基于 Wayland 的平铺式窗口管理器。刚进去的时候一片漆黑,但配置好动画和快捷键后,那种丝滑和高效,真的是用了就回不去。 **终端 (Terminal)**:换上了 Alacritty + Tmux。 状态栏:自己从头配了 Waybar。 目前的极简桌面大概长这样: 现在的屏幕:一块透...
Arch Linux 试毒:初探邪教的诱惑
“Arch Linux 是邪教,千万别碰!” 这句在技术圈流传甚广的忠告,今天终于被我抛到了脑后。看着 Windows 11 日益臃肿的身躯、层出不穷的弹窗警告,还有在工地画图时突然给我来个蓝屏重启的绝望,我决定:是时候找点刺激了。 今天(2月25日),我正式开始了 Arch Linux 的“试毒”之旅。 为什么是 Arch?其实我也考虑过 Ubuntu 或者 Manjaro,但骨子里那种“要想懂,就得从零开始手搓”的工程师强迫症犯了。Arch 的哲学——KISS (Keep It Simple, Stupid) 简直太吸引人了。你需要什么,就装什么;系统里没有一行代码是多余的。 这不就像我们在工地上打灰一样吗?一切基础都要亲自夯实。 第一次安装:被黑框框支配的恐惧没有图形化安装界面?纯命令行?讲真,看着屏幕上闪烁的光标,我有一瞬间怀疑自己是不是自虐。 跟着 Arch Wiki 一步步: 联网 (iwctl) - 这一步就卡了我半小时,因为宿舍网卡的驱动有点奇葩,最后我直接换数据了。 分区与格式化 (fdisk, mkfs) - 小心翼翼,生怕把用来吃饭的 Windows 数据...
彻底放弃:拥抱 Vibe Code,AI 才是亲爹
最终章:拥抱未来这是我《Vue 学习之路》系列的最后一篇文章。因为,这路我不走了。 为什么放弃? 效率差距:我写个增删改查页面,要 4 小时,调 CSS 还要 1 小时。AI 写,只要 30 秒。 知识焦虑:前端技术栈爆炸,学不完。但 AI 已经学完了所有文档。 幸福感:写代码是为了创造产品,不是为了修 Bug。 Vibe Code 体验打开 Vibe Code,输入:“做一个博客首页,要有毛玻璃效果,基于 Hexo Butterfly 主题风格”。然后,啪!代码出来了。没有语法错误,没有类型报错。 那一刻,我感觉自己之前的努力就像个笑话。 拥抱变化从今天起,我不再是前端切图仔,我是 AI Prompt 工程师。Vue 3?真不熟。Pinia?没听过。我只知道 “Generate a login page with Vue 3 and Tailwind”。 在这个快速发展的前端时代,技术的更新迭代速度简直让人窒息。每一次框架的更新,不仅带来了新的特性,也带来了新的焦虑。作为一名追求极致体验的开发者,我深知持续学习的重要性。但是… 真的需要学这么多吗? 再见了,所有的未定义变量,...
我累了:试图理解源码,结果被源码理解了
源码阅读:从入门到放弃为了提升自己,我决定阅读 Vue 3 源码。打开 core 仓库,看到那几万行 TS 代码,我陷入了沉思。 晦涩的渲染器renderer.ts,几千行的 switch case,各种位运算标记(PatchFlags)。我看了一行,脑子就过载了。这就是大神的思维世界吗? 我意识到,我可能这辈子都达不到这个水平了。我只是一个 API Consumer,一个熟练的搬砖工。 转折点就在我绝望的时候,我接触到了现在的 AI 编程工具。 AI 才是未来不装了,我摊牌了。手写代码是上个世纪的事情了。 AI 降维打击今天我试了一下 Vibe Code,只需一句话,它就生成了我折腾了三天都没写出来的功能。那一刻,我释然了。我为什么要跟机器比速度?我为什么要跟编译器较劲? 从今天起,我不再是前端切图仔,我是 AI Prompt 工程师。Vue 3?真不熟。Pinia?没听过。我只知道 “Generate a login page with Vue 3 and Tailwind”。 真香!
逐渐暴躁:为什么前端框架更新这么快?!
永远学不完今天看到尤雨溪又发了新推特,Vue 3.5 即将发布,又有一堆新特性。Vapor Mode?无虚拟 DOM? 求求了,别更新了。我 Vue 3.0 的文档还没背熟呢。 疲惫感每次打开 GitHub Trending,都是一堆新轮子。React Server Components, SolidJS, Svelte, Qwik… 每一个都号称颠覆前端。我累了,真的累了。 作为一名追求极致体验的开发者,我深知持续学习的重要性。但是… 真的需要学这么多吗? AI 才是未来不装了,我摊牌了。手写代码是上个世纪的事情了。今天我试了一下 Vibe Code,只需一句话,它就生成了我折腾了三天都没写出来的功能。那一刻,我释然了。我为什么要跟机器比速度?我为什么要跟编译器较劲? 拥抱变化回想起刚开始接触 Vue 的时候,那时候的快乐是纯粹的。写一个 {{ message }} 就能看到页面变化,那种成就感无与伦比。而现在,我们要处理复杂的依赖关系、难以捉摸的类型定义、层出不穷的构建工具配置。难道这就是成长的代价吗? 真香!
深坑记录:响应式丢失的那一夜
那个让我通宵的 Bug那是周五的晚上,本该是快乐的周末开始。但是测试报了一个致命 Bug:用户点完保存,列表数据没有更新,必须刷新页面才行。 排查过程 查接口:后端接口返回的数据是新的,没问题。 查 Vue DevTools:发现 store 里的数据确实可以更新,但是组件里的数据没变。 定位代码: 12345// store.jsstate: () => ({ list: [] })// component.vueconst { list } = userStore 就是这行解构!在 Options API 里习惯了 this.list,在 Setup 里直接解构 store,导致 list 变成了一个普通的数组,失去了响应性连接。 心态崩了毁灭吧,赶紧的。累了。 我们先来聊聊 Vue 响应式的核心概念。在官方文档中,这一部分被描述得非常晦涩难懂。我花了整整三天时间查阅源码,翻遍了 GitHub 上的 Issues,才勉强理解了其中的奥妙。简单来说,它就像是一个黑盒子,你输入 A,它输出 B,但中间发生了什么,只有上帝和尤雨溪知...
前端性能优化:只要我跑得够快,Bug 就追不上我
性能优化:无底洞说页面加载太慢,要优化。好,我优化。 你知道的,一个three.js地图,配上一大堆数据,能加载的快就有鬼了。 漫漫长路 代码分割(Code Splitting):路由懒加载,组件异步加载。好,首屏快了一点。 图片压缩:上了 WebP,上了 CDN。 减少重排重绘:小心翼翼地操作 DOM。 Tree Shaking:检查打包产物,去掉了无用的 lodash 引入。 结果呢?乐了,更卡了。 心态崩了毁灭吧,赶紧的。累了。 为什么这么难?前端不就是画画界面调调接口吗?为什么要搞这么复杂?Webpack 还没整明白,Vite 又来了;Vue 3 又变了。学不动了,真的学不动了。
Vite:快!太快了!由于速度太快我跟不上了
Vite:这也太快了吧… 还有报错Vite 宣称是下一代前端构建工具。启动确实快,毫秒级。 开发爽,打包火葬场开发环境用的是 ES Modules,不需要打包,所以快。但是生产环境还是用的 Rollup 打包。这就导致了一个极其恶心的问题:开发环境跑得好好的,一打包上线就报错! 有些依赖包不是 ESM 格式,Vite 开发时会预构建解决,但在生产打包时,Rollup 的配置如果没有把 commonjs 转好,直接崩。我曾经为了一个老旧的加密库,折腾了整整两天 Vite 配置。optimizeDeps、rollupOptions、commonjsOptions… 每一个配置项都像是在嘲笑我的无知。 心态崩了毁灭吧,赶紧的。累了。 我们先来聊聊 Vite 的核心概念。在官方文档中,这一部分被描述得非常晦涩难懂。我花了整整三天时间查阅源码,翻遍了 GitHub 上的 Issues,才勉强理解了其中的奥妙。简单来说,它就像是一个黑盒子,你输入 A,它输出 B,但中间发生了什么,只有上帝和尤雨溪知道。 代码示例方面,我尝试写了一个 Demo,结果控制台满屏飘红。这哪里是写代码,简直是在扫雷...
TypeScript:给代码穿上防弹衣 (虽然很重)
TypeScript:心态崩了毁灭吧,赶紧的。累了。 无尽的报错TypeScript 说是给代码穿上防弹衣,防止低级错误。但实际上,它更像是给我的手戴上了镣铐。 Type 'string | null' is not assignable to type 'string'.Property 'xyz' does not exist on type 'ABC'. 我知道!我知道它是 null!我加了判断了!但 TS 就是不信!非要我写 as string 或者 !。 尤其是在 Vue 组件的 Props 定义里,结合 defineProps 和泛型,写起来那叫一个酸爽。为了解决一个类型报错,我可能要写几十行的 interface 定义。这到底是写业务逻辑,还是在做类型体操? 为什么这么难?${title} 让我彻底破防了。我在 Pinia 里配了半天状态,结果组件里死活拿不到。控制台的黄色警告和红色错误交织在一起,像是在嘲笑我的无能。 在这个快速发展的前端时代,技术的更新迭代速度简直让人窒息。每一次框架的更新,不仅带来...





