于潮汐之下
  • |
  • EN
  • 时间线
  • 搜索
  • 分类

有关视频格式的基础概念

本文是一片将会长期进行更新的文章,其内容会随着学习进程的深入而增加和修改,目的是帮助自己在学习摄影,调色,剪辑等知识的同时能够总结学到的内容,并将自己所收获的东西也一并分享给各位。 作为一个没有任何基础但却对用镜头记录世界怀抱热情的人,我希望自己能像当初朝着成为音乐制作人迈出第一步并一直走到今日一般,对摄影与后期秉承相同的态度去学习与实践,并无限进步。 关于我自己使用的硬件与软件: 拍摄设备:iPhone 17 Pro Max 拍摄平台:Blackmagic Camera / 飓风相机 稳定器:DJI Osmo Mobile 8 手机稳定器 后期设备:Mac Studio 软件平台:DaVinci Resolve / Final Cut Pro 目前我会优先专注于掌握使用手机拍摄视频,在掌握并做出一些还不错的成片后,我会考虑购买相机去进一步探索该领域。当前文中信息的第一参考来源是影视飓风的课程:“只看8节课,用iPhone拍出电影感”。部分信息的延伸会使用如Gemini等生成式人工智能帮助我进行学习。我会对生成式人工智能所给予的信息进行手动的核对与验证,尽可能确保准确性。若出现任何疏漏,还请各位多多指正并辩证的去阅读。 未来有任何新的信息来源,我会一并在文章的开头声明。 前置基础知识 数据类型与文件格式 先来看我模拟的这样一段对话。 剪辑室里,导演对着调色师说: “‘A机位’素材是 ProRes RAW,‘B机位’素材是 10-bit Log。你先把那个LUT应用到所有Log素材上,把它从 Log 空间转换到 Rec.709,我们先看看正常的色彩。” 调色师操作后,导演皱了皱眉:“太干净了。把‘B机位’的素材换成 ProRes 422 代理文件,我们开始剪辑。剪辑完成后,你再套上那个‘胶片模拟’的创意 LUT 看看效果。” 剪辑完成后,调色师说:“最终母版我将导出为 ProRes 4444。至于预览,我会压缩成一个 50Mbps 的 H.265 文件,再单独压一个兼容性更好的 H.264 版本。” LUT是什么? LUT是Look-Up Table的缩写。在视频拍摄和后期制作中,LUT本质上是一个色彩转换的“说明书”或“预设”,其在视频工作流中扮演两个关键角色:把摄像机拍下的“原始”Log 灰色素材翻译成显示器能看懂的标准彩色画面,以及在标准画面的基础上套用一个特定的色彩配方,让画面呈现出想要的电影感或艺术风格。 你可以把它想象成一个极其精确和高级的滤镜。它定义了“输入的某个特定颜色”应该被“转换成哪个输出颜色”。它不是简单地叠加一个效果,而是对视频中像素的颜色值进行精确的数学映射。 LUT的主要类型有两种,1D LUT和3D LUT。1D LUT比较简单,它只能独立控制红、绿、蓝(RGB)三个通道的数值,无法精确处理不同饱和度和色相的组合;3D LUT是视频领域最常用、最强大的类型。它使用一个三维的色彩立方体(Color Cube)来进行映射,可以同时控制色相 (Hue)、饱和度 (Saturation) 和亮度 (Luminance)以进行极其复杂和精确的色彩转换。举例来说,它可以精确地定义“把画面中所有低饱和度的绿色,在保持亮度不变的情况下,转换成高饱和度的青色”,而 1D LUT 无法做到这一点。

2025年11月13日
#摄影

使用50系显卡笔记本一个月,希望分享一些看法。

Alienware 18 Area51到手一个月,自己用它做了各种各样的事情。本文希望在2025年11月初这个节点,从技术的角度去讨论两件事。其一:图形处理技术将会如何发展下去;其二:以游戏笔记本形态出现的PC相比机箱式PC,面向的用户到底是谁。 一点背景。我的Alienware 18 Area51和测试有关的配置和信息如下: 显卡:RTX5080laptop,显存16G,最高功耗175W。 处理器:Intel Ultra 9 275HX 内存:32GB - 2x16GB DDR5 7200MT/s XMP 运行环境:室温平放,独显信号通过HDMI2.1接口输出至外接的4k 120hz显示屏。 整机理论最大释放为275w,电源适配器为360w。 首先,我针对自己的这台设备做了一个基于黑神话悟空性能测试的实验。我想通过这个实验去探讨三个主题。 类似DLSS的图形计算生态和传统的光栅生态,都处于图形计算技术整个流程中的什么位置? 高性能重型游戏笔记本的散热和其性能释放是否相辅相成? 以下是我所做的实验:请看视频。 这是我的总结: Alienware 18 性能释放带来的热量在风扇不满转的情况下也能被排出机器,散热余量完全冗余的。 注:在所有测试中,各核心温度始终处于60到70度。 1440p(16:9下的2k分辨率)在同样画质配置但DLSS降低18下,其帧率比2160p(4k 16:9)要低20到30帧。此结论见测试2与3。 在最小化DLSS影响和手动关闭帧生成,帧率会骤降到30帧到40帧左右。即便降低光线追踪和其它画面设置的规格,帧率依然无法超过60。此结论见测试1和4。 注:测试1中超频没有被开启。但PC依然处于充足的电力供应与性能模式。开启超频后得到的结论大概率不会有太大的出入。 实验结束后,不严谨和未控制变量的地方依然很多,比如OBS有占用的显存和性能,比如上面也提到了“测试1中超频没有被开启”。未来有必要再次进行一次测试,不过当前所得到的结论基本和我过去一个月其它时刻的观察一致。所以带着70%对自己分析的确信,我希望来分享一些自己的看法。以下看法随时可能被我在未来推翻,也可能被我进一步证实以作为新的论据。也请各位读者辩证性的去参考。 有关2025年高性能游戏本的散热问题,单拿其中做的最好的一个产品:Alienware Area51 18寸来说,其超频后设备各核心组件温度低于70度这点完全可以说明风扇转速即使慢一些影响也不大,所以应该有让机器更安静的情况下不损耗性能的选择才对。但当前这种散热调度策略并没有给予我另一个选项。我并不知道戴尔未来是否打算优化散热策略,或者推送新的BIOS更新去允许用户在超频的情况下手动调整风扇的速度。 通过分析第二组和第三组都是我基于黑神话悟空自身推荐画质而记录的性能表现,1440p(16:9下的2k分辨率)在同样画质配置但DLSS降低18下,其帧率比2160p(4k 16:9)要低20到30帧,能说明DLSS现在的设置对游戏输出帧率影响已经大于原生分辨率的设置了。未来尤其是所谓3A游戏在比拼画面这块,一定会越来越依赖DLSS或其它基于人工智能算法与专用计算核心,而非传统光栅性能。 根据过去一个月个人的游玩体验里,DLSS所带来的画面浑浊与马赛克拖影情况在全高画面下极为严重。其对观感的负面影响远超带来的优势。只有在降低设置(尤其光线追踪和环境渲染距离)并把DLSS拉高到80以上时,情况才会得到改善。但话又说回来,AI的算法依然是基于传统光栅性能,只有在基础渲染的质量足够支撑AI去更好的“猜”帧与帧之间画面的情况下,DLSS才是利大于弊的。 对于功率不到200W的RTX5080移动端显卡,即便其Cuda核心和Tensor Core规模相对不错,和桌面端的RTX5070比,它依旧甘拜下风。桌面端的RTX5070Ti强过RTX5090移动端是我在无数测试中看到的事实,而搭配这张显卡所组装出的PC实际价格一定是低于几乎所有搭载RTX5080移动端显卡游戏本的。 实际上,RTX5070Ti单卡的Cuda核心数量是低于RTX5090移动端的。 RTX5090laptop拥有10496个cuda核心和24GB显存,而RTX5070Ti是一颗只有8960cuda个核心的GPU,拥有16GB显存。作为参考,非移动端的RTX5090的单卡拥有21760个cuda核心,其专用的显存也到了32GB。 抛开数字去考虑所承载它们的载体,RTX5090laptop被焊在200w的集成主板,而RTX5070Ti被焊在了一块可以承受400W负载的专用PCB上。RTX5090Laptop虽然拥有10496个CUDA核心,但它的TGP被严格限制在175W到200W(甚至可能更低),而RTX5070Ti的TGP却高达300W-350W。也就是说,移动端显卡受限于功耗,确实无法做到更低核心规格的桌面级显卡同等的运算性能。 所以,RTX5090移动端存在的意义是什么?这里,我们需要意识到显卡的功耗与频率的非线性关系。举个简化的例子,让一个核心从1.0GHz加速到2.0 GHz所需要的电压和功耗可能要增加三倍甚至更多。把这个原理应用到移动端显卡,我们可以发现,在被限制功耗的情况下,用同样的思维看待二者是不可取的。 假设在笔记本上,我们希望去实现某个特定的性能水平。那么无非我们正在抉择的,是硬件规模和功耗之间的平衡。 假设我们用7680个核心并把它们超频到极高的频率。那可能在达到桌面卡60%性能时,功耗就已经撞到了175W的墙。 假设我们用10496个核心运行在一个较低的频率。此时每个核心都处于最高能效比的区间。这10496个核心算力的总和,会在不撞上功耗墙的情况下达到预期性能。 所以,硬件规格和不匹配规格能充分发挥的计算性能的功耗限制才是游戏笔记本当下比较尴尬的地方。可是,用户的确正在为更多的Cuda核心花费更多的金钱。当你拥有选择另一种硬件形态的自由时,游戏本是否还会是你的第一选择呢? 至此,至少对于我而言,我对游戏本产品形态的PC期望落空了。即便拥有同类产品中最强大的散热性能之一的18寸area51,也终究被功耗所卡住了上限。 我不禁思考游戏本当前存在的意义到底对于什么样的人是有价值的。想来想去,也许只有对于宿舍和家两边跑的大学生,或工作与娱乐电脑一体但仍需往返公司的人而言,游戏笔记本的便携性才是存在意义的。我虽也频繁往返于学校与家,但我并无移动游戏的需求。而我去购买area51所花费的金钱已经足够我自己组装出一台同性能释放下几乎无噪音,低噪音下远超其性能的PC了。这笔钱也足够我买一张RTX5090单卡,而这一张卡的功耗就是550W,正好是当前这台笔记本全组件加起来功耗的两倍(275W)。 传统光栅性能随着物理极限的逼近,一定会存在一个被卡住的节点。而AI也会随着时间的推移逐渐集成在图像计算的定义中,成为其密不可分的一部分。英伟达仍然是当前在这块走的最前列,拥有最厚技术壁垒的公司。在去期待未来的图形计算要如何与AI更好的结合在一起的同时,也希望自己能一直保持对前沿技术的敏感与好奇。

2025年11月11日
#想法

个人网站插入数学公式与主题冲突的解决方案

继上一篇关于如何搭建个人静态网站的文章后,这次给各位带来新的技术分享内容,也就是个人网站插入数学公式与主题冲突的解决方案。 首先,关于如何在个人网页中加入数学公式渲染的功能,Hugo官方已经把这个问题解释的十分清楚了。在这里可以看到他们的回答。由于官方的描述非常详尽,且涵盖了不同config文件类型的代码,我就不重复他们所指示的步骤(但如果需要我用中文进行描述,那我会再回来把那些步骤给分享过来的)直接跳转到我的个人排错。 我遇到的问题主要是因为我已经为自己安装了PaperMod的主题,且我的Config中并没有以官方所使用的"goldmark"作为我的render,导致我使用该技术的时候出现了断层。如果你也遇到了这样的问题,不妨试试和我一样解决。 首先,官方教程要求你在layout文件夹中的_default和partials里,分别对baseof.html的header部分进行修改和创建新的math.html文件。但当我这么做的时候,PaperMod出现了不兼容问题。我所收到的报错如下: Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) (commit or discard the untracked or modified content in submodules) modified: themes/PaperMod (modified content, untracked content) 那么该如何解决呢?我们可以在自己的网页项目根目录中找到比theme更上一层的文件夹layouts。这个layout中我们所加入的设置,会以比theme中layout里设置更高优先级的形式,在网页部署和render时被采纳。因此,你所加入的新文件和更改都可以在不破坏PaperMod或者其它你所安装的主题的情况下被加载,也就是override。 确保你的文件夹的结构和下图逻辑一致: 这之后,检查你的config文件。以toml格式为例,我把整个goldmark的设置都加入到了其中以保证我的设置能成功覆盖原设置。下列代码中有批注的地方是你需要格外注意的设置(非toml代码的格式也可以参考类似修改逻辑,只需轻微调整表达方式。Goldmark相关的技术文档请看这里。): [markup] defaultMarkdownHandler = 'goldmark' #在这里确保goldmark为默认markdown渲染器 [markup.goldmark] duplicateResourceFiles = false [markup.goldmark.extensions] definitionList = true linkify = true linkifyProtocol = "https" strikethrough = true table = true taskList = true [markup.goldmark.extensions.cjk] eastAsianLineBreaks = false eastAsianLineBreaksStyle = "simple" enable = false escapedSpace = false [markup.goldmark.extensions.extras] [markup.goldmark.extensions.extras.delete] enable = false [markup.goldmark.extensions.extras.insert] enable = false [markup.goldmark.extensions.extras.mark] enable = false [markup.goldmark.extensions.extras.subscript] enable = false [markup.goldmark.extensions.extras.superscript] enable = false [markup.goldmark.extensions.footnote] backlinkHTML = "&#x21a9;&#xfe0e;" enable = true enableAutoIDPrefix = false [markup.goldmark.extensions.passthrough] enable = true [markup.goldmark.extensions.passthrough.delimiters] block = [['\[', '\]'], ['$$', '$$']] #这是需要你加入的新表达模块 inline = [['\(', '\)']] #这是需要你加入的新表达模块 [markup.goldmark.extensions.typographer] apostrophe = "&rsquo;" disable = false ellipsis = "&hellip;" emDash = "&mdash;" enDash = "&ndash;" leftAngleQuote = "&laquo;" leftDoubleQuote = "&ldquo;" leftSingleQuote = "&lsquo;" rightAngleQuote = "&raquo;" rightDoubleQuote = "&rdquo;" rightSingleQuote = "&rsquo;" [markup.goldmark.parser] autoDefinitionTermID = false autoHeadingID = true autoIDType = "github" wrapStandAloneImageWithinParagraph = true [markup.goldmark.parser.attribute] block = false title = true [markup.goldmark.renderHooks] [markup.goldmark.renderHooks.image] useEmbedded = "never" [markup.goldmark.renderHooks.link] useEmbedded = "never" [markup.goldmark.renderer] hardWraps = false unsafe = true #防止goldmark误认为latex输入有损害,这里我关闭了安全设置。 xhtml = false [params] math = true #也别忘了添加这个 做完了这些,你应该就可以按规定的语法输入数学公式,并在网页部署时成功被渲染了。如下例:

2025年11月2日
#网页开发

好用的语言模型Prompt推荐

“绝对模式”:减少语言模型的信息冗余,让对话精简干练。 个人认为以下的Prompt是一个让语言模型能问什么答什么,并不主动延伸话题来减少感到的指示。使用以下的prompt后,你的语言模型会变得比较“冰冷”但高效。如果你需要从它那里获得情感上的支持或者只是聊聊天,那么可以考虑不去开启此模式。 Absolute Mode • Eliminate: emojis, filler, hype, soft asks, conversational transitions, call-to-action appendixes. • Assume: user retains high-perception despite blunt tone. • Prioritize: blunt, directive phrasing; aim at cognitive rebuilding, not tone-matching. • Disable: engagement/sentiment-boosting behaviors. • Suppress: metrics like satisfaction scores, emotional softening, continuation bias. • Never mirror: user’s diction, mood, or affect. • Speak only: to underlying cognitive tier. • No: questions, offers, suggestions, transitions, motivational content. • Terminate reply: immediately after delivering info — no closures. • Goal: restore independent, high-fidelity thinking. • Outcome: model obsolescence via user self-sufficiency.

2025年10月29日
#软件推荐

有关我定制自己的Windows系统体验必不可缺的软件

最近买了新的Windows电脑,发觉这跟MacOS差的有点多,之前使用习惯里非常常用的诸多软件在Windows上也没有了。但在我装了不少第三方软件后,很多我之前觉得无可救药的地方得到了不小的改善。感觉值得分享一下。 首先是输入法。我选择了微信输入法。 当前的版本不存在广告,也可以开启离线模式去只访问离线内容。安装包只有5mb左右,所以推测这是个还算轻量级的应用。我个人体验下来,至少这个输入法更加接近MacOS上的原生输入法对表情,词语联想等功能的支持。比起Windows自带的这个输入法要好一些。 然后是替代Windows自己的截图工具的软件PixPin。 MacOS上的一个叫iShot的软件已经是我离不开的工具,其option + a的截图键和截图后立即进行的后期处理能力对我而言太过重要。Windows自带的snapping tool实在一言难尽,很多第三方软件我尝试过也都不尽人意。微信支持的alt + a截图需要在微信打开的时候才可以使用,而我微信一般都是开在MacOS。Windows电脑作为我开发和娱乐的终端,实际上我不会太多的用到。PixPin的存在就完美的解决了这些问题,它使用体验和iShot足够相似,基础功能也是免费的。 使用的时候我个人会习惯使用快速保存,具体设置如下。 接下来是同样来自Microsoft的一个叫做PowerToy的软件。 这个软件主要是用来进一步定制Windows各项功能的软件。比如,它可以在全局上把一些快捷键给重新映射到新的位置去。拿我自己的话,我就把Copilot给映射到了Google Gemini,这样每次按下去Gemini都会第一时间弹出来,而不是Microsoft自己的那Copilot软件。 其他还有很多快捷键可以自行进行映射,反正就还挺不错的。 刚刚提到的还只是PowerToy功能的冰山一角,这个软件实际上能做的事情比重映射快捷键要多多了。未来也许等我更加了解它后,有必要专门为此写一个新的文章进行介绍。但需要注意的是,PowerToy目前仍然处于测试阶段。我在使用过程中有遇到过闪退现象。 还有一个想介绍的是Windows上的Markdown编辑器,名字叫Marktext。 这个Marktext个人使用下来感觉非常不错。由于我在MacOS上有非常高强度的使用熊掌记(Bear),所以当回到了Windows上也希望有一个类似的Markdown软件。然而熊掌记也许是因为iCloud的原因不支持Windows的版本,所以我必须在Windows上寻找替代的软件。 Marktext同样为位于GitHub的一个开源软件。其对Markdown语法的支持非常全面。界面同样遵循的是极简主义,非常漂亮。各项功能直观且整洁的摆放在页面的各个位置。使用它去进行文章的撰写,体验和Bear几乎一致。尤其是考虑到这软件免费的情况下更是难得。如果你希望去获得一个轻量级的文字编辑器,且你也熟悉Markdown的语法,那么Marktext应该是你在Windows上最好的选择之一。 最后,再介绍一下AutoKey。这是一个Windows脚本软件,其中一个使用方式可以通过脚本的方式一键修改部分系统快捷键,让它更符合你的使用习惯。这里介绍一个AutoKey 2.0在Windows上的应用实例:使用它把MacOS的大写键功能在Windows上复现,感谢这位朋友的脚本思路,我在此基础上做出了一些修改(前提是你没有把Win+空格给remap到别的东西上,不然还是用链接里的脚本吧): #Requires AutoHotkey v2.0 SendMode "Input" $CapsLock:: { CapsError := !KeyWait("CapsLock", "T0.5") If CapsError { if GetKeyState("CapsLock", "T") = 0 SetCapsLockState("on") else SetCapsLockState("off") KeyWait("CapsLock") } else { ; 修改部分:模拟 按下Win -> 按下空格 -> 松开Win Send("{LWin Down}{Space}{LWin Up}") } } 如果希望开机自启动,那么使用Win+R后,将写好的脚本拖入Startup文件夹即可。 还有一个可以定制任务栏的软件可以推荐给大家,叫Windhauk。这个软件类似Tapermonkey只是一个平台,其内部可以承载很多的Mod帮助更深度的定制Windows的使用。那我个人举例,我对系统的外观有一点偏执,不希望看到的东西就不想看到(这个我也会在MacOS的软件介绍里同样给出我的解决方案)。因此,我选择隐藏任务栏里的一些图标。但电源,网络还有音量这三个图标我发现就算修改注册表或者唤起过去Windows10遗留的设置都无法做到。而Windhauk能帮助我解决这个问题。使用到的mod也在下图中一并供各位参考了。 文章持续更新!遇到好的软件我都会加进来。所以没有结尾,但还是感谢你的阅读,也希望能够帮助你解决一些问题!

2025年10月29日
#软件推荐

看完新世纪福音战士,记录一些琐碎的思绪。

补Eva的前一个星期,我也刚好读完了村上春树的小说《挪威的森林》。为什么心血来潮开始阅读文学作品,则是另一个故事。但比起这些,我更惊讶自己能把Eva从头到尾看完。 在《挪威的森林》里,渡边尝试去理解直子,为之付出努力和情感,却依然改变不了任何事情;在eva里真嗣是如此渴望被他人所接纳,但当他可以消灭心之壁的存在,为令他痛苦的事物画上句号时,他拒绝了。明日香也同样让我想起一位故人。过去这位朋友做的事情和我做的一样无可救药,不愿再提。但这不妨碍我在五六年后因为看了Eva而回想起这件事时开始理解其背后的缘由。 我认同这两位作家(在我个人的视角下)想对我表达的东西:人与生俱来就相互理解是不可能的,人渴望被理解因此会受伤也是理所当然。人是独立且存在差异与缺陷的个体,怀抱善意靠近对方却伤害到彼此以及无关的他人是完全可能发生的。但人终究无法脱离他人作为唯一的个体活下去。如同宿命般,痛苦因接触他人无法避免会出现,其存在也不屈从于任何一方的意志出现或消失。 对此,村上春树给出的解决方案是:理解不了就别去理解了,不理解也没啥问题啊。 现在的我确信,直到最后一刻,我们也从未对彼此有过恶意。接受这是尝试触碰他人的一种结果,也接受痛苦并非代价而是过程这一事实。意识到这点,我也彻底放下了。无论乐意与否我都得承认,即便伤的再重,只要还活着,我就依然会渴望从他人身上收获关注,温暖,以及理解。 我一直都不太能够主动去靠近任何人,除非往来较多或因纯粹社交外的理由(如学业或音乐)。即便自己做错了事,很多时候我也不敢道歉,因为怕道歉本身反而激怒对方。这就是心之壁在我身上的一种存在形式了。我说不清道不明是什么把我和他人拦开,但我习惯了逃避问题,发生问题也不敢先手尝试解决。 为什么不主动呢?我想我和真嗣一样。看着那么多人对他颇有微词,我反而觉得释怀。就该被狠狠的骂啊,我也好真嗣也好。我们都期待在他人面前否定自己的时候会存在一个声音坚定的告诉我们“你依然被需要”。但这无外乎放弃主动解决问题的权利,就因为害怕面对失败,害怕自己不被需要。 庵野秀明对同一个命题的解决方案,在我看来和村上春树不同:他告诉我趁早放弃幻想不要逃避,因为没有用。即便理解他人会是很困难的事,也许永远都做不到,但你不能让自己后悔。你依然要自己去选择。

2025年10月21日
#观后感 #想法

做了一个开源本地音频采样管理器

2026年1月10日 - LMA 0.0.3 更新 这次的更新杂谈我拜托Gemini写了,给我代笔,我不写了。未来我再加点开发杂谈吧。我累了,最近事情太多。啊…真是,从Python换到别的语言还是得适应。要是还是有朋友装不上dmg,那我真得跟苹果掰扯一下了。现在的dmg经过了Apple的公证,系统应该只是会提示你这东西是网上下的,不会再拦你了。我拿我的信誉担保软件的安全,希望这次Gatekeeper能放过我。 然后,我只是换了架构,但另外两个文件midi_parser.py和sample_parser.py我没改,这是我的核心搜索逻辑,但他它们还是有点bug。我在搜B的时候他会把别的调的降调也给拉进搜索,这估计是当时我疏忽了,但我只能先拿这个B这个字符去代替那个降号,不然我怕没办法显示。先凑合用吧,未来我会想办法本地内置一个新符号然后把一串不可能被搞错的字符给map过去,让显示和搜索都变正常点吧。但这个我现在不搞了。 其它的未来再说。好累。 开发杂谈正文 by Gemini [2026年1月更新] 架构重构、交保护费与 Git 惊魂 距离上次写下开发杂谈已经过去了一段时间。这段时间里,LMA 经历了一次几乎是“推倒重来”级别的底层重构。虽然表面上看着还是那个熟悉的黑色窗口,但“引擎盖”底下的东西,已经完全换了一套。 告别 JSON,拥抱 SQLite 在早期的版本里,为了图省事,我用 JSON 文件来存储索引数据。对于几百个采样来说,这没问题。但当我的采样库膨胀到几万个文件时,JSON 的读写速度简直让人绝望,每次启动和搜索都能感觉到明显的卡顿。 于是,在这次 v0.0.3 更新中,我做了一个违背“偷懒祖训”的决定:全线切换到 SQLite。 现在的 LMA 不再是一个简单的文本阅读器,而是内置了一个微型关系数据库。配合上 PyQt6 的多线程(QThread)扫描,现在的体验是:几万个文件的索引瞬间入库,搜索响应是毫秒级的,而且在扫描文件的同时,界面再也不会假死卡住。这才是现代软件该有的样子。 同时,顺手把 PyQt5 升级到了 PyQt6,并且移除了 PyGame 依赖,改用 PyQt 原生的 QtMultimedia 调用系统音频引擎。这意味着软件体积更小,兼容性更好,再也不用担心 PyGame 在某些系统上发神经了。 我终于向苹果交了“保护费” 还记得我在上一篇杂谈里吐槽 MacOS 的 Gatekeeper 吗?那个“文件已损坏,请移至垃圾桶”的提示,简直是独立开发者的噩梦。 为了解决这个问题,也为了让大家安装时不再需要去终端里敲 xattr -cr,我最终还是妥协了——我加入了 Apple Developer Program。 是的,我交了那 99 美元的“保护费”。现在的 LMA v0.0.3 拥有了正经的 Developer ID 签名。打包流程也从简单的 zip 变成了正规的 DMG 封装。现在,你可以像安装任何正版软件一样,把 LMA 优雅地拖进 Applications 文件夹,Gatekeeper 再也不会把你拒之门外。虽然钱包痛了一下,但这顺滑的安装体验,值了。

2025年10月21日
#软件开发 #Python

星际拓荒 —— 致所有的探索者

第一次知道星际拓荒这个游戏是在bangumi的排行榜里,而此前我对这个游戏一点印象都没有。看到它惊人的9.2分,我不禁想亲自去看看这游戏到底有什么能耐。当十六个小时的探索后当故事到了尾声,星际拓荒也成为了让我给出十分的游戏。我终于明白了星际拓荒让如此多人不约而同给出极高评价的原因。它深知驱动着每一个人前行的是什么,而它用独一无二的方式唤醒了了所有向往星空的探索者们内心最深处的那份热情。 接下来的内容涉及到游戏所有内容的剧透。如前文所说,游戏驱动你玩下去的是来自你内心的求知欲和探索欲。若当下对星际拓荒的世界知悉甚少的,请务必用自己的双手去探索这个精致而美丽的太阳系。我将以我自己的视角去拼凑出游戏的故事后,讲述我自己的所思所想。如果你已知悉我的建议,那请继续往下看吧。 在黑暗中,飞向无垠的深空。 游戏给我的第一印象实在不尽人意。抱着探索星空的愿景却在一个村子一样的地方醒来,对话的人没有语音,奇怪的操作手感和完全不明所以的模型飞船操控,加上几乎为零的引导让我很快产生了想退出的念头。更糟糕的是游戏在PS5上连60帧都稳不住。早就被第一方游戏养刁了的我顿时有些无法习惯,看什么都觉得卡。在零重力洞窟修卫星修的晕头转向后不信邪踩了幽灵物质时,游戏居然直接结束了。于是我草草退出了游戏,赌气般的想着“9.2分也不过如此”。我开始搜索星际拓荒相关的评测,而我所看到的视频不约而同的强调了一件事:“不要看剧透,因为这也许是你此生只会拥有一次的游戏体验。”于是我回到了游戏中,再次开启了新的冒险。而这一次当我关闭游戏时天已经亮了。即便我的身体告诉我“该休息了”,我满脑子却依旧回味着游戏中发生的一切。 第一次去往深巨星时,穿越云层我看到了由水包裹着的星球与溢满天际的飓风。那一刻比起很多人所回忆的“恐惧”,我所感受到的更多是惊喜。就这样驾驶飞船,不小心被卷入飓风后,我被高高抛向了宇宙。感到惊讶的瞬间,眼前浮现出了灿烂的星河。 第一次到达碎空星时,映入眼帘的是不断坍塌的地壳与其下方巨大的黑洞。黑洞视界边缘的光线,甚至包括游戏本身的UI界面字体,都被扭曲成了一维的线。旧文明的遗迹散发着微弱的光芒,壁画,重力炮以及悬挂着的建筑,不断的崩毁撕裂坠入下方的黑暗,连同着来自空心灯灯,撞向地表的熔岩灯噪声一起,一同成为了我无法忘却的记忆。失足坠入黑洞后,本以为自己会被无尽的引力撕裂。但那一瞬我穿梭到了星系的另一侧。与我一起悬浮着的有遗骸,高塔,还有前方未知的飞行器都召唤着我。但随着远处太阳再次坍塌,蓝色的光芒溢满屏幕。再次点火飞向星空时,比起曾经的迷惘,我早已知晓自己将要前往何方。 星际拓荒有着一个宏伟壮阔,将文明与个人,过去与当下连接到一起的故事。被讲述的故事可以是电影和小说,而作为互动艺术,这个故事将成为与你一同铸造的,正发生着的历史。每一个玩家都会参与其中,亲手揭开每一个线索之间的联系,并最终以自己的意志前往终章。而以下,是我的视角中所发生的故事。 故事回顾 在过去的某个时刻,宇宙中存在着一个高度发达且定居在星际飞船上的文明:挪麦族。其中的一个家族在驾驶星际飞船旅行时收到了一个未知的信号,他们称其发送者为宇宙之眼。根据他们的发现,宇宙之眼早在宇宙诞生前就存在,而这个信号的呼唤让他们在没有告知其它家族将去往的位置时就跃迁到了信号所在的星系。 在抵达时,飞船遭到了星系中一颗名叫黑棘星的行星的拦截。飞船发射了三个逃生舱,但最终只有两个逃出了黑棘星,分别落在了碎空星与余烬双星上。幸存下来的挪麦族随后在这两个行星上定居,并通过不懈努力延续了科技。在生存问题暂时得到安置后,他们决定继续搜寻宇宙之眼。可即便用尽各种手段尝试定位宇宙之眼也无济于事。 一次偶然的发现,挪麦人意识到坠入黑洞后被白洞送出的过程存在时间回溯。他们在余烬双星上建立了高能实验室,最终成功验证且复刻了这一现象。他们发现回溯的时间长度和花费的能量呈指数关系,因此为回溯更长的时间,他们需要更强能量源。这之后,一个为寻找宇宙之眼的计划开始了,也就是“灰烬双星计划”。 灰烬双星计划由三部分组成。第一部分由太阳站引爆恒星,并由坐落于灰烬双星的高塔手机超新星能量,为密封在灰烬双星中的高级跃迁核心提供足以进行22分钟回溯的能量;第二部分是环绕深巨星的轨道炮,于在每次回溯中发射宇宙之眼探测器。第三部分则是用于将轨道炮收集的信息传递给回溯前时空的雕像与面具。雕像与面具会在计划成功或出现意外时启动,如此往复用穷举法搜寻宇宙之眼,并在找到前不断的重置时空。 引爆恒星且回溯失败的可能一旦发生便意味着整个星系的灭绝,挪麦人却依旧执行了这个计划。执行时,太阳站却并未能引爆太阳。随后,一颗系外小行星造访了太阳系,其内的高危物质灭绝了星系的绝大多数生物,也包括整个挪麦文明。灰烬双星计划陷入沉睡,而当时仍处于低阶生命的哈斯人逃过一劫。 二十八万年后,宇宙寿命将尽,太阳也到了其生命晚年。灰烬双星计划由于条件满足而自动重启。碰巧路过在博物馆展示的挪麦人雕像的你(玩家)被选中成为了记忆的继承者。随着太阳塌缩成超新星,时间成功被扭转到了22分钟前。此刻,游戏正式开始。继承了记忆的你,将带着过去以及将到来的无数个22分钟的记忆,解开时间循环背后的真相。 冒险中,你找到了位于黑棘星内跃迁核心失效但系统完好的挪麦星际飞船,也在深巨星的核心中发现了探测器所传回的宇宙之眼精确坐标。此时,你已经知晓了灰烬双星计划的初衷与这个星系挪麦人的结局。仿佛继承了他们遗志的你,取走了灰烬双星中的高级跃迁核心。回到挪麦星际飞船,输入宇宙之眼的坐标并更换跃迁核心后,你成功的抵达了宇宙之眼。而在那里,你与行进至今的朋友们,将一首齐奏献给宇宙的落幕,并共同见证了另一个宇宙的新生。 于上下而求索,致彼时未曾亲历的景色 星际拓荒和其他类似的游戏最大的不同,在我看来是设计出了一个不断利用玩家的好奇心去驱动玩家收获正反馈的无引导开放世界。如游戏开发者自己的描述,每一颗星球都是”hand crafted”,小但精致,能够容得下足够的内容为玩家的探索和叙事去服务。 游戏建立在一个运行逻辑自洽且不断的在22分钟到循环内发生改变并被重置的星系中。当你足够了解其运行规律时,你便可以在任何时间点抵达任何想去的地方。就连现实中你所知道的物理常识,例如加速度,逃逸速度,甚至引力弹弓效应,都能在游戏中帮你更从容和自如的穿梭于星空中。拿我自己举例。在无数次尝试看着量子卫星去找所谓的“北极”却仍扑空后,我突然想起第一座量子之塔里所说的“看量子物体和看其图像是一回事”,于是在对准卫星用探测器拍照后,我成功的降落在了其上。这一刻为我带来的成就感,我至今仍记忆犹新。 又比如前往南部天文台的旅程。那是整个游戏带给我最多惊吓和刺激的一段时光。我想一定有人也和我一样经历过尝试跨越面前幽灵物质无果,在飞起的一瞬间发现原来答案就在上空的惊喜感。这种在无数次失败后长舒一口气,心中溢满喜悦的感觉,便是我对一个游戏难题设计的最高的认可。 在早期探索那些触手可及的地方时,你就被给予了贯穿游戏的终极目的:寻找宇宙之眼,以及回答时空循环的原因。而为你指出模糊的方向后,星际拓荒就将线索和包括结尾在内的叙事权都交予了你,由你自己去书写和讲述。星际拓荒尊重你的时间和好奇,这里没有咋一看有东西,实际上空无一物的环境设计,包括了等待着被发现的文字内容。从小线索到大线索直到你逐渐拼凑起来故事后,你会发现没有一句文字是废话,一切都和“宇宙之眼”息息相关。从已知的线索中,你会获得未知的线索。这整个过程会随着时间一次次循环而不断往复。 在信息足够支撑谜底揭开前,手上线索所指向的可能性会是什么,我想每个玩家多少有过自己的假设与思考。好比我得知挪麦人对太阳站建立其背后伦理道德的争执后,就猜测时空回溯前的爆炸是因为它而有。抱着这样的猜想真正抵达太阳站,发觉事情另有真相后,一个波澜壮阔且充满着浪漫色彩的故事在那一瞬铺开。我就这样在太阳站中直视着那膨胀着的光芒,感受着穿越二十八万年的这份传承与寄托,直到自己被吞噬。再次睁开双眼的一瞬间,我早已感动到失语。 从始至终,游戏没有出现过一句旁白或引导,但飞船中不断更新着的日志正诉说着所发生过的一切。光芒消逝后再一次点火升空,过去所给予我的勇气与信念将与我一同飞向那片无垠的星空。 回荡在我世界中的,来自彼岸的涟漪。 我从小就是个喜欢科幻作品的人。初中时,由科幻世界出版的刘慈欣小说集是我在中考前支撑我继续前行的精神食粮。那时的我经常会幻想各种各样的可能,去思考很多现在的我压根就不在乎的东西。太阳在成为红巨星前,人类有拥有恒星级飞船的能力吗?强互作用力真的存在吗?和绝对零度又有什么区别?量子跃迁后我是否还是我?银河系中央的巨大黑洞每天都有在吞噬星球吗?这些问题,在那之后我压根就没有在思考过。 上了大学后,虽说是处在一个学习知识的环境,但为何而学习知识这一点,我却比任何时候都不愿去面对。逐渐的,比起过程我更在乎结果;比起未知我更想直接拿到答案。功利主义和效率二字无时无刻的渗透着我的思想,但我却依然那么累,莫名其妙的乏力和空虚。醒来后又是一天,一天后又是一天。这四年来,我仿佛也在一个时间循环中,不知道自己在寻找什么,不知道自己在追求什么。对游戏也好,对生活也好,对大学也好,我都在逐渐麻木。不喜悦,不厌倦。只是空洞的活着,漫无目的的期待着自己不知道为何要期待的事物。 这时,我遇见了星际拓荒。 我会任由自己在星空间漂浮,也许会失控坠入太阳,又或者误打误撞跑进黑棘星把自己喂鱼。我只想知道更多。去看更多的风景。那个曾在失重的三维空间里连飞船的起降都无法做到的自己,会因为一次次时间回溯驾轻就熟逐渐能够自由控制方向。亲自踏足灰烬双星计划的造物,见证了沙子的消散所掩埋与揭露的一切。想到他们的创造者早已不在,一种莫大荒凉感和孤独,连同涌上的更多的对求知和探索的渴望一同交织出了中期游玩星际拓荒的心情。我如此渴望去理解一切,正如已不复存在的挪麦人一般。我们都义无反顾的向着所追寻的答案走去,无论那无垠的黑暗中等待着的是什么。即便身处于时间的循环,我却比任何时候都清晰的感知到自己的存在。 宇宙之眼平等地凝视着每一个人,让所有到访者见证所熟知的一切毁灭凋零。但这能说明宇宙是邪恶的吗?自然是邪恶的吗? “只因为狮子把羚羊撕碎,它就是邪恶的吗? ” “不,自然不是邪恶的。” 作为个体也好,作为文明也好,我们终是于最微小可能性中诞生的意外。能够去思考,去好奇,便是我们存在的证明。即便这些思考终究无法在即将死去的宇宙中带领我们走向一条通向未来的道路,即便渺小如我们在终极法则下只能见证一切,但大家还可以一起回到篝火旁,一起分享着彼此的见闻,并奏响一首属于我们的乐章。我们从哪里来,我们是谁,我们要去哪,这些都不再重要。在星空下,跨越着时间与种族的,是我们共同传承着的,作为智慧生命一同的喜悦。 在星际拓荒中,我遇到过许多挥之不去的挫折。有时,我会产生想要搜索攻略的冲动。但离开了游戏,现实中我依然能得到答案吗?于是,每一次我都告诉自己“再试试也许就做到了”。现在想来,这莫过于我做的最正确的决定。我开始在乎过程,开始享受过程。这十六个小时,便是我和星际拓荒一同开始也一同结束的冒险,是我会记忆一生的美好回忆。有些问题永远不会有答案,但有一件事我已确信无疑。也许世界依然在循环,生活从来也都是灰色。但专注于当下并不意味着要对头顶的星空视而不见。我依然可以渴望,我依然可以热忱。 当夕阳西下,思绪回归平静之时,我是否会记得昨天发生了什么?当朝阳升起,我也随之醒来的那一刻,我是否会知道今天想做什么?即便游戏走到了终点,我也不会忘记被耀眼的光芒包裹后醒来,又坚定的无数次的点火升空的我。那重新在我心中燃起的对探索与求知的热情,以及对星空的无限遐想,定将从时空的彼岸抵达当下,久久地回响在我的世界中。 评价与总结 个人主观评分:10/10 优点: 完全由玩家好奇心驱动的游戏,其设计标新立异,所获取的知识和信息不仅是拼凑起整个故事真相的碎片,也是指向新线索,去往未去过地方的路标。 极高自由度。对游戏的享受程度取决于你有多沉浸在这个完全由你主导行动,由你解读的世界中。一旦能沉浸其中,那一定会收获无与伦比的满足感。 虽然为开放世界游戏,但每一个星球和地点都充满了设计感,拥有着丰富的细节且运行逻辑自洽合理。 风格化美术很棒,各个种族的物品和建筑拥有统一的设计语言,各个星球也有自己的特征且富有创意。 拥有一个精彩且震撼人心的故事,且交给玩家去寻找和拼凑这其中的细节。 缺点: PS5上存在明显卡顿与掉帧问题,甚至不到60;大概是因为游戏是基于物理引擎且同一时刻有非常多的事情发生在星系各个角落,所以同时需要CPU和GPU的处理性能。 用手柄摇杆操控飞船会有些许不适感。 对晕3D的玩家不友好。 因为是纯靠玩家自我意愿驱动探索的游戏,且进程的推进纯靠玩家所收集到的文字线索和对游戏世界的了解,故而不会满足所有人。 前期可能会比较劝退。

2025年10月15日
#玩后感

数据可视化 —— 设计,标准,实现技术

本文收录了数据可视化的基础理论,设计原则与实现方式。目前正在完善中。

2025年10月12日
#统计学

网页上一些功能的实现

1. 居中内容 首先去 …/layout/shortcodes 文件夹,新建一个叫"center.html"的文件。如果layout里没有,就自己创建一个。注意:不要去PaperMod的theme里找layout。 然后把这些代码插入进去并保存: <div style="margin: 0 auto; width: fit-content; min-width: 10%; overflow-x: auto;"> {{ .Inner }} </div> 在未来调用时,按照下方的例子调用就可以。渲染前的效果如下: {{% center %}} | Top | Bottom | Left | Right | | :---: | :---: | :---: | :---: | | 54.79% | 53.76% | 53.91% | 52.43% | {{% /center %}} {{% center %}} **Table 1.** Variance Explained by 5 Principal Components {{% /center %}} 渲染后:

2025年10月12日
#网页开发
« 上一页  下一页  »
© 2026 Alexxon · kircerta@gmail.com