← 全部博客

ssshooter.com

站点来源 · 不代表单一作者

当前已导入的历史,每页 50 篇;不代表网站完整历史。筛选作用于当前页,更多内容可由 Grok 后续补齐。

访问原站 ↗
ssshooter.com

激荡 2026

ssshooter 提前写下 2026「激荡」:年初被裁、筹备婚礼与开源/产品并行,半梦半醒细节催促记录;描绘 last week、返乡过年与婚事节点交织的动荡一年。

原文 ↗
ssshooter.com

CSS Strut 与 IFC 简析

ssshooter 用例子解释 IFC 与隐形 strut:父级 line-height 撑出空白、与 inline-block 子元素基线对齐,消除「没 padding 却有空隙」的疑惑。

原文 ↗
ssshooter.com

Tauri 应用苹果签名踩坑实录

昨天终于心一横开了苹果开发者,一大早开了,想着我要一天搞定上架提交!然而,钱是付了,等到晚上九点多,才成功开通。好嘛,那第二天再努力吧,带着兴奋入睡,第二天一早起来开干。 事实是我把这想得太简单,出了舒适区,就真的想踏入泥沼一样寸步难行。搞了大半天才终于把不用上架的版本签好,晚上之前也把 pkg 打出来了。不容易啊! 下面讲讲一些值得注意的点吧。如果你也打算入坑 Tauri 开发,而且打算构建 macOS 应用或者 iOS 应用,记得收藏,以后会用到的。 你先得搞清楚,CSR、CER、P12 这些概念分别是啥,不然肯定被 N 个证书搞得晕头转向。 在数字证书和公钥基础设施(PKI)领域,这三个缩写分别代表了证书申请、证书本身以及证书存储的不同阶段和格式。 简单来说,它们的关系可以看作是一个从申请到签发再到打包的过程。 本质:申请表 当你需要一个正式的 SSL/TLS 证书时,你首先要在服务。

原文 ↗
ssshooter.com

久违的生活碎片记录

失业之后多次想写点东西,也确实写了,不过都是零散地写在 Obsidian 里面,时间过了,又暂时不想整理发到博客。于是今天还是直接在博客写吧,最近的非日常生活。 2026-02-17 初二被 CC 邀请去他家烧烤,一扫除夕初一的无聊。工具食材都到位了,结果生火生了好久都生饿了。 山姆的羊扒真香嘻嘻! 从天亮吃到天黑,要是我找不到工作,要不要落魄前端在线烧烤呢( 最后摸摸 CC 的猫,乖乖的好猫~ 2026-02-28 迫于准备结婚,过完年 2 月底,把送礼的任务完成,又解决一件事。结婚真花钱呀。 2026-03-11 快要领证了,在领导强烈建议下去修脸,换一个更好懂的词,那就是美容。第一次修脸,感觉还不错。 这是直接在大众点评搜的一家店,在石围塘地铁站附近,就地理位置来说比较偏僻,但是因为也住得偏僻,所以一拍即合了。 店的评分很高,可能因为位置比较偏,价格跟同类相比也算实惠,一百多的套餐。

原文 ↗
ssshooter.com

一个插件让你在 Obsidian 画思维导图

最近新鲜出炉的一个 Obsidian 插件 mindelixir-mindmap:官网介绍 · GitHub 源码 主要有两个功能: - 让你可以以思维导图的形式阅读 markdown 文件 - 让你可以在 markdown 文件中插入思维导图 markdown 转思维导图 mindelixir-mindmap 可以根据标题和列表的层级关系把 markdown 文件转换为思维导图。 Mind Elixir Plaintext Mind Elixir Plaintext 是一种类似 markdown 嵌套列表的格式,不过加上了连线、总结和样式的语法。 你可以通过简单的缩进、ID 引用和类似于 JSON 的尾部声明,快速在文本里构建复杂的思维导图结构。同时,这种结构 AI 生成起来也非常方便。 上面的示例展示了几个关键语法: - - 开头定义节点,缩进 2 空格表示层级关系 - [^id] 为。

原文 ↗
ssshooter.com

看完就懂 useSyncExternalStore

React 引入 useSyncExternalStore 也很长一段时间了,但是存在感还不太强。简而言之,它专门用来搞定那些不受 React 内部生命周期控制的外部数据源。 过去最大的问题其实是 React 渲染时的 「撕裂」,这是 React 为了优化页面响应速度引入的并发渲染机制带来的副作用。 简单来说就是 React 为了防止在渲染时长时间无法响应用户输入,把渲染过程拆分成多个可中断的小任务,这就能小任务的间隙中插入用户响应,从而模拟出「并发」的感觉。更完整的前因后果可以参考《React 的设计哲学》。 在 React 并发渲染机制下,如果用普通的 useEffect 去同步外部数据,可能会出现渲染进行到一半时数据突然发生变化,导致同一份页面中,一半的组件拿着老数据,另一半拿着新数据的灵异现象(但是实际上出现这个问题的几率其实非常小,大家都忽略了,这就导致了 useSyncExte。

原文 ↗
ssshooter.com

看完就懂 useLayoutEffect

useLayoutEffect 与大家熟悉的 useEffect 语法完全一致,从产生副作用的角度上看,功能上也是一样的,唯一差别就是调用时机。 useEffect 会在画面绘制后异步执行,而 useLayoutEffect 会在画面绘制前同步执行。为了讲清楚这个时机的具体区别,得先复习一下浏览器渲染页面的过程。 注意最后 js 运行的那一块,useLayoutEffect 和 useEffect 就分别位于 paint 之前和之后。 执行的顺序是: - useLayoutEffect - 画面绘制 - 下一轮 js 运行 useEffect 顺便我们也能看出来,useLayoutEffect 之所以叫 useLayoutEffect 就是因为它的运行时间点沾着 layout。 使用场景 知道这两个函数的区别,我们还需要知道,到底什么时候用 useLayoutEffect 呢? 答案是,如。

原文 ↗
ssshooter.com

复习 DOM 事件机制

本期前端复习的主题是 DOM 事件机制,是前端开发非常重要的基础。除了常听到的“冒泡”,完整的事件流其实更有意思。 事件传播 完整的 DOM 事件传播分为三个阶段: - 捕获阶段(Capturing Phase) - 事件从 window 一路向下传递到目标元素的父节点。 - 期间可以通过 addEventListener(type, listener, true) 第三个参数设为 true 来监听此阶段。 - 目标阶段(Target Phase) - 事件到达目标元素本身,即 event.target。 - 此阶段监听函数会被触发。 - 冒泡阶段(Bubbling Phase) - 事件从目标元素向上传播至 window。 - 默认通过 addEventListener(type, listener, false) 注册的事件监听器会在这个阶段触发。 但也不是所有事件都支持冒泡,例如 f。

原文 ↗
ssshooter.com

读完书容易忘?这个开源 AI 应用能帮你!

其实我们不必回避看完书就忘的问题,因为大多数人看书都是会忘的。其实人类的大脑就是这么设计的,它会过滤掉大部分不重要的信息,只保留下重要的信息。如果真的想要记住一本书重要的知识,需要反复阅读,反复思考,反复练习。 在前 AI 时代,做读书笔记是一件非常耗费精力的事情,但是有大模型之后,我们可以在做笔记这件事上偷偷懒。 注意:做笔记可以偷懒,但是思考和反复回看是绝对不能偷懒的。 那么有什么好用的工具呢?朋友们,有的!欢迎使用 ebook-to-mindmap!简单来说,你可以通过 ebook-to-mindmap 把 pdf 或 epub 格式的电子书转换为分章节的思维导图或者文字总结。 点击这里即可立即体验。整个网页应用功能比较简洁,大家可以直接上手,当然,下面我也会比较详细地介绍一下这个应用的使用方法🤗 模型配置 使用 ebook-to-mindmap 的第一步是配置模型。它和很多 AI。

原文 ↗
ssshooter.com

博客功能更新 × 3

有种好久没更新本站历史的感觉,最近有 3 个新功能还是得记一下。 系列文章 使用方法:Frontmatter 中添加 series 和 seriesOrder 相关文章 使用方法:Frontmatter 中添加 recommendTag 评论组件更新 Twikoo 似乎挺久没更新了,于是 Fork 了一份。Twikoo 本身用的还是 Vue2,本来想顺便把它升级成 Vue3,但是迁移起来比想象中的麻烦(而且我还发现自己已经把 Vue2 的使用方式忘掉一大半了😂),如果再过几年它依然没更新的话再重构吧。 最后就只是改成 Vite 构建,添加了主题色功能,顺便做了一点 UI 微调。 如果你也想使用,只要安装依赖: 然后在 global.css 中添加如下代码即可: 太好了,UI 终于统一起来了,从 cactus Fork 出来也这么久了,更新了不少,晚点也开源一下好了🤗。

原文 ↗
ssshooter.com

博客音乐播放器 + 1

尽管我本来不是想做博客播放器,而是做一个歌词解释器,但是做都做了,突然发现做成大杂烩不也行,于是开干呗~ 最后出来结果还不错,接下来简单介绍一下这个开源项目: - Github 地址:Elixia Player - 直接来试用:https://elixia-player.koyeb.app/search 特别鸣谢 Meting,没有 Meting 就没有这个项目! 搜歌、看歌词、AI 功能就不在这多说了,下面主要介绍其作为博客音乐播放器的能力,主要是 3 个功能: - 插入播放卡片 - 插入外链卡片 - 生成图片分享 首先是播放卡片,可以播放插入的歌曲,但前提是必须提供对应音乐平台的 cookie。虽然体验非常好,不用跳转直接播放,但对维护者来说就非常麻烦了,需要在部署服务时设置 cookie,并且 cookie 过期的时候需要及时更换,否则无法播放。 举个 QQ 音乐的例子,在登陆 QQ。

原文 ↗
ssshooter.com

2025 年终总结

又到了该年终总结的时候,真的一眨眼,2025 就过去了,所以对于这一年的总结,我的脑子有一点空白。 来吧,努努力吧,回想一下,拼凑今年的记忆碎片。 世俗的任务 上年在番禺当兄弟,今年在江门当礼炮手,明年不出意外该是轮到我了,搞婚礼这些世俗任务是真的烦人,花大价钱给亲戚朋友做秀,最后大多数人都并不会记得什么。不过既然我是明年,这事还是留着明年写吧。 这里想讲的是另外一个跟哥们讨论过的问题,那就是生孩子。首先表明立场,在这个随时失业且有房贷的前提下,我是不敢生育的,真的看过太多家庭因为钱的问题吵得一地鸡毛了。 回到主题,24、25 年的出生率处于新中国成立后最低的水平,这已经是人尽皆知的事情,很多网友也都开始看日本前瞻服预测中国老龄化结局。但奇妙的是什么,哥们说他身边的人陆续生孩子,还有不少二胎。一般我不会这么疑惑,这存在地域差异,或许他那就是爱生娃,但是今年年末,我同组的两个同事几乎同时休陪。

原文 ↗
ssshooter.com

小猫都能懂的大模型原理 6 - 模型优化

📚 小猫都能懂的大模型原理 - 📍 小猫都能懂的大模型原理 6 - 模型优化 本文旨在用简单易懂的语言解释大语言模型的基本原理,不会详细描述和解释其中的复杂数学和算法细节,希望各位小猫能有所收获 🐱 简单来说,大模型蒸馏(Model Distillation) 就是一种“老师带学生”的技术手段。 它的核心目的是:把一个超大模型(老师)的能力,“传授”给一个较小的模型(学生),让小模型在变小、变快、变便宜的同时,还能保留大模型的大部分能力。下面稍微具体说说怎么做到蒸馏。 可以想象,现在头部模型 800GB - 1TB 的硬盘文件大小,里面有很多冗余信息。对于小模型不需要那么面面俱到,所以通过大模型对小模型某些领域的指导,即使小模型没有那么大的规模,也能让小模型在该领域效果足够好。蒸馏后的模型只有 2GB ~ 4GB 的大小,完全可以在消费级电脑和手机上使用。 虽说参数量能大幅减少,但是蒸馏模。

原文 ↗
ssshooter.com

useEffect 清除计划

如果说 eval 是 JavaScript 的 Evil,那么 useEffect 就是 React 的 Evil。 useEffect 至少有三宗罪: - 在其中使用 setState 会引起重复渲染 - 缺乏注释的 useEffect 往往让人意义不明 - useEffect 意味着让人苦恼的依赖管理 我直接给出一个暴论:尽量清除你项目中的 useEffect。 下面我不会讲到底啥时候不该用 useEffect,因为 useEffect 本来™的绝大多数情况就不该用,一一列举这些反面例子就是浪费时间。 因此反向思考,我下面主要讲到底什么情况必须要用 useEffect,再伴以少量有代表性的反面教材。 响应组件挂载 要说 useEffect 无法清除的情况,首先肯定是作为组件挂载的钩子,比如说: 这是绝对无法替代的使用场景,在组件挂载时,如果你需要操作 document 或者其他无法通过。

原文 ↗
ssshooter.com

小猫都能懂的大模型原理 5 - 后训练

📚 小猫都能懂的大模型原理 - 📍 小猫都能懂的大模型原理 5 - 后训练 本文旨在用简单易懂的语言解释大语言模型的基本原理,不会详细描述和解释其中的复杂数学和算法细节,希望各位小猫能有所收获 🐱 GPT 训练完后并不能直接与用户流畅地聊天,就像是一个只会背书、不擅长与人交往的 Nerd 🤓。你说啥呢,他就接着从他大脑里想到的都一股脑说出来,接在你后面,情商约等于 0。 chatGPT 之所以叫 chatGPT,是因为它在 GPT 的基础上做了 chat 的后训练。 对话的训练素材大概长下面这样: 通过特定的 Token 标记对话的格式,然后把这些经过审阅的对话喂给模型即可。 在喂对话前,还需要注意整理数据和调整超参数: - 数据清洗、过滤(去除垃圾、泄密、违法内容) - 样本平衡(不同任务/风格的比例) - 学习率、训练步数等超参的控制,避免遗忘原有能力或过拟合 这个步骤也叫 SFT,全。

原文 ↗
ssshooter.com

小猫都能懂的大模型原理 4 - 大语言模型架构

📚 小猫都能懂的大模型原理 - 📍 小猫都能懂的大模型原理 4 - 大语言模型架构 整体结构 在经典的架构中,数据经过注意力模块后会进行归一化(LayerNorm)。不过现在很多先进的大模型(如 Llama)为了更稳定,会把归一化放在注意力模块之前。 深层网络里,各层输出的尺度和分布会不断漂移,导致后续层“吃进去”的数值忽大忽小、训练变得不稳定。归一化就是把每一层喂给下一层的数值,拉回到一个稳定、可学习的范围(更强调相对大小而不是绝对数值),从而让梯度更稳定(不会爆、不易消)。 然后进入到前馈神经网络模块(图中的 Feed forward),就是最开始提到的那种神经网络。在这里会有隐藏层对向量维度升级,从而学习更多隐藏的内容,最后降回输入维度。 另外可以注意到,侧面有一条线跳过部分模块直接连到后面的加号,这被称为残差连接。 \[y = x + F(x)\] - \(x\):上一层的输出。

原文 ↗
ssshooter.com

小猫都能懂的大模型原理 3 - 自注意力机制

📚 小猫都能懂的大模型原理 - 📍 小猫都能懂的大模型原理 3 - 自注意力机制 本文旨在用简单易懂的语言解释大语言模型的基本原理,不会详细描述和解释其中的复杂数学和算法细节……但是本章还是一点点线性代数基础……希望各位小猫能有所收获 🐱 Transformer 的核心创新就是自注意力机制,如果忽略数学层面的问题,其实不难理解。 过去的深度学习框架对文字的处理,没有考虑到(大范围的)上下文,例如 RNN 就会一直循环计算前面的文字的影响力,但是距离一长,前面内容的记忆会丢失得比较多,而且 RNN 这个串行逻辑也跑不快。 自注意力 自注意力的突破点就在这里,它让整个上下文里的 Token 互相理解,计算过程是可以并行进行的。 之前说 GPT2 一个词维度有七百多,在下面这个例子里面,我们假设一个词维度只有 3。首先在词向量的基础上加上同样维度的位置向量,然后我们就要开始子注意力里面最精彩的。

原文 ↗
ssshooter.com

小猫都能懂的大模型原理 2 - 初见大语言模型

📚 小猫都能懂的大模型原理 - 📍 小猫都能懂的大模型原理 2 - 初见大语言模型 本文旨在用简单易懂的语言解释大语言模型的基本原理,不会详细描述和解释其中的复杂数学和算法细节,希望各位小猫能有所收获 🐱 现在大家遇到问题,第一反应都不是使用搜索引擎,而是问 chatGPT,chat 大家都知道是聊天的意思,但是 GPT 它到底是个什么呢? 展开一下全名:Generative Pretrained Transformer,翻译过来就是生成式预训练 Transformer。 所以在此之前我们需要更清楚知道 Transformer 到底是个啥。 Transformer 架构 说到 Transformer 还是不能不提其源头,鼎鼎大名的《Attention Is All You Need》,这篇论文提出了这个名为 Transformer 的深度神经网络架构。 在论文里面,这个架构是长这样的: 其。

原文 ↗
ssshooter.com

小猫都能懂的大模型原理 1 - 深度学习基础

📚 小猫都能懂的大模型原理 - 📍 小猫都能懂的大模型原理 1 - 深度学习基础 本文旨在用简单易懂的语言解释大语言模型的基本原理,不会详细描述和解释其中的复杂数学和算法细节,希望各位小猫能有所收获 🐱 AI 的科技树 我们先来通过一条简单的链路,定位大模型在 AI 领域的位置: 人工智能 > 机器学习 > 深度学习 > 大语言模型 机器学习最开始就用大量数据做线性回归从而对未知数据进行推测。 举个最简单的例子,二维的数据。直接就可以使用数学课就学过的线性回归求方程获取数据的趋势。当时就觉得算线性回归真麻烦呀,计算量那么大,没想到这都蹭到人工智能的边了,还能不难算吗? 接着,人类不满足于简单的线性回归,想要让计算机自动学习更复杂的数据特征,于是就有了深度学习。 深度学习 深度学习之所以深度是因为,它基于多层神经网络自动学习数据特征。多层神经网络就像人脑的神经元互相连接。每根连接的强度就是权。

原文 ↗
第 1 页
博客订阅源 1