I’m gonna change you like a remix
Then I’ll raise you like a phoenix
—— The Phoenix by Fall Out Boy
I’m gonna change you like a remix
Then I’ll raise you like a phoenix
—— The Phoenix by Fall Out Boy
随着升入高三,我的学习生活发生了非常大的变化。
高三的学习压力相比高二明显大了很多 … 首先就是我以前的「摆烂式学习法」在高三并不适用了,因为一轮复习的目的就是查漏补缺,高一和高二时,在网课时和上课溜号时落下的无数个知识点,现在到了反过来制裁我的时候了。因此为了跟上进度,我就需要相比以前努力很多,否则就会有一种「我怎么什么也不会啊」的感觉。
至于作业,我也必须每天完成了,因为高三的习题课比例很大,如果还不完成作业的话,就真的是空着脑子来,空着脑子去,虚度光阴了 … 高一和高二的习题课都是这么虚度过去的,因为不做作业,我只有在老师讲周考和月考的时候才能学到新题型,因此毫无应试经验。现在开始认真学习,我才意识到作业的重要性。
之前身边的老师和同学们都说我一直在只用 1% 的精力学习,但凡我用上 10% 的精力学习,都会变得可怕很多。而用我自己的话说,之前我是「摆烂了 11 年,一点都不会努力学习了」。现在,在接下来的 170 天里,我要变得可怕起来了,至少是在用 2% 的精力学习了!(笑)
在之后的 2024 年里我将迎战高考,所以我将尽我所能,不让这几年的人生出现遗憾。
就是这样一、二、三地起舞吧
不论今天明天还是昨天都忘掉吧
既然这样就一、二、三地动起来吧
那一定就是 答 答 答 答 答案了
—— 動く、動く by 水瀬いのり & 久保ユリカ
由于明年我将进入大学生活,因此在这至关重要的前一年里,相对缺乏自理能力的我就需要掌握一些社会生活的常识。
在这一年里,我爸学会了网购,也带着我从带货主播和网购平台买东西,虽然我在辽宁,大部分商品都是从广东发货的,需要四五天才能送到,但是我还是感受到了科技和社会发展带来的实惠。
除此之外,我还开通了乘车码和「电子公交卡」等,感觉假期日常的出行也方便了很多。
当然今年我的社会生活,还是免不了有一些小遗憾。在今年,由于身边的朋友大多都已满 16 岁或者成年,他们都开通了自己的银行卡,因此在我常聊天的各个群里,看到了很多「开卡」的话题和照片,而由于我爸的计划是到明年再给我「开卡」,所以这块缺失的部分还是等到接下来的 2024 年再补上吧!
我保证这绝对不会是什么坏结局
无论你身处何地 我也会对你说
你都是这世界独一无二的原创
请昂首挺胸地活下去
—— セブンティーン by YOASOBI
还记得去年的时候,我对 JavaScript 恨之入骨,并且讨厌一切现代计算机技术。
今年的关键词是「改变」,也是因为我开始学习 JavaScript,并且用学到的知识把博客从头到脚翻新了一遍。我还尝试了 Golang,Rust,都有很大收获。
并且我也决定好了,如果高考成绩达标的话,我就会在大学里学习软件工程专业,成为真正的程序员。
17岁般的幸福 但偶尔还是会变得不安起来
对于未来,可是一无所知 啊10年之后的我什么的
17岁纤细敏感 哪怕只打了个小小的喷嚏
就好像终结了个世界一样
你说这Seventina,她是得有多脆弱啊
—— Seventina by はるまきごはん
2023 年,我依然在成长,每一天都会觉得自己比前一天更加成熟,每一天都会觉得前一天自己做出的事是多么幼稚。
但是「悟已往之不谏,知来者之可追」,对我来说,每一天比前一天做得更好,应该就够了吧 …
另外,关于「爱」,我也比去年的这个时候的自己,理解得更加深刻了呢 …
真的是,既害怕长大,又希望早点长成大人呢 … w
汹涌迸发的 Ecstasy 让我做个好梦吧 Myslee
用指尖去细细感触 电子之海中畅游的 Internet Boy
悲伤忧郁四散飞舞 黑暗之中的 Internet Game
在你身边微笑展露 要一直记住我哦 Internet Girl 一定会……
—— INTERNET YAMERO by NEEDY GIRL OVERDOSE
2023 年里,我社交的主要场所仍然是网络上。
最近刚好网易云音乐在推出 2023 年度歌单,我就用一个歌单来简单总结一下我 2023 年在网络社交上遇到的,有纪念意义的那些事吧。
Jan - 一月
祝乾亮 - 跟太阳系说再见 🔗
在一月,我观看了《三体》电视剧,也因此认识了这个优秀的科幻作品系列,看到了人类内心的深邃,在 2023 年的开端给了我极大的震撼。
「我们都是阴沟里的虫子,但总还是得有人仰望星空。」
Feb - 二月
NEEDY GIRL OVERDOSE - INTERNET YAMERO 🔗
在二月,我接触到了《主播女孩重度依赖》,糖糖这个形象给我留下了深刻的印象。虽然她给我带来了一段时间的忧郁,但也让我获得了成长。
「在你身边微笑展露 要一直记住我哦 Internet Girl 一定会……」
Mar - 三月
はるまきごはん - 再会 🔗
在三月的一个周末,我独自坐火车去找身在盘锦的 FunnyStudio 玩。他是我在网上认识得最久的朋友,我非常喜欢他。这次出行使我获得了很多的成长经验。
在和他拼机 maimai 的时候,我发现了这首《再会》,也因此认识了春卷饭这个优秀的艺术家。
Apr - 四月
May - 五月
《塞尔达传说 王国之泪》- 急冻盖拉之战 🔗
在五月,《塞尔达传说 王国之泪》发售。《王国之泪》游戏的优秀程度自然无需多言,是我 2023 年玩过的最令我心潮澎湃、热血沸腾、沉浸其中的游戏。
其中的「急冻盖拉」Boss 战配乐极其优秀,因此这里选了这首。
Jun - 六月
Jul - 七月
Aug - 八月
Yooh - Good bye, Merry-Go-Round. 🔗
在八月,为了在 maimai 中解锁《Good bye, Merry-Go-Round.》,我和 FunnyStudio 一起前往沈阳玩。
又是一次令人印象深刻的旅行,曲子也很好听。
Sep - 九月
Oct - 十月
MyGo!!!!! - 春日影 🔗
在十月,我参加了 Hackergame 2023。时隔一年,我再次参加 CTF 比赛,学到了很多东西,再次打开了新世界的大门。
「为什么?为什么要 flag{演奏春日影}
?」
Nov - 十一月
森永真由美 - 月に叢雲華に風 🔗
在十一月,我赛博转生,改名为斬風·千雪,以新的面貌继续和网上的大家一起生活。
可惜的是之前的频道和群都被封掉了 … 就当作重新开始吧。
「冲破云霄,撕裂劲风,把我引向那动荡的永恒吧。」
Dec - 十二月
在最后的最后,就用这首「无语咯」结束 2023 年,用这首「光」开启 2024 年吧。
跟随风 放飞脑 海中的梦想
回应地以坚定的步伐
拥抱海 拍打在 身上的浪花
让心再次重燃出发
待到再迷茫时回头望 所有脚印会发出光芒
能为你照亮 黑夜中 属于你的前行方向
⚠️ P.S. 在编写此文时我并不懂日语,此文仅仅基于翻译软件编写,并且某些胡言乱语实在是无法解密。仅供参考。
来到「卡依市」,就会看到一个「助威的」在一边喊着「加油」,一边卖着一些名字奇怪,不知所云的药物。
其中出现的槽点翻译如下:
「助威的」:原文为「わし がんばりや!がんばって いろいろ うリますよ!(我将尽我所能! 尽你所能,你会取得很多成就!)」,然后到了盗版这边就开始胡言乱语了 …
❓ 赞美语(攻击增强剂,タウリン / Taurine / 牛磺酸),我并不清楚这个奇葩翻译是怎么来的,大概是发音很像 telling?
❓ 落海夫(防御增强剂,ブロムヘキシン / Bromhexine / 溴己新),大概是从原文中取出了 ro 和 he 音。
✅ 因得西(速度增强剂,インドメタシン / Indomethacin / 消炎痛),取了开头的 in、do 和结尾的 shin 音。
✅ 极道山果(特防增强剂,キトサン / 壳聚糖),kitosan 之后加了个「果」。
❓ 立麦森(特攻增强剂,リゾチウム / Rhizotium / 根瘤菌),取了开头的 ri,后面我就不知道是怎么来的了,可能是 medicine?
另:「因得西」在 GBA 的红版和黄版的盗版翻译中被翻译为了「印度神油」,更加让人啼笑皆非了。
还是卡依市,进入这城市的友好商店(friendly shop 同样是被音译成了「非林特商店」…),你会发现这商店在卖剧情物品「哈伯邮件」,其实就是港口(harbor)。
再来看这游戏中的三种 PP 回复道具,PP 艾依(单项小回复,エイド / Ether),PP 依达(多项小回复,エイダー / Elixir)和 PP 力卡(单项大回复,リカバー)均为直接音译。在天元森林第一次捡到 PP 回复道具时,这个中二的叫法让第一次玩的我感觉不明所以,不过在见多了这种奇葩翻译之后就习惯了。
特殊道具的翻译也是音译的重灾区。
风马自行车(音速自行车,マッハじてんしゃ)把原文中「马赫」的「马」字照搬了下来,沙道自行车(越野自行车,ダートじてんしゃ)把原文中的「ダート / dirt」理解成了沙地。
高高库鲁(护目镜,ゴーゴーグル / Go-Goggles)直接整段音译,天力思奇(德文观测镜,デボンスコープ / Devon Scope)取了 scope 中的 suko 音,至于怪兽盒子(ポロック)… 译者虽然看出了这是 pokémon 和 block 的合成词,但是直接把 block 误解成盒子了 …
高高库鲁,沙漠的沙暴吹起的出色物品,这个盗版翻译反而比原版更有神秘色彩,让我联想到了会放原始力量的古洞兽(天秤偶)和古生兽(念力土偶)这两只宝可梦。
总结:看来译者得了一种看到片假名就会死的病。
在蓝宝石的「天元森林」或红宝石的「烟突山」,你会看到一个「已经很老了」的「花蚪花团」的小卒在惹事。
图一的原文为「まちぶせ していたのに いつまでも トウカのもりで うろうろと」,可能是译者眼瞎,把「伏」(bu)看成了「古」(fu)导致的。
至于「花蚪花团」这个叫法,是校对问题,水(アクア)这三个字在盗版汉化的字库里对应的就是「花蚪花」。
在给代后送完信之后,天力公司的社长就会送给我们一台「怪兽领航员」,但只有在此处对话中正确翻译,别的地方都翻译为「主菜单」。
「主菜单」这个叫法,可能让第一次玩的新手玩家误以为这就是游戏的主菜单,但其实这个词只是来源于领航员 UI 中的「主菜单,メインメニュー / main menu」。
看来盗版商为了校对这个词,还真的用了心,费了一番功夫。
GBA《宝可梦 火红 / 叶绿》日版的汉化同样为这家盗版商完成,可他们在翻译游戏的时候似乎并不清楚自己在翻译哪款游戏,经常有串台的现象。
宝石版中的奥德博士(オダマキ博士)、道吉镇(コトキタウン)这两个译名是直接音译过来的,但是火红叶绿版中直接沿用了 …
对这游戏的奇葩翻译我仍有些地方未搞懂:「聚气」招式的使用提示「xxx 在切断!」、「抓」被错译为「混乱」等 … 这些大概得等我真的学了日语才能解释清楚了。
]]>去年从群友那里得知了 Hackergame 2022,然而当时的我连 JavaScript 都一窍不通,只做出来了签到题,然后用 VB 手写大数字计算解出来了 Xcaptcha,之后在比赛结束之后我看了题解,就打开了新世界的大门。
一年之后,Hackergame 2023 如期举行。现在的我已经掌握了一些 JavaScript,就想着去混一混,把简单的 web 题的分都拿到手再说,然后做着做着就顺手拿下了几道 general 题,随着搜索,又学到了很多东西。我并没有学过计算机网络、算法和二进制逆向方面的知识,放弃了绝大部分 math 和 binary 题目,然而最终还是拿到了 216 / 2386 的排名,属实是意料之外。
由于本文并不属于严格意义上的题解,也并不会提交到题解仓库
去丢人,因此我只写我在解题过程中遇到的问题和部分「碰了壁」的思路。并且因为我一开始没有打算写这篇文章,因此解开很多题的代码都没有留下来,而是放在 tmpfs 中随着关机一起消失了。显然如果作为「题解」,官方的还是更具参考和学习价值。
Hackergame,启动!
和去年一样,签到题的套路依旧是改 url 参数,不过这次的签到题确实略显抽象了,直接致敬二字游戏可还行。
这次居然不是叫猫咪问答)
第四问我直接搜索了 Python type hints dead loop
(由于并不知道 halting
一词 ww),于是搜索到了/这篇文章,我能在文章信息处发现的缩写只有 DROPS、LIPIcs 和 ECOOP。依次尝试,最后发现 ECOOP 是正确答案。
在解这道题的过程中,我也是第一次拜访了学术网站 arXiv,之前在很多 AI 的仓库中见到过 arXiv 的链接,这次也是头一回一睹真容。不过我感觉它的站内搜索并不是很好用,第二问的信息最终还是通过谷歌搜到的。
由于页面是随着滚动往下无限生成的,所以即使用 Ctrl+F 搜索 flag{
也不可能翻到底,网页会直接继续生成下去。解法就是不滚动,在 F12 的「搜索 HTML」中搜索 flag{
即可。当然也可以高速滚动配合录屏,然后一眼盯帧
在 F12 中能直接看到点击棋子发送请求。我并没有使用官方题解的「吃子法」而是直接在 F12 中发请求落子。于是很简单地就通过了。
不过顺带一提,这道题的官方题解写得是真的详细,很适合用来入门?
官方的解法是直接使用 setInterval()
来定时点击含有 hack[
的消息,而我显然是多虑了,采用了 MutationObserver
来点击。
但由于「方括号内均为小写英文字母」,可能存在含有数字的干扰选项,第一次并没有成功,于是我又加了个正则判断来检测是否全为小写英文字母。事实证明,我还是多虑了,第一次只是因为把浏览器切到了后台,F12 中的 js 暂停执行从而漏掉了几条而已。
1 | (new MutationObserver((mutationList,observer) => { |
这道题和之前池塘铸币厂的群友赛撞了思路,于是我上来想都没想直接打开 QSSTV,轻松拿下。
再次感谢池塘让我知道了 SSTV。
我解出这道题竟然是通过 CSDN 上的文章 … 没想到啊。因为搜索「git 恢复撤销的提交」第一个出来的中文文章就是 CSDN。不过,CSDN 终于难得管用了一回。
看来 git 还有好多我没发现的神奇操作啊。
翻阅 YAML 1.2 官方文档,我先解出了第二问。经过一番搜索后,也搜出了第一问的答案。
难得和官方的解题思路对上一回。
我不喜欢 Docker,然而这道题排在前面,说不定很简单,我就尝试做了一下,没想到真的很简单 … 用了一下之前打包 linuxqq-nt-bwrap 得出的经验,把 /dev/shm
文件夹 mount 到容器内就可以直接访问到了。
官方题解中还提到了 rootless container 之类的现代概念,不过我并不是很想去了解。毕竟我自己的 vps 上,Docker 容器还在用 systemd 管理呢,哪管他什么 rootful 不 rootless 的。
因为 less
的输出中包含很多的 ANSI 控制字符,于是我写了个脚本把每个带 ANSI 控制字符的行都打上了注释,然后去除掉出现了很多很多遍的带 ESC 的行,之后手动去除剩下的行。
这个过程真的很繁琐,并且因为高频率星人输出太快,带 ESC 的行还有没来得及加上回车的,还得手动排查。搞了 2 个小时终于得出了结果。
不过 huige 佬直接使用了现成的库,很好地照应了「现代编程的本质就是调库」这句话,唉,现代技术 …
这道题的分类是 math,考过数学班级倒第一的我本想放弃,但是群友和我说「其实没有多复杂的」,于是我就试了一试。虽然没写出「反惜字如金」的算法,但我通过手动输入每一个 cod_dict
条目的「creat 原则」可能解(五条,每条大概五六种吧),然后用脚本生成「referer 原则」的可能解,最后拼合成最终的 cod_dict
,还是碰出了最终的 flag。
另外,我不是很喜欢惜字如金原则,因此我写代码的时候还是会尽可能使用 create 和 referrer 等正确拼写的英文单词。
这道题要求从一张被裁剪过的截图中获取 flag。做这道题一共花了我四天。
第一天:我以为题目会很简单地在 PNG 的文件尾部用明文写 flag,于是用十六进制编辑器拉到底,发现明晃晃的四个大字 IEND,只好暂时放弃。
第二天:截图的大小是约 400 KB,大得有些不正常,于是我怀疑是图片的尺寸信息被经过了修改。
在查阅相关资料(怎么又是 CSDN …)得知,PNG 的每个数据块都有 CRC32 校验。我把尺寸改回去之后,死活算不出正确的 CRC32。在 CTF Wiki 上我发现 Windows 图片和传真查看器并不会进行 CRC32 校验,而我当时还在学校用破烂红米解题,只好暂时休整等待使用电脑的机会。
第三天:第三天晚上拿到了电脑,于是我修改了尺寸,然后使用图片和传真查看器打开,结果发现下面是一片白。
按照昨天看的 CTF Wiki 条目,我安装了 pngcheck
,pngcheck
提示 additional data after IEND chunk
。唔 … IEND 块后面明明没有东西啊 … 不死心的我用十六进制编辑器再看了一遍,发现有两个 IEND 数据块,第一个 IEND 块后面还有一个残缺的 PNG 文件。
之后我尝试了各种不同的 PNG 头部数据块,都没有成功打开这张残缺的 PNG。
第四天:这天晚上我按照题目里的提示(谷歌『亲儿子』的老手机),把电脑挂着下载 Android Studio 和 Android SDK 准备去 AVD 里一探究竟,然后开始刷起了视频。突然,我刷到了这条视频 …
原来这竟然是一个谷歌 Pixel 截图软件的漏洞。重看了一遍题目,我豁然开朗。在我印象里,谷歌这种国际大厂是不可能犯出这张低级错误的啊?
使用漏洞发现者的恢复工具,我顺利地从图片里拿到了 flag。如果不是 B 站给我推这条视频,我怕不是跳不出「谷歌这种大厂不可能犯低级错误」的思维定式,从而彻底做不出这道题了。
在做这道题时,我查阅了 Mozilla 的文档,然后按照文档里的状态码挨个尝试(我甚至尝试了发送 BREW 请求来让 nginx 煮咖啡),最终还得到了一个比较意外的解。我在此写几个令我印象深刻的状态码。
431 Request Header Fields Too Large(❌) & 413 Content Too Large
我本以为要触发这个状态码真的要塞很大很大的请求头 / 请求体,于是真的复制粘贴了很长很长的请求头和请求体,卡得我的破烂红米都开始发烫,直到 400 为止都没有触发这两个代码。
结果,只需要写一个很大的 Content-Length
请求头,就可以触发 413 了。
304 Not Modified(❌)
我尝试过使用 If-Modified-Since
请求头(就像官方题解那样),然而并没有成功触发 304。本以为这个代码只有在请求者是浏览器的时候才能触发,结果后来发现,只是我的日期写得太新了。
101 Switching Protocol(❌)& 无状态码
本来我想尝试通过发送一个 WebSocket 请求来触发 101(我并不懂 WebSocket 起始请求该怎么发送,于是瞎写了如下的内容):
1 | GET /\r\n |
但是,由于第一行未写明 HTTP 版本号,而被 nginx 识别出 HTTP 0.9,结果意外地触发了无状态码的响应。
415 Unsupported Media Type(❌)& 501 Not Implemented
我本来是想触发 415,结果又是阴差阳错地输入了 Transfer-Encoding: deflate
这个请求头,而它并未被 nginx 所支持,所以就意外地触发了 501。本来是需要看源码才能解出的状态码,直接被我撞上了。
我并不懂 numpy / OpenCV 代码的写法,因此这是这次比赛我唯一一道用 VB 解出的题,就是读取 video.bin
文件然后按顺序画到屏幕上。
视频宽度是慢慢试的,视频往左歪斜就调低一像素,往右歪斜就调高一像素。
不过 VB 标准库的绘图性能极其低下,画出 1 帧大概要 1 秒的样子。懒得用 gdi / directx 导致的
在此可获得源码。
在之前折腾破烂红米的时候,我加入了该开发者的群,群里有一个佬的昵称就叫做「为什么要演奏春日影」。因此看到「为什么要」和 flag 中的 haruhikage 的时候,我即使不是邦邦人,也释怀地笑了。
打开图片可以看到,图片只是三个大色块,于是我想到了使用 svg 解决。
1 | <svg width="1024" height="1024" xmlns="http://www.w3.org/2000/svg"> |
这个 svg 有 266 字节大小,于是成功通过第一问。
使用在线工具对 svg 进行极致压缩后,得到如下 svg:
1 | <svg><path fill="#DB4E46" d="M0 0h385v1024H0z"/><path fill="#8DD79D" d="M385 0h335v1024H385z"/><path fill="#86F4E8" d="M720 0h304v1024H720z"/></svg> |
然而这个 svg 还是很大,即使经过 gzip 压缩,大小仍然有 118 字节,远大于题目要求的 50 字节,看来基于 XML 的语言是没戏了。
在查看官方题解后,我才知道 JPEG XL 竟然也可以用来绘制简单的矢量图形 … 我那 1.44MB 的脑子一下就被现代技术创个半死不活。
今年 3 月的时候,热衷于 Web 新技术的小 MBR 就和我提到过 JPEG XL,不过当时我以为这只是 JPEG 的一个超集,所以就并没往这方面想。没想到它竟然在 Hackergame 出现了,强行让我接受了这个现代技术。
这道题我算是发现了一个非预期解。
Stage 1 的 lib.c
中对 fopen
、freopen
、open
、creat
(真是惜字如金啊) 等打开文件的函数都做了手脚,而唯独 open64
函数被落下了,因此 …
1 |
|
于是 flag 1 偷鸡成功。
从这个视频可知,GPT-4 模型在经过了一些神奇的脑回路之后,会循环输出同一条信息或类似的信息。合理推测题目中的 TinyStories-33M 模型也具有类似的特性,因此可以轻易解出第一问。
查看官方题解得知,第二问和第三问涉及到 LLM 的工作原理,我就放弃了。
由于这次的照片没有了 EXIF 信息,我一上来直接碰壁。
不过通过阅读题解,才知道了有 Google Lens 这个好东西。不禁感叹,AI 真的是造福人类啊 …
看到题目中三个 TCP 的 iptables 规则,我的第一反应是使用基于 UDP 的 HTTP/3,然而 …
1 | curl3 --http3-only -X POST -d "114514:asdfgh==" http://202.38.93.111:18080 |
不愧是新技术啊,真安全。
在查看官方题解后,我才发现 HTTP 请求居然可以拆到不同的 TCP 包里去发送 … 奇怪的姿势又增加了。至于第二问和第三问的解法,就等到以后再系统性学习吧。
这是唯一一道我没有做出来的 web 题。在这道题中难倒我的是曾经我初学 JavaScript 时令我深恶痛绝的 CORS。使用 iframe
和 window.open
直接打开新窗口,然后使用 contentDocument
都会直接提示无权限而被浏览器拒绝。
而我想当然地以为评论处特殊字符的检测是在前端进行的(由于弹了个 alert),当天放学回家后就兴冲冲打开浏览器测试,结果 alert 的脚本是服务器端检测到特殊字符之后写到 html 里的。
而我并没有顺着这个思路走下去发现 updateElement
的引号逃逸漏洞,所以并没有在比赛结束之前解出这道题。
排在后面的题目难度真的不是盖的。
我对 web3 的了解仅限于骗过 tg 哈希博彩广告号的体验金然后充了一个月的 tg 大会员,并没有深入去了解 web3(原因是感觉 web3「做什么都提钱」,太没有人情味,因为这个我也没有使用 xlog 之类的 web3 博客平台),因此看到真正的 web3 题,直接放弃了。(笑)
1 | sudo su |
1 | sync; reboot -f |
1 | ssh root@your.ip.address # 密码为 vps2arch |
接下来自行配置即可。
]]>初始线索为 libredpack.so
,一个安卓 aarch64 的动态链接库文件
打开手机,在 Termux 上使用 objdump -s libredpack.so
可看到其导出了一个 redpack
函数,调用即可
(咱不懂 C 语言所以捣鼓了大半天 QAQ)
以下为官方题解
初始线索:https://t.me/HoshinoRubii_c/101
1、odw.ywaamlmq.hcd/{hcysb}/dkr=lll
凯撒密码后移十二位api.kimmyxyc.top/{token}/pwd=xxx
2、一个 mp3 文件
strings “Never Gonna Give You Up.mp3”
1 | Magic IP Check Website |
mp3 封面右上角拉高对比度可看到隐藏文字
https://t.me/KimmyXYC_Soliloquize/2698
该消息中的 github 链接
https://github.com/KimmyXYC/BiliRoaming/commit/209e5ff8539b9d847c6cdbbe76a2fd3a1a406875
打开可在评论区看到 ₿2bP4pJr4wVin4NozhAiBaL8nEkV62F1KGCPcoYGpVGu
之后 | base58 -d
得到链接 https://t.me/FontsCollection/22
/c/1576311492/6,加上 t.me 后得到如下链接
https://t.me/NachoNekoX_bot?start=zGLamTDcZxqXTY
点击之后 bot 会返回如下链接
https://www.kimmyxyc.top/default/magicpage.html
密码为上文的 zGLamTDcZxqXTY
页面中看到的十六进制 70 77 64 3D 44 54 58 4C 46 6E 54 37 4E 39 63 63 70 58
转换为字节数组pwd=DTXLFnT7N9ccpX
合成链接 api.kimmyxyc.top/zGLamTDcZxqXTY/pwd=DTXLFnT7N9ccpX
加上一个问号改为合法链接 https://api.kimmyxyc.top/zGLamTDcZxqXTY/?pwd=DTXLFnT7N9ccpX
跳转到 https://kimcos.zyglq.cn/img/2023/09/IMG_20230930_095341_706.jpg?password=6b2be993-5c44-4cad-8159-e56800209fc6
拿到一个二维码得到ss://{此处暂时删除}@ap-s.hinetwork.tw:37026#Magic%20Proxy
之后在代理客户端中填入密码 6b2be993-5c44-4cad-8159-e56800209fc6
连接 Magic Proxy,访问 ip api 得到
1 | Check up Magic Record On xxxxxxxxxxxxxx.mahiron.moe |
1 | zglamtdczxqxty.mahiron.moe |
字数一致
dog zglamtdczxqxty.mahiron.moe TXT
得到wNtygt5Ar3wgt3
https://api.kimmyxyc.top/zGLamTDcZxqXTY/?pwd=wNtygt5Ar3wgt3
得到最终答案,吃,都可以吃
初始线索 https://t.me/+sRYB55y7oZNiYmI1 进入第一个频道
进行严金炜行为,在 html 中可以看到一个隐藏链接
打开隐藏链接 https://t.me/+0Cv75RWUieM4NzY9 进入第二个频道
三条线索
1、75207265616C6C7920736D6F7274
看上去是十六进制字节数组,其实并不需要解开
3、提示:具有<strong>中国</strong><em>特色</em>
2、一首歌,导出封面图后拉高对比度可看到隐藏的文字cos.*****.*n/music00001.mp3
https://cos.zyglq.cn/music00001.mp3
这个链接使用了国内外分流
首先关掉代理打开链接,file 命令可看出这是一个 zip 文件,解压后可拿到第二张封面图
使用十六进制编辑器打开之可以发现文件尾的几个 zip 文件头 50 4B
改后缀为 zip 之后解压
得到 pgp 私钥
打开代理打开链接,得到密文aHR0cHM6Ly9wYXN0ZS5nZy9wL2Fub255bW91cy9jYzMxNzNmYWZhZTM0OTQwYWMzZDBkYjFjODNjZjQ1Mw==
base64 解码得到 https://paste.gg/p/anonymous/cc3173fafae34940ac3d0db1c83cf453
从该链接中得到 PGP MESSAGE 密文,使用私钥和前面那一坨 hex(不是解密出来的字符串!)解密
得到信息
1 | 提示:和office三件套有关 |
恺撒密码 16 位home.zeroyuki.cn:8888/NewFile.docx
(虽然不知道跟两个吸血鬼有啥关系,草)
(zyglq:我记得那好像是俩吸血鬼)
拉走挡视线的图片得到最终结果
1、全选 获得莫尔斯电码.... - - .--. ... ---... -..-. -..-. - .-.-.- -... .. .-.. .. -... .. .-.. .. .-.-.- -.-. --- -- -..-. ---.. ....- -.... ---.. ..... ..--- ..... ..... --... ...-- ....- -.... .---- --... --... ----- ..--- .....
解码得
https://t.bilibili.com/846852557346177025
动态图片为 R、C、4 三个字符组成的字符画
2、F12 之后可看到注释:Hidden text: DNS
dog 111.qingmo.moe TXT
得到密钥 1921831322
之后使用 RC4 解密评论区的密文得到最终结果
https://t.me/+E-Lvxk6K9yIxMWNl
初始线索:
1、Robin Schulz,David Guetta,Cheat Codes - Shed a Light.flac
和线索 SSTV
2、dGhlcmUgaXMgbm90aGluZwo=
base64 解码可得 there is nothing
3、my photo.png
flac 信息头中可得到一个 pgp 私钥
strings "my photo.jpg"
可得到一个 pgp 密文
https://pub-b82be80347bd4d9e9bb9ec49c3958e41.r2.dev/20230929_215011.wav
使用 QSSTV 解码这段 wav 得到下一个线索 @f5146c5f
在这个频道中得到一个 gpg 文件,解密之后得到答案
初始线索:https://playground.rikko.moe/start?token=kimmyxyc
过掉 captcha 之后得到三条 AES
1 | U2FsdGVkX1+UbqRnuQdTtrgnnFx4AXb3HHYgie4NTgo= |
直接用 base64 解码可看到前面有 Salted 字样,说明为 https://www.sojson.com/encrypt_aes.html 网页加密
前两条使用 kimmyxyc
密钥解密可得到
1 | s5fq8c6sd |
第三条使用 s5fq8c6sd
密钥解密可得到
1 | d8e6sdc45 |
访问 https://playground.rikko.moe/solve?token=d8e6sdc45 之后又得到两条 Salted AES 密文
1 | U2FsdGVkX1+dv4wEaLF04vW5AwnXzB67AgTDMQb8gUEAJ8yRKkVfSrKplYMSe+Tm |
使用 d8e6sdc45
解密可得到
1 | GO TO alist.rikko.moe |
访问 https://playground.rikko.moe/solve?token=s8d5rew2 之后得到一段不知所云的 base64 文本,base64 解码后看到一个邮箱地址,说明这是私钥,于是导入
然后在 alist.rikko.moe 得到如下文件
1、SOMETING STRANGE
pgp 解密后得到 6ZSf5pak5ou354Or54Or54Or
2、DEHBERFCHTBELGBIDLFNITGITEKNGRL/Unnamed.txt
内容 Unicode 解码之后得到 playground.rikko.moe/finish?token
3、DEHBERFCHTBELGBIDLFNITGITEKNGRL/PLEASE ENJOY THE MUSIC
内容为密文
1 | U2FsdGVkX1+Htk3YITXMIHo0VybnEsKLVN1TT3y0vwxBSWLSyQd9nPCBmY2zIYem |
使用 6ZSf5pak5ou354Or54Or54Or
解密后得到
1 | 网易云音乐是傻逼 |
4、DEHBERFCHTBELGBIDLFNITGITEKNGRL/U2FsdGVkX18DvrU3yUiPTwh1mBrM+djVv7WrKHnKWgw=.flac
在信息头中可得到伪装成网易云用户标识的密文
1 | U2FsdGVkX19eXCMpvGFgVhC/mTsWTcmem0Vrk6eFp28= |
使用文件名当 key 解密之后得到最终密钥 f5sd6fdcsadfxZ
访问 https://playground.rikko.moe/finish?token=f5sd6fdcsadfxZ 得到最终答案是
]]>最近从家里翻出来一台红米手机 1S 移动 4G 版,想着拿出来当备用机,但是它搭载的是基于安卓 4.4 的 MIUI 9,很多现代软件都没法运行,于是我就来想个办法折腾一下这台手机。
红米 1S 这台手机分为三个版本:联通 / 电信 3G 版 (armani)、移动 3G 版 (wt93807 / HM2014011) 和移动 4G 版 (wt96007 / HM2014501),其中 armani 使用的是高通骁龙处理器,所以在 2023 年仍有人为其制作刷机包,在 XDA 上甚至可以找到最新最热安卓 14 的刷机包,而 wt96007 使用的是联发科 MT6852 处理器,并且内核和设备树也没有开源,为其制作第三方系统的方法只能是从别的手机(比如荣耀 3C)上移植。
目前红米 1S 4G 可用的,相对现代的安卓刷机包有三款,均由 Minimal-W (rote66 / wanyikai0791) 制作,感谢这位大佬的辛苦付出。
📥 魔趣 (安卓 5.1): HM1S4G_Mokee5.1_V2_wanyikai0791.zip
📥 Resurrection Remix 5.7.1 (安卓 6.0): HM1S4G_RR5.7.1_Alpha1_wanyikai0791.zip
📥 LineageOS 14.1 (安卓 7.1.2): HM1S4G_Los14.1_beta1_wanyikai0791.zip
😺 TWRP 3.3.1 (GitHub): TWRP3.3.1.0_HM2014501_rote66.img
其中安卓 5.1 魔趣 ROM 是最流畅的,而另外两款在系统 UI 中均有卡顿,所以如果没有特殊要求的话,建议使用安卓 5.1。前两款 ROM 的主要功能并无缺陷,而安卓 7.1.2 ROM 缺失很多功能(比如基带、蓝牙音频、自动亮度、录像、TF 卡融卡等),所以如果没有特殊要求的话尽量不要使用。
另外,我注意到的三款 ROM 的一些细微功能区别如下:
安卓 5.1 的 DHCP 客户端有一些小毛病,连接 WiFi 时可能需要手动输入 ip。
安卓 6.0 以上可以使用 Swift Backup。
安卓 6.0 以上可以使用权限管理。
安卓 6.0 以上可以开启勿扰模式,避免媒体音量出声引起惨剧。
安卓 7.1.2 的系统主界面 (启动器) 可以横屏。
首先刷入 TWRP (fastboot flash recovery TWRP3.3.1.0_HM2014501_rote66.img
),然后在 TWRP 中清除 Cache、Dalvik Cache、Data、System,之后选择「安装」并选择已经拷到 TF 卡上的刷机包即可。
如果没有 TF 卡,可以在「高级」中打开 ADB 侧载,之后在电脑上用 ADB 刷入 (adb sideload HM1S4G_Mokee5.1_V2_wanyikai0791.zip
)。
三款 ROM 均已内置 SuperSU,并且 Magisk / Zygisk / Riru 均不能正常使用,所以装模块大概是别想了。
如果你遇到了如这个视频所示的幽灵关机条,可以尝试三清,或者使用 SP Flash Tool v5.2032.00 以下的版本刷入📥 官方线刷救砖包 解决。
最后,大家一起喊出:天翼 3G 太快啦!!!
两款机器都是 2 寸机身,1.8 寸 TFT 触屏,128*160 屏幕分辨率。
我个人认为在外观和握持手感上,都是炳捷更胜一筹。炳捷圆角更大,屏幕边框大小一致(划重点),厚度也比锐族更薄。炳捷的侧框是铝合金,后盖是塑料,握持手感很不错。唯一的缺点可能就是重量更重。
锐族的前面板和后盖都是亚克力,特别容易打油,并且它的屏幕四边边框大小都不一致,极其的逼死强迫症。因为三颗按键都在右侧,所以右侧边距很小。
既然作为随身听,最重要的肯定是音乐播放功能。
https://www.bilibili.com/video/av24412265在支持的格式方面,因为现在已经是 2023 年了,所以两款随身听都支持流畅播放 FLAC 格式的无损音乐,常见的 MP3 和 WAV 也不在话下。它们甚至还支持几乎被淘汰的 WMA 和 APE 格式,以及 OGG Vorbis 格式。
但缺点也是有的。一是它们对 Hi-Res 高品质音乐的支持都很差。锐族在播放 96kHz 及以上的音乐时会重采样,导致音质严重降低,效果还不如 320k 的 MP3;炳捷在播放 100MB 以上的音乐时,会提示格式错误,直接跳过这一首。二是它们都不支持 OGG Opus 格式。Opus 作为这几年新兴起的音频压缩格式,已经在 YouTube 等平台被广泛运用,使用 OGG Opus 格式存储音乐,可以在音质损失可以忽略不计的同时,极大地降低空间占用。但这两款机器的芯片可能都比较老,所以并不支持。
连接有线耳机听歌时,锐族比炳捷音质好得多,已经达到了堪比电脑的音质;而炳捷会有缺失高频的现象,整体听感很差。由于我并没有高端的 HiFi 或监听耳机,所以锐族的音质已经能满足我了。
用 HiFi 那边的说法来说,锐族的「推力」相比炳捷大得多,音量调最小出来的声音就已经很大了,所以它也能推动一些高阻抗耳机。但用一般耳机时,你可能会觉得声音太大。
连接蓝牙耳机听歌时,两款机器的蓝牙信号强度和音质虽然都不如大多数手机,但也可以达到「听个响」的程度。音质这方面炳捷还是不如锐族,但是锐族在信号差的时候(比如无意间用手遮挡到机器后盖等情况),会发出滋啦啦的电流声,而炳捷在这时候就会让音乐暂停半秒,等待信号跟上。
外放方面,两台机器都使用了类似手机听筒的稀烂外放喇叭,不过炳捷相对好拆一些,机器内部预留的空间也足够更换一个更好的喇叭。锐族可以在音乐播放器的设置中选择禁用外放喇叭,避免不小心碰掉耳机线时外放出声导致惨案。
在播放列表中,锐族可以显示日韩藏蒙等语言的字体,而炳捷只能显示中文和西文,这对于歌单里绝大部分都是日语歌的我极不友好。
锐族的播放列表一页只有四首歌,并且字大,歌名显示不全,也只有当前选中的歌,歌名才会滚动,而炳捷的播放列表一页有五首歌,并且全部歌名都会滚动。
锐族的播放列表支持通过手势操作翻页,下面的翻页按钮也可以长按快翻,炳捷只能一下一下按,一页页的翻。
在播放界面中,锐族可以显示歌曲封面和三句歌词(点击切换显示),而炳捷只能显示一句歌词和进度条。
炳捷的收藏、循环方式等按钮更大更好点,而锐族的堪比微雕,需要用手指尖去按。
关于切歌方式,锐族支持蓝牙耳机的手势按钮切歌,使用有线时就必须开屏,而炳捷采用了一种特立独行的做法:锁屏时仍然保持触摸开启,所以可以通过盲点屏幕的方式来切歌,但也很容易误触。
关于均衡器,锐族支持自定义均衡器,而炳捷只有自带的几种预设。
芯片上,锐族使用了烂大街的炬力 ATJ2127 主控,各方面性能都比较优良,炳捷使用了慧联的某主控,型号并没有写在板子上,各方面性能都不如锐族。
续航上,锐族能连续播放七小时,待机更是能达到十小时以上。炳捷只能播放三小时,并且所谓锁屏只是关闭屏幕,系统界面和歌词还在渲染,触屏也没有关闭,造成了性能和电量的无端浪费,续航就逊色很多。这方面锐族可以说是把炳捷吊起来打。
炳捷更不耐摔,磕碰一点就会导致触屏的排线接头掉落,需要打开后盖重新接上。
锐族的软件稳定性更差,所以需要备一根针,出了问题用针按一下重置孔。
系统界面上只能说见仁见智。锐族的界面第一眼看上去十分美观,有壁纸,每个菜单都有图标,但是实则十分不耐看,比如文字对不齐,图标角落没抠净等。炳捷的界面简洁的多,并且字体也更加舒服。
字体方面,锐族采用仍然烂大街的中易宋体 11px,能很明显地看出衬线字体特有的顿笔,空格只有两三像素宽,并且会把英文的标点也按中文标点渲染,所以显示西文效果惨不忍睹(甚至还会乱码),在菜单里还和图标对不齐。而炳捷使用了更小一号的字体,看起来有一种整齐的感觉,总体上更耐看。
流畅度方面,锐族的系统在很多地方能看到加载的痕迹(比如播放列表和歌曲图片是一行行加载出来的),而炳捷的系统是在后台加载,卡一阵子之后一下子展示出来。这方面只能说见仁见智了。
我个人感觉,总体上还是炳捷更胜一筹。
炳捷支持多种图片格式,并且能自适应比例,锐族只支持 JPG 和 BMP,并且会强制拉伸全屏。
不过在这种稀烂屏幕上看图,感觉也没什么意义。
炳捷支持电子词典,并且每个单词带有录音。
炳捷可以播放 AVI MJPEG 编码的视频,最高支持到 60FPS,画质相对来说会好一些,而锐族只能播放炬力专有格式 AMV 的视频,播放 160*128 点对点分辨率的视频时会因为 JPEG 的逆天压缩导致画质稀烂,出现严重的电子包浆样噪点。
关于画质缺陷,锐族给出的解决方案是——播放 320*240 分辨率的视频,然后机器会自动下采样到 160*128。虽然比例出现了点小问题,也会导致性能和电量浪费,但画质起码是能看了。
sccrun.dll
)1 | Dim Args As New ArgParser |
ArgParse 还支持 MS-DOS 式的参数,使用斜杠当作标记符号,并且大小写不敏感。
1 | Dim Args As New ArgParser |
调用 Args.NextArg
和 Args.ThisArg
可以遍历所有非“选项”和“开关”的参数。
这个函数在 Select Case ...
中很有用,可以用来选择模式。
1 | Dim Args As New ArgParser |
中文字体也被修改,在《旷野之息》的简体中文语言中,统一使用华康黑体,而本作中的中英文字体不统一,导致了观感上的不和谐。
本补丁旨在修复上述问题,使游戏内的译名与《旷野之息》保持一致,同时统一中英文字体,让《旷野之息》的老玩家能够更好地适应本作。
本补丁分标准版和完全版两个版本,完全版还把一些王国之泪日文原文就更改的名称(如幻影盖侬套装 -> 异次元恶灵套装)修改回旧名称。
当前版本: 20230810-1
本补丁理论上适用于所有版本的游戏,已经在 1.0.0 1.1.0 和 1.2.0上测试通过。
1、安装 msys2。
2、获取《塞尔达传说:王国之泪》的 romfs 文件夹。romfs 可以从模拟器或 NS 破解系统中解包。
如果使用 Yuzu 模拟器,则在模拟器的主菜单对《塞尔达传说:王国之泪》点击右键。选择“转储 RomFS”->“转储 RomFS”,点击确定,等待转储完成后,会打开生成的 romfs 文件夹。
如果是 NS 上玩的,可以用 DBI 导出这几个文件:
3、打开 msys2 并执行以下命令。
1 | # 安装所需要的软件包 |
待补丁操作完成后,你可以在 dist 目录中找到“汉化优化补丁”文件夹。
打好的补丁是 LayeredFS 格式。
如果你使用模拟器游玩,就把它放到模拟器的 mod 数据文件夹中,就可以在游戏中看到汉化效果了。
补丁可以在破解的 Switch 上使用。你需要更新到 atmosphere 的最新版本。
这里使用 DBI 来操作。首先,在 hbmenu 启动 DBI ,以 DBI551-en 为例,选择 Browse installed applications
- 塞尔达传说 王国之泪
- Application
- 对着 romfs
文件夹按下+,copy 出来,同上面的使用方法,运行脚本。
接着 将其放入 SD卡/atmosphere/contents/0100F2C0115B6000/romfs
下,启动游戏,enjoy。
1 | ~version: "2.1" |
代理工具没有错误处理机制 (#35),导致更着更着 panic。
由于网页版微信现在已经几乎不向用户开放了,所以默认此方法为寄。
新版微信虽然可以通过 XPosed 模块 WebViewPP 开启 vConsole,但 README 中的那段简短的 js 貌似仍然用的是之前旧版 maimai NET 获取成绩的方法,至少我挂了半个小时未见有效。
仍然是通过那段 js,所以寄。
https://github.com/huajip/dx-prober-updater
是通过在旧版 maimai NET 中注入 js 实现,所以寄。
https://github.com/bakapiano/maimaidx-prober-proxy-update
采用 HTTP 代理截获成绩页面源码以更新,思路很好,可是其服务器在境外。一周之前貌似可以用,但因为网络原因,就当它不可用吧。
现在它是这个样子的:
可能是由于华立更改了验证方式,或是明文 HTTP 代理服务器被 GFW 屏蔽导致。
现在我来介绍一种融合了官方方法 2 和 4 的方法:通过 Chrome DevTools 获取源码,之后提交到查分器网页。
所需材料如下:
首先在微信任意聊天中发送 http://debugxweb.qq.com/?inspector=true,点进该链接。
之后开启手机的 USB 调试 功能并把手机连接到电脑。
在电脑端浏览器中打开 chrome://inspect/,并在手机微信舞萌中二公众号打开「我的记录」页面,即可在 DevTools 中看到。
然后在手机上依次点开「记录」-「乐曲成绩」,选择一个难度,然后拼命往下滑直到滑到底为止。
确认滑到底后,在电脑上点击 inspect 打开调试器,右键选中 <html lang="zh">
标签之后点击「以 HTML 格式修改」,复制其中的全部源码。
前往 查分器官网 点击「导入数据」,粘贴源码即可导入。
如果需要导入多个难度的分数,重复上述操作即可。
[ComVisible(true)]
的类,都可以在 Visual Basic 6 中直接引用。使用这些更现代的类,可以极大地增强 VB6 的功能,比如进行长字符串连接、哈希值计算、UTF-8 编解码等。需要在「启用或关闭 Windows 功能」中打开 .NET Framework 3.5。
可以在项目的引用中添加 mscorlib.dll,之后使用 New
关键字创建对象。
1 | Set UTF8Encoding = New mscorlib.UTF8Encoding |
也可以使用 CreateObject 函数直接创建对象。使用此方法需要知道该类在 .NET Framework 中对应的类名。
1 | Set UTF8Encoding = CreateObject("System.Text.UTF8Encoding") |
两种创建方法没有区别,因为 VB IDE 不支持对 .NET 类的补全。用 CreateObject 来创建反而会使代码更美观一些。
.NET Framework 中的很多对象都设为了 [ComVisible(true)]
,具体可以在 .NET Framework 的源代码中查看。
这里给出几个例子。
使用 System.Text.StringBuilder
可以更快速地连接字符串,比 VB 原生的字符串相加操作运行速度高得多。
1 | Dim SB As Object |
因为 StringBuilder 类的 Append 方法在 .NET Framework 中进行了重载,而我们需要使用第三个 Append 方法(即添加字符串),所以使用 Append_3。
这些方法也可以在源代码中查看。
VB 原生只支持 ANSI 字符编码(在简体中文系统上对应 GBK)文件读取,配合 System.Text.UTF8Encoding
可实现读取 UTF-8 文件。
虽然 ADODB.RecordSet
也可以实现类似的功能,但不如 System.Text.UTF8Encoding
优雅和快速。
1 | Dim UTF8Encoding As Object |
1 | '解码 |
1 | '编码 |
1 | Dim MD5CryptoServiceProvider As Object, MD5Hash() As Byte, MD5HashString As String |
.NET Framework 中的 System.Collections.ArrayList
对象支持排序。
1 | Dim MyArrayList As Object, i |
可以使用更现代的 .NET Framework 版本。
]]>众所周知,GPT 技术引领了一场生成式 AI 的革命。然而,在这场热潮中,很多公司试图在各种产品中使用 ChatGPT,却并非都是为了实际应用。相反,很多公司仅仅是为了炒作、提高知名度[2],甚至不惜将 GPT 模型用到与其产品关联性很小的领域,试图将其作为一种亮点来吸引消费者。这这种现象对于整个行业的长远发展是不利的,因为它可能导致消费者对生成式 AI 的误解和过高期待。相较于追求技术本身的进步,这种表面的炒作为生成式 AI 的发展带来了一定程度的困扰,也让消费者和投资者无从选择。
另一个阻碍生成式 AI 元年到来的因素是 NVIDIA 炒高计算卡售价的行为。由于 GPT 等大语言模型对算力的需求极高,使得拥有 CUDA 专利及大显存的 NVIDIA 计算卡成为了这个领域的关键组件。然而,NVIDIA 公司的产能有限,且恶意炒高产品价格[3],产生了「算力垄断」现象,导致 ChatGPT、Bing Chat 等产品算力跟不上,性能和智力都一降再降,有时候甚至几秒钟才能蹦出来一个字。这种情况下,用户们很难体验到真正的生成式 AI 带来的便利和智能。
微软近期推出了基于 GPT-4 的 Windows Copilot[4],要取代原本的 Cortana。虽然这个产品在某些方面可能具有一定的优势,但在操作系统中内置生成式 AI 似乎过于多余。首先,生成式 AI 的使用场景相对有限,不是所有用户都需要这种功能。其次,生成式 AI 的运行需要大量算力,微软在操作系统中内置的 Windows Copilot 会因为用户过多而算力不够,响应时间缓慢,在需要 AI 提供效率的时候却降低了效率,极其影响用户体验。
虽然目前生成式 AI 的热潮在各个领域都有所体现,但我们需要保持冷静,理性地看待这个热点。在跟进热点的同时,公司和开发者应着重关注真正有价值的应用场景,避免盲目跟风。只有这样,我们才能确保生成式 AI 的长远发展,让真正的元年早日到来。
]]>本文的基底由 GPT-4 撰写,我进行了润色修改。
生成式 AI 的产物不可能是完美的,毕竟叫做「人工」智能啊!
今天兴致冲冲地和两个同学(此处用 B 和 C 指代)去迎接属于国服的「FESTiVAL」,九点十分就在新玛特门口准备堵门出勤了。四隆那边前一天晚上已经更好,并且常勤四隆的人也多,自然是堵满了人,而新玛特这边只有我们仨来了。
九点半,门开了,我们上楼,却发现游戏没有更新,还是 2022。我叫来机修插上 U 盘准备更新,但更新不上去,ERROR 0052 安装媒体连接失败。
尝试了七八次之后,仍然是这个报错。这时,已经一个小时过去了,我们急了,直接前往四隆勤。到四隆之后,那边有六个人在打,算上我们仨是九个。我和 B 两个没有卡的一人买了四个币,C 排队打了一把。C 打完之后,前面仍然有 1 pc 才轮到我和 B,这时,群里传来消息:新玛特那边更上了。我们直接回新玛特打,这八个四隆币就这么浪费掉了。
回到新玛特之后,已经是十一点了,算上我们是六个玩家。我和 B 先是打了一把,因为不适应上机手感,练了三个月的超天酱紫谱交互打得烂至极,只打了 95%。轮到 C 的时候出了问题:报错,您的账号无法登录当前版本的游戏。C 只能借了旁边朋友的账号打。(他还开了把紫潘 🤣)
在比对两个版本的游戏后,我发现了问题:四隆当时的版本是 Ver.CN 1.30-A,而新玛特的版本是 1.30。在群里询问以及联系华立的售后之后,重启机器自动更新解决了问题,C 也是成功登上了账号。
现在已经十二点多了,而我才打上一把。排到我的第二把时,旁边拼机的是一个一万多分的大佬。因为不清楚新版本具体的机制,他开了十段的段位认定模式,而这十段可真是艰险,两首 13+ 两首 14。我只能在旁边一边看着血扣到 0 一边干瞪眼。
打完这把之后又隔了一把,一点多的时候我再次上机,打了三首新歌之后,第四首开了我一直卡在 99% 的 メルティランドナイトメア,结果,被新版滴蜡熊吃了四个 touch,仍旧没过百。
下午两点,我郁闷地回到家,饭都没吃,就当减肥了。
舞萌 DX 2023,U 盘更新更不上,在线更新更不上,公众号炸服,在咬打火机的前瞻直播中也没有说明新版具体的游戏机制。
出勤时间最长的一次,同时也是打的最少的一次,最憋屈的一次。
垃圾游戏,不玩了!
]]>⚠️ 请注意:本文及作者与该公司及该音乐游戏没有任何关系。
下文的路径及代码中用 TheGame 代指这款游戏。
如果您认为此文章侵犯了您的版权,请 联系我 删除。
我的目的是提取所有歌曲和曲绘,并合并成带信息的 flac 文件以收藏。
这款游戏使用 Unity 引擎开发,其中视频和音乐文件都使用了 CriWare 开发的容器格式,并使用密钥加密,图片文件使用了 Unity 的 assets bundle 容器格式。需要使用不同方法提取资源。
如果你拿到的游戏是 vhd 格式,请先使用 guestmount
命令行工具或打了特定补丁的 7-zip 从中提取出资产文件夹(TheGame_Data
)。
根据 此博文 的介绍,可以使用 Il2cppDumper 和 AssetStudio 获取 CriWare 密钥。
这款游戏的目标平台是 Windows,没有使用 il2cpp,所以只需要使用 AssetStudio 就可以获得密钥。
Tips: 由于该游戏资产文件夹过大(40GB+),可以先复制一份不带
StreamingAssets
的资产文件夹,在 AssetStudio 中进行操作。
当 AssetStudio 提示 Select Assembly Folder 时,直接选择 Managed 文件夹即可。
游戏的所有音频资源位于 TheGame_Data/StreamingAssets/A000/SoundData
文件夹下,使用 AFS2 (*.acb / *.awb) 格式进行打包。
Voice
开头的为界面语音,Voice_Partner
开头的为旅行伙伴语音,music
开头的为歌曲文件,剩下的是界面背景音乐。这里我只取歌曲,其它音频资源同理。
使用 CriTools 就可以把这些歌曲文件转换为 wav。
1 | node index.js acb2wavs '/path/to/SoundData' -k THE_GAME_KEY |
转换为 wav 之后,我使用了下面几条命令整理文件,并转换为 flac 格式。
1 | for sound in ./SoundData/*; do mv "./SoundData/${sound}/stream_1.wav" "./sound/${sound}.wav"; done |
我们就得到了以 music00XXXX.flac
为文件名的歌曲文件。可以直接播放,也便于后续操作。
其码率为 1024 Kbit/s,采样率为 44.1 KHz。
游戏的图像资源位于 TheGame_Data/StreamingAssets/A000/AssetBundleImages
文件夹中。
曲绘位于 jacket
文件夹中。这里我只取曲绘,其它图像资源同理。
使用 AssetStudio 可以直接把这些 ab 文件中的 png 图片文件提取出来。
游戏的歌曲信息储存于 music
、musicVersion
、musicGenre
几个文件夹中的 XML 文件中。
我编写了如下的 Python 脚本以给 flac 添加歌曲信息和曲绘。
1 | #!/usr/bin/env python3 |
提取成功!
你可以在一刀斩の小窝的 Telegram 频道中获取这些歌曲。
游戏的 BGA 使用 CriWare 的 USM 格式加密,位于 TheGame_Data/StreamingAssets/A000/MovieData
中。
使用 WannaCRI 工具可以把这些 USM 文件 (后缀名实际上为 dat) 转换为 ivf 格式视频。
1 | python -m wannacri extractusm ./StreamingAssets/A000/MovieData -k THE_GAME_KEY |
之后就可以使用 ffmeg 将其转换为 mp4 了。其分辨率为 1080*650,帧率为 30 FPS,码率为 2 Mbit/s。
转换 BGA 极其吃 CPU,速度也很慢,并且大部分 BGA 都可以在视频网站上找到。这是个吃力不讨好的工作,所以我并没有转换,只是将方法写在这里。感兴趣的可以自己转换试试。
]]>作者:余华
此刻,有一个名叫孙福的人正坐在秋天的中午里,守着一个堆满水果的摊位。明亮的阳光照耀着他,使他年过五十的眼睛眯了起来。他的双手搁在膝盖上,于是身体就垂在手臂上了。他花白的头发在阳光下显得灰蒙蒙,就像前面的道路。这是一条宽阔的道路,从远方伸过来,经过了他的身旁以后,又伸向了远方。他在这里已经坐了三年了,在这个长途汽车经常停靠的地方,以贩卖水果为生。一辆汽车从他身旁驶了过去,卷起的尘土像是来到的黑夜一样笼罩了他,接着他和他的水果又像是黎明似的重新出现了。
他看到一个男孩站在了前面,在那一片尘土过去之后,他看到了这个男孩,黑亮的眼睛正注视着他。他看着对面的男孩,这个穿着很脏衣服的男孩,把一只手放在他的水果上。他去看男孩的手,指甲又黑又长,指甲碰到了一只红彤彤的苹果,他的手就举起来挥了挥,像是驱赶苍蝇一样,他说:
“走开。”
男孩缩回了自己黑乎乎的手,身体摇晃了一下后,走开了。男孩慢慢地向前走去,他的两条手臂闲荡着,他的头颅在瘦小的身体上面显得很大。
这时候有几个人向水果摊走过来,孙福收回了自己的目光,不再去看那个走去的男孩。那几个人走到孙福的对面,隔着水果问他:
“苹果怎么卖……香蕉多少钱一斤……”
孙福站了起来,拿起秤杆,为他们称苹果和香蕉,又从他们手中接过钱。然后他重新坐下来,重新将双手搁在膝盖上,接着他又看到了刚才的男孩。男孩回来了。这一次男孩没有站在孙福的对面,而是站在一旁,他黑亮的眼睛注视着孙福的苹果和香蕉。孙福也看着他,男孩看了一会水果后,抬起头来看孙福了,他对孙福说:
“我饿了。”
孙福看着他没有说话,男孩继续说:
“我饿了。”
孙福听到了清脆的声音,他看着这个很脏的男孩,皱着眉说:
“走开。”
男孩的身体似乎抖动了一下,孙福响亮地又说:
“走开。”
男孩吓了一跳,他的身体迟疑不决地摇晃了几下,然后两条腿挪动了。孙福不再去看他,他的眼睛去注视前面的道路,他听到一辆长途客车停在了道路的另一边,车里的人站了起来。通过车窗玻璃,他看到很多肩膀挤到了一起,向着车门移动,过了一会车上的人从客车的两端流了出来。这时,孙福转过脸来,他看到刚才那个男孩正在飞快地跑去。他看着男孩,心想他为什么跑,他看到了男孩甩动的手,男孩甩动的右手里正抓着什么,正抓着一个很圆的东西,他看清楚了,男孩手里抓着的是一只苹果。于是孙福站了起来,向着男孩跑去的方向追赶。孙福喊叫了起来:
“抓小偷!抓住前面的小偷……”
这时候已经是下午,男孩在尘土飞扬的道路上逃跑,他听到了后面的喊叫,他回头望去,看到追来的孙福。他拼命向前跑,他气喘吁吁,两腿发软,他觉得自己快要跑不动了,他再次回头望去,看到挥舞着手喊叫的孙福,他知道孙福就要追上他了,于是他站住了脚,转过身来仰起脸呼哧呼哧地喘气了。他喘着气看着追来的孙福,当孙福追到他面前时,他将苹果举到了嘴里,使劲地咬了一口。
追上来的孙福挥手打去,打掉了男孩手里的苹果,还打在了男孩的脸上,男孩一个趔趄摔倒在地。倒在地上的男孩双手抱住自己的头,嘴里使劲地咀嚼起来。孙福听到了他咀嚼的声音,就抓住他的衣领把他提了起来。衣领被捏紧后,男孩没法咀嚼了,他瞪圆了眼睛,两腮被嘴里的苹果鼓了出来。孙福一只手抓住他的衣领,另一只手去卡他的脖子。孙福向他喊叫:
“吐出来!吐出来!”
很多人围了上来,孙福对他们说:
“他还想吃下去!他偷了我的苹果,咬了我的苹果,他还想吃下去!”
然后孙福挥手给了男孩一巴掌,向他喊道:
“你给我吐出来!”
男孩紧闭鼓起的嘴,孙福又去卡他的脖子:
“吐出来!”
男孩的嘴张了开来,孙福看到了他嘴里已经咬碎的苹果,就让卡住他脖子的手使了使劲。孙福看到他的眼睛瞪圆了。有一个人对孙福说:
“孙福,你看他的眼珠子都快瞪出来了,你会把他卡死的。”
“活该。”孙福说,“卡死了也活该。”
然后孙福松开卡住男孩的手,指着苍天说道:
“我这辈子最恨的就是小偷……吐出来!”
男孩开始将嘴里的苹果吐出来了,一点一点地吐了出来,就像是挤牙膏似的,男孩将咬碎的苹果吐在了自己胸前的衣服上。男孩的嘴闭上后,孙福又用手将他的嘴掰开,蹲下身体往里面看了看后说:
“还有,还没有吐干净。”
于是男孩继续往外吐,吐出来的全是唾沫,唾沫里夹杂着一些苹果屑。男孩不停地吐着,吐到最后只有干巴巴的声音,连唾沫都没有了。这时候孙福才说:
“别吐啦。”
然后孙福看看四周的人,他看到了很多熟悉的脸,他就对他们说:
“从前我们都是不锁门的,这镇上没有一户人家锁门,是不是?”
他看到有人在点头,他继续说:
“现在锁上门以后,还要再加一道锁,为什么?就是因为这些小偷,我这辈子最恨的就是小偷。”
孙福去看那个男孩,男孩正仰着脸看他,他看到男孩的脸上都是泥土,男孩的眼睛出神地望着他,似乎是被他刚才的话吸引了。男孩的表情让孙福兴奋起来了,他说:
“要是从前的规矩,就该打断他的一只手,哪只手偷的,就打断哪只手……”
孙福低头对男孩叫了起来:“是哪只手?”
男孩浑身一抖,很快地将右手放到了背后。孙福一把抓起男孩的右手,给四周的人看,他对他们说:
“就是这只手,要不他为什么躲得这么快……”
男孩这时候叫道:“不是这只手。”
“那就是这只手。”孙福抓起了男孩的左手。
“不是!”
男孩叫着,想抽回自己的左手,孙福挥手给了他一巴掌,男孩的身体摇晃了几下,孙福又给了他一巴掌,男孩不再动了。孙福揪住他的头发,让他的脸抬起来,冲着他的脸大声喊道:
“是哪只手?”
男孩睁大眼睛看着孙福,看了一会后,他将右手伸了出来。孙福抓住他右手的手腕,另一只手将他的中指捏住,然后对四周的人说:
“要是从前的规矩,就该把他这只手打断,现在不能这样了,现在主要是教育,怎么教育呢?”
孙福看了看男孩说:“就是这样教育。”
接着孙福两只手一使劲,“咔”的一声扭断了男孩右手的中指。男孩发出了尖叫,声音就像是匕首一样锋利。然后男孩看到了自己的右手的中指断了,耷拉到了手背上。男孩一下子就倒在了地上。
孙福对四周的人说:“对小偷就要这样,不打断他一条胳膊,也要扭断他的一根手指。”
说着,孙福伸手把男孩提了起来,他看到男孩因为疼痛而紧闭着眼睛,就向他喊叫:
“睁开来,把眼睛睁开来。”
男孩睁开了眼睛,可是疼痛还在继续,他的嘴就歪了过去。孙福踢了踢他的腿,对他说:
“走!”
孙福捏住男孩的衣领,推着男孩走到了自己的水果摊前。他从纸箱里找出了一根绳子,将男孩绑了起来,绑在他的水果摊前。他看到有几个人跟了过来,就对男孩说:
“你喊叫,你就叫‘我是小偷’。”
男孩看看孙福,没有喊叫。孙福一把抓起了他的左手,捏住他左手的中指,男孩立刻喊叫了:
“我是小偷。”
孙福说:“声音轻啦,响一点。”
男孩看看孙福,然后将头向前伸去,使足了劲喊叫了:
“我是小偷!”
孙福看到男孩的血管在脖子上挺了出来,他点点头说:
“就这样,你就这样喊叫。”
这天下午,秋天的阳光照耀着这个男孩,他的双手被反绑到了身后,绳子从他的脖子上勒过去,使他没法低下头去,他只能仰着头看着前面的路,他的身旁是他渴望中的水果,可是他现在就是低头望一眼都不可能了,因为他的脖子被勒住了。只要有人过来,就是顺路走过,孙福都要他喊叫:
“我是小偷。”
孙福坐在水果摊位的后面,坐在一把有靠背的小椅子里,心满意足地看着这个男孩。他不再为自己失去一只苹果而恼怒了,他开始满意自己了,因为他抓住了这个偷他苹果的男孩,也惩罚了这个男孩,而且惩罚还在进行中。他让他喊叫,只要有人走过来,他就让他高声喊叫,正是有了这个男孩的喊叫,他发现水果摊前变得行人不绝了。
很多人都好奇地看着这个喊叫中的男孩,这个被捆绑起来的男孩在喊叫“我是小偷”时如此卖力,他们感到好奇。于是孙福就告诉他们,一遍又一遍地告诉他们,他偷了他的苹果,他又如何抓住了他,如何惩罚了他,最后孙福对他们说:
“我也是为他好。”
孙福这样解释自己的话:“我这是要让他知道,以后再不能偷东西。”
说到这里,孙福响亮地问男孩:“你以后还偷不偷?”
男孩使劲地摇起了头,由于他的脖子被勒住了,他摇头的幅度很小,速度却很快。
“你们都看到了吧?”孙福得意地对他们说。
这一天的下午,男孩不停地喊叫着,他的嘴唇在阳光里干裂了,他的嗓音也沙哑了。到了黄昏的时候,男孩已经喊叫不出声音了,只有咝咝的摩擦似的声音,可是他仍然在喊叫着:
“我是小偷。”
走过的人已经听不清他在喊些什么了,孙福就告诉他们:
“他是在喊‘我是小偷’。”
然后,孙福给他解开了绳子。这时候天就要黑了,孙福将所有的水果搬上板车,收拾完以后,给他解开了绳子。孙福将绳子收起来放到了板车上时,听到后面“扑通”一声,他转过身去,看到男孩倒在了地上,他就对男孩说:
“我看你以后还敢不敢偷东西?”
说着,孙福骑上了板车,沿着宽阔的道路向前骑去了。男孩躺在地上。他饥渴交加,精疲力竭,当孙福给他解开绳子后,他立刻倒在了地上。孙福走后,男孩继续躺在地上,他的眼睛微微张开着,仿佛在看着前面的道路,又仿佛是什么都没有看。男孩一动不动地躺了一会以后,慢慢地爬了起来,又靠着一棵树站了一会,然后他走上了那条道路,向西而去。
男孩向西而去,他瘦小的身体走在黄昏里,一步一步地微微摇晃着走出了这个小镇。有几个人看到了他的走去,他们知道这个男孩就是在下午被孙福抓住的小偷,但是他们不知道他的名字,也不知道他来自何处,当然更不会知道他会走向何处。他们都注意到了男孩的右手,那中间的手指已经翻了过来,和手背靠在了一起,他们看着他走进了远处的黄昏,然后消失在黄昏里。
这天晚上,孙福像往常一样,去隔壁的小店打了一斤黄酒,又给自己弄了两样小菜,然后在八仙桌前坐下来。这时,黄昏的光芒从窗外照了进来,使屋内似乎暖和起来了。孙福就坐在窗前的黄昏里,慢慢地喝着黄酒。
在很多年以前,在这一间屋子里,曾经有一个漂亮的女人,还有一个五岁的男孩,那时候这间屋子里的声音此起彼伏,他和他的妻子,还有他们的儿子,在这间屋子里没完没了地说着话。他经常坐在屋内的椅子里,看着自己的妻子在门外为煤球炉生火,他们的儿子则是寸步不离地抓着母亲的衣服,在外面细声细气地说着什么。
后来,在一个夏天的中午,几个男孩跑到了这里,喊叫着孙福的名字,告诉他,他的儿子沉入不远处池塘的水中了。他就在那个夏天的中午里狂奔起来,他的妻子在后面凄厉地哭喊着。然后,他们知道自己已经永远失去儿子了。到了晚上,在炎热的黑暗里,他们相对而坐,呜咽着低泣。
再后来,他们开始平静下来,像以往一样生活,于是几年时间很快就过去了。到了这一年的冬天,一个剃头匠挑着铺子来到了他们的门外,他的妻子就走了出去,坐在了剃头匠带来的椅子里,在阳光里闭上了眼睛,让剃头匠为她洗发、剪发,又让剃头匠为她掏去耳屎,还让剃头匠给她按摩了肩膀和手臂。她感到自己的身体从来没有像那天那样舒展,如同正在消失之中。因此她收拾起了自己的衣服,在天黑以后,离开了孙福,追随剃头匠而去了。
就这样,孙福独自一人,过去的生活凝聚成了一张已经泛黄了的黑白照片,贴在墙上,他、妻子、儿子在一起。儿子在中间,戴着一顶比脑袋大了很多的棉帽子。妻子在左边,两条辫子垂在两侧的肩上,她微笑着,似乎心满意足。他在右边,一张年轻的脸,看上去生机勃勃。
]]>但采用一些特殊的搜索技巧,我得以下载到原本的 mp3 音频。
首先,我直接去网上搜索这条音频,看看能不能直接从在线播放页面中抓到音频文件。但是搜素后无果,因为这个文章有太多人读过了,根本找不到想要的那个。
之后我使用十六进制编辑器等软件打开这个 xm 文件,发现它具有一个 ID3 标头。标头内虽然没有专辑图片,但它直接把专辑图片的 URL 写了进去。
根据 ID3 信息在网上搜索这个专辑,并对应好专辑图片,就找到了这条音频。
在专辑中找到对应的音频,使用从这个仓库找到的 API,成功获取到了「高音质」(其实只有 64Kbps!)音频的 mp3 源文件。
文章 / 封面作者: New Bing
我从小就住在这个城市,每天都要经过那个黑色的很长的滑梯。那是为了纪念我们的领袖而建造的,他曾经在那里发表了一篇激动人心的演讲,号召全国人民团结起来,抵抗外敌的侵略。那个滑梯上刻着他的名字和头像,还有他的名言:“为了祖国,为了人民,为了自由,我们必须奋斗到底!”
我从来没有见过有人敢于玩那个滑梯,因为那是禁止的。我们的老师和父母都告诉我们,那是一件神圣的物品,是我们的骄傲和荣耀,是我们的信仰和灵魂,是我们的生命和未来。我们必须对它表示尊敬和敬畏,不能有任何亵渎和玷污。如果有人胆敢触碰它,就会受到严厉的惩罚,甚至会被枪毙。
我一直很听话,也很害怕。我从不敢靠近那个滑梯,甚至不敢多看一眼。我只是每天匆匆地走过去,低着头,心里默默地祈祷:领袖啊,请保佑我吧,请让我平安无事吧,请让我快乐幸福吧。
直到有一天,我遇到了他。
他是一个外地来的孩子,刚刚搬到我们的学校。他长得很高很瘦,头发很乱,眼睛很大很亮。他穿着一件褪色的牛仔衣和一条破洞的牛仔裤,脚上是一双旧旧的运动鞋。他看起来很自由很快乐,也很好奇很顽皮。
他对我说:“嘿,你叫什么名字?”
我吓了一跳,回答说:“我叫小明。”
他笑了笑,说:“我叫小强。你愿意和我做朋友吗?”
我犹豫了一下,说:“好吧。”
他说:“太好了!那么跟我来吧!”
他拉着我的手,就向那个滑梯跑去。
我惊恐地说:“你要去哪里?你不知道那是什么吗?”
他说:“当然知道啊!那是一个滑梯啊!”
我说:“不不不!那可不是普通的滑梯!那可是碰都不能碰的滑梯!”
他说:“为什么不能碰呢?”
我说:“因为那是为了纪念我们的领袖而建造的啊!你不知道吗?”
他说:“知道啊!但是那又怎么样呢?”
我说:“怎么样?你不明白吗?那是一件神圣的物品啊!你要是碰了它,就会就会被抓去坐牢,甚至会被枪毙啊!”
他说:“真的吗?你不觉得那很荒谬吗?”
我说:“荒谬?你怎么能这么说呢?你不尊重我们的领袖吗?”
他说:“尊重?你知道什么叫尊重吗?你知道他是怎么当上领袖的吗?你知道他对我们的人民做了什么吗?”
我说:“我不知道,也不想知道。我只知道他是我们的救星,是我们的英雄,是我们的父亲。我们应该感恩他,崇拜他,服从他。”
他说:“你真是个傻瓜!你被洗脑了!你根本不知道自己在说什么!”
我说:“你才是个傻瓜!你才被洗脑了!你根本不懂得什么叫忠诚和爱国!”
我们争吵了起来,越吵越凶,越凶越烈。我们都没有注意到,我们已经跑到了滑梯的下面。
突然,一声巨响,一阵强光,一股热浪。
我们抬头一看,滑梯上竟然冒出了火焰!
原来,那个滑梯不仅是一个纪念物,还是一个隐藏的导弹发射器。它是为了防止外敌入侵而设置的,只要有人触碰它,就会自动启动,向敌方发射核弹。
我们惊恐万分,想要逃跑,但已经来不及了。
滑梯上的火焰越来越大,越来越猛。它像一条巨龙一样张开了血盆大口,向我们扑来。
我们无处可逃,只能眼睁睁地看着死神降临。
在那一刻,我突然明白了。
那可是碰都不能碰的滑梯啊!
]]>]]>原曲《阳光开朗大男孩》
填词、翻唱:鬼山哥
穿上一件破旧的长衫 径直来到鲁镇酒店
叫来伙计 温两碗酒 一碟茴香豆九文大钱
我说着之乎者也 惹来嘲笑 不知不觉涨红了脸
你怎么这样污我的清白 喝口酒与他们继续争辩
骆驼祥子之所以死 是因为他拉车不够努力
鲁迅的每一篇文章 都碰了不能碰的话题
陈胜吴广的日子不甜 是因为不能脚踏实地
最后食客们目光移向我 问我到底算个什么东西
我看看长衫说我是
阳光开朗孔乙己 阳光开朗孔乙己
他那离谱的文笔 质问我服不服气
阳光开朗孔乙己 阳光开朗孔乙己
劳动力倒进河里 我也不便宜卖你
阳光开朗孔乙己 阳光开朗孔乙己
你开着兰博基尼 却笑我不够努力
阳光开朗孔乙己 阳光开朗孔乙己
这腐朽的旧社会 和我有寄吧关系
虽然我每天都洗脸 但口袋比脸还干净
我只好穿着长衫 替官老爷抄书忙个不停
本以为工作很清闲 不曾想却是玖玖陆
干完后因恶意讨薪 饥饿的我被官兵抓走
这万恶的旧社会 为什么会没有劳动法
我们寻常百姓的尊严 为何会轻易被肉食者践踏
这些离谱的故事与遭遇 现在也没人敢回答
最后食客们目光移向我 问我你为何一点也不怕
我笑着说因为我是
阳光开朗孔乙己 阳光开朗孔乙己
势单力薄的枝丫 早已放弃了挣扎
阳光开朗孔乙己 阳光开朗孔乙己
棱角被岁月冲刷 徒留了几道伤疤
阳光开朗孔乙己 阳光开朗孔乙己
乐观是我的爪牙 面具下眼泛泪花
阳光开朗孔乙己 阳光开朗孔乙己
你问我幸不幸福 我只想说句脏话
听我说完了之后 店内充满快活的空气
那些谩骂质疑反驳嘲笑 与我有何关系
读书是为了中华崛起 而不是去送外卖快递
所有人听完后露出放肆的笑容
除了那个傻逼的
阳光开朗孔乙己 阳光开朗孔乙己
撕开这腐朽的墙 寻一丝正道的光
阳光开朗孔乙己 阳光开朗孔乙己
无论批评和赞扬 都需要有人鼓掌
阳光开朗孔乙己 阳光开朗孔乙己
精选的评论之上 有多少热血难凉
阳光开朗孔乙己 阳光开朗孔乙己
孔明是我的理想 商鞅是我的下场
根据这个 issue 的说法,CI 在执行 git clone 或 git pull 时,文件的修改日期会变为部署时的时间。可以通过自己写 updated
时间来修复,也可以使用一个脚本,读取 git 仓库中的修改日期,来覆盖实际文件的修改日期。
1 |
|
之后根据你的部署方式,将这个脚本加入到工作流文件或其他配置文件中。
注意:Vercel 尚不支持深层克隆,所以只能在 GitHub Actions 中部署。
为方便调用,可以直接将这个脚本直接写到 package.json
中,并且在部署时执行该脚本。
1 | // package.json |
运行好脚本之后,修改日期就不会出错啦~
]]>