<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>LookSky</title><description>GreenRoc的博客</description><link>https://gr114.com/</link><language>zh_CN</language><item><title>我的十年游戏史</title><link>https://gr114.com/posts/ten-years-of-games/</link><guid isPermaLink="true">https://gr114.com/posts/ten-years-of-games/</guid><description>我十年多的游戏史</description><pubDate>Tue, 17 Jun 2025 23:10:10 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;说在前头：我打小就对汽车感兴趣，所以就渐渐的迷上了汽车相关的游戏，下面是我从4岁左右至今的游戏史！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;古代史2014-2016（4岁至6岁）早期越野类与开放世界类启蒙，无游玩，仅看视频&lt;code&gt;设备：iPad Mini 1&lt;/code&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Mud Runner: Spintires&lt;/strong&gt;：当时在优酷上看到的这个游戏，应该是才发售我就看到有人玩了，后续持续关注这个游戏的重要原因其一是我还在优酷上看到Top Gear S17E1里面的掠夺者（车）和一些其他节目里的泥泞越野视频，就对越野产生兴趣，其中跨越泥泞的场景使我印象深刻，直到今天（后面还会有CallBack）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Grand Theft Auto V&lt;/strong&gt;：如此伟大的游戏不必多说，当时就是对于开放世界非常新奇，当时还想着能不能在我的iPad Mini 1上运行/doge/&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;古代史2017-2018（7岁-8岁）沉迷RC车，少量游戏（就算是玩了我也不记得）&lt;code&gt;设备：iPad Mini 1，爸妈手机&lt;/code&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RC车&lt;/strong&gt;：这可谓是打开了新世界的大门，大扭矩无级调速的RC车深深吸引了我&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不知名小游戏&lt;/strong&gt;：叫啥名字我全忘了，反正不怎么好玩，不做过多解释&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;近代史2019-2022（9岁-12岁）最辉煌的时代：竞速游戏百花齐放，开放世界游戏较快发展，经典游戏频出&lt;code&gt;设备：三星盖乐世S6，iPhone 7，iPad Pro 10.5 英寸，小辣椒杂牌机，步步高S5&lt;/code&gt;&lt;/h2&gt;
&lt;h3&gt;为这一时期的游戏事业大发展致谢：&lt;strong&gt;百分网游戏盒子&lt;/strong&gt;（我不是广告）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;当时没有实名认证，我也不玩国内游戏，百分网真的打开了我竞速游戏的闸门，我那时候经常会在输入框里输入“赛车” “竞速” 一类的关键词，然后就一直往下翻，总能够找到一些好东西。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Gameloft 系列&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Asphalt 8（狂野飙车8）&lt;/strong&gt;：前期我小时候由于没有A9那种自动驾驶不会玩老是开不好炸车，就去玩狂野飙车9了，后期掌握了陀螺仪操控就回来玩8了，后期玩的是新版本破解版（也感觉不到肝和氪），再往后（2023-2025）就去玩老版本了&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Asphalt 9（狂野飙车9）&lt;/strong&gt;：国服刚开始的时候也是很良心的（现在也不差，总比集结那一坨好），优秀的画质，娱乐向的战斗竞速玩法很有短快爽的感觉&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Asphalt Nitro 1/2（狂野飙车极速版1和2）&lt;/strong&gt;：狂野飙车8/9的超级压缩版本，玩法都差不多，这俩是给低端机玩的&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Gangstar: Vegas（孤胆车神：维加斯）&lt;/strong&gt;：模仿GTA的开放世界犯罪类游戏，画面算不上优秀，但是内置音乐很好听&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;GT Racing 2（GT赛车2）&lt;/strong&gt;：因为服务器断连所以一次只能玩一局，里面车的模型貌似和A8差不多？手感也就那样，我对它的印象不是很好。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Car Parking v 4.x.x（手动挡停车场/停车场多人）&lt;/h3&gt;
&lt;p&gt;直接给这个游戏单开一个小标题，这个游戏在我的童年时光中真的太重要了。当时就为这个游戏强大的汽车改装功能所震撼，不光是引擎、涡轮、变速箱这些性能改件（当时有一个bug能改出来2000匹的车子，我改了一辆2000hp的RS7），而且外观件比如大包围、尾翼、轮辋、避震器高度刚度倾角等等也是非常丰富。接下来谈谈地图，我玩的时候还没有城市2，只有一个城市（对于小时候的我哪怕是现在这个地图都算挺大的了）来看看我印象较深的几个地点：能跑到400+的超长高速，连接着沙漠和城市；靠近海边的网红坡；能自由买卖的卖车场。这游戏还有多人模式，现如今我和同学们一起玩，乐趣无穷。&lt;/p&gt;
&lt;h3&gt;Car Simulator 2 （汽车模拟器2 早期老版本和VIVO商店魔改版）&lt;/h3&gt;
&lt;p&gt;同Car Parking，专门起一个小标题来写，可想而知，这俩给我小时候带来了多少乐趣。这是一个由俄罗斯工作室Oppana Games开发的游戏（这毛子工作室的游戏我能这么喜欢我也是没想到）。**“新手，欢迎来到城市！”**这句标语可谓是记忆犹新，哦，对，还有那个新手车拉达，我最熟悉的赛道是“胜利环游”，地图上的任务还是比较多的，类型也很丰富，比较耐玩，画质不高，但是画风看着不难受，汽车自定义选项没有Car Parking丰富，但是也够了。后面更新以后新手车换成思域之后我就不经常玩了，再往后猛地捡回来感觉就变味了（应该不是游戏的问题，是我不习惯），游戏是在持续改进的，我现在玩的依然是老版本。VIVO商店魔改版算是“外传”了吧，其实游戏原版是有中文的，但是这魔改版硬是做了一些抽象且生硬的“汉化”，比如把加载图大楼上的&quot;MALL&quot;字样改成了“商场”，还有一个玩家应该会比较喜欢的特性就是在这个魔改版当中玩家只需要买车库，买完后车库里就会自动随机刷新汽车把你的车库填满，每次买车库就跟开盲盒一样。&lt;/p&gt;
&lt;h3&gt;CarX 系列&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Carx Drift Racing 1&lt;/strong&gt;：CarX系列的开山之作，为后2代的巨大成功打下基础。一开始是因为看了一系列的漂移视频才开始玩的，一开始也是不会漂移，就算是漂了也不会维持，后来意外地学会了手刹起漂，也开启了陀螺仪操控，终于会漂了。会了之后就开始跑各种地图，目前最熟悉的是 Parking A 和 Kami Road 这两个，我跑圈从来都行云流水。还有一种另类玩法被我与“典雅人”(一位志趣相投的B站UP主)叫做“出图”，顾名思义就是把车开到地图限制玩家的范围以外，最有意思的当然是 Parking A(停车场图)，出图后可以跑一个巨大的高架桥，测试车极速，我感觉这个地段虽然没做完，还有大片的可玩区域。“典雅人”还在桥上做出一个不可思议的动作，请看VCR：______。LA Blocks 也是个神奇的地方，图外有好多段路段伪路网，不是实体。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Carx Drift Racing 2&lt;/strong&gt;：玩法、地图基本和DR1一样。不同处：车辆自定义更丰富，可以自己正式添加贴纸，并有涂装与调教工坊玩家可以自主上传涂装调教，大大增加了可玩性。操控的手感比DR1要滑一点，而且这游戏优化不够在我 Galaxy S6 上只能低帧勉强跑起来，这导致我经常卡一下，整体来说DR2比DR1强很多，两代我都很喜欢。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Carx Street&lt;/strong&gt;：这个游戏就比较有谈头了。应该是我目前只见从第一次内测到正式版的游戏了吧。对于这种开放世界大地图自由探索竞速游戏我一直比较感冒，这样一个游戏就非常值得我关注了。想当年21或者22年吧，我第一次玩Carx Street的时候真是无比激动。当时应该是 0.5.x 版本。初始车 Honda EG6 (Carx里的车都没有授权)，地图是真的大，而且还有昼夜交替。尤其是晚上光污染真的不错，画质光影在手机上可谓无敌。我当时没用 iPad Air 10.5英寸，当时优化还可以，不用挂梯子即可直连下载资源，所以这版本是真优化？现在下载不仅要梯子而且优化各路让人头大。真要找一下当时的老版本，奈何要联网验证更新！有没有大神能帮解决一下这个问题！我想玩Carx老版本！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Carx Rally &amp;amp; Carx Highway Racing&lt;/strong&gt;：Carx Rally 我没玩几把，因为手感非常滑，滑到我不能接受，删了。再谈 Highway 车模型和DR1基本相同，动态竞速很爽而且有线，还有一关不给撞车的，过不去，不玩了。立体来说这两作都一般，也许是四系列的先入为主观念了吧。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;开放世界犯罪系列（R星主打，辅以2个小游戏）&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;先谈R星 (锁车门)：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;GTA III &amp;amp; GTA Vice City&lt;/strong&gt;：(这两个游戏剧情我就不写了，小时候直接用AI生成) 这两个游戏是在我初中的时候玩的，游戏本体就不多说了吧，能经得住时间考验的游戏都很不错，这两游戏在我家电视盒子上都能跑，什么实力不用多说了吧！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;GTA San Andreas&lt;/strong&gt;：(也是用AI先写一下故事梗概) 这个游戏其实我根本不是按照剧情走的，CJ被扔到巷子里后我直接打开作弊器，我就是先开无敌，然后给自己刷上一身的武器和一辆跑车，到处作恶，玩的就是爽。虽说是挺有意思的，现在长大后倒是没能好好过一切剧情。SA的另一大玩点就是可以加巨量的模组飞天遁地全都有，这里就不得不提叫“典雅人”把车开上天撞了后游戏闪退的乐事了。BTW，这是我对GTA系列真正上手玩的一部神作，而且有重大的意义。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Vegas Crime&lt;/strong&gt;：这个游戏大多数人应该没听过吧。它是由一个小编叫 Naxeex 发行的。我初次玩它是在华为应用商店下的超级变态修改版。不能说好玩吧，只能说全都是外挂，后来在我熟练掌握A8的那个夏天我偶然找到了原版无广告版本。当时可谓非常惊喜。但这游戏与上面几代GTA比起来还是差远了。我能把它写到这里的主要原因还是“情怀无价”！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;孤胆车神：维加斯&lt;/strong&gt;：同前文 Gameloft 系列所述。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;越野与其他经典竞速类&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Project:Offroad（越野工程）&lt;/strong&gt;
首先，VIVO商店牛逼！没错，这个游戏最初也是在VIVO商店找的，而且这个还没什么广告。我玩它的原因就是它有好几辆加了防滚架轮胎差速锁的车，轮胎那种越野游戏嗡嗡响，这也正常，我小时候几乎就把它当成手机版的旋转轮胎来玩了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Extreme Car Driving Simulator（极限汽车驾驶模拟）&lt;/strong&gt;
我首次接触这个游戏是在VIVO商店(该死的应用商店？) 叫“超凡赛车”。其实也就是这个游戏的广告注入版。这个游戏还故意把所有车的名字都改错了。我玩的时候最喜欢去机场，然后连按刷新按键然后飞起来。后来找到了正版，无广告。大概在初二的时候与“十月先生”一起玩。这游戏有极为抽象的车损，我们疯狂犯撞车也不修复，导致车子严重扁形，被“十月先生”称为“概念车”！&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Rush Rally 3&lt;/strong&gt;：这个游戏貌似正版要钱啊。所以我从小在百分网下破解版。玩起来手感不错，比 Carx Rally 好多了。而且这个拉力赛我玩了真的我对拉力赛没特别感冒，没玩过多少局就没玩且吃灰了。所以这个不做过多评价。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Dubai Drift 2&lt;/strong&gt;：从苹果 App Store 里首次认识这个游戏。基本没什么好吹的，我这游戏比较清楚的是一直漂移然后地图有个能卡出的获胜点(Bug)。手感就那样，滑。真的连车直线都开不了那种滑，太TM无敌了。只有速度起来了才能勉强开一直线。里面有一个城市地图我比较喜欢，做任务可以，为童年带来了快乐。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Real Racing 3&lt;/strong&gt;：由 EA Games 开发，三代定律真的屡试不爽。Real Racing 系列第三代应该是我玩到的移动端比较对得起拟真赛车的游戏了吧。我喜欢它的一个地方就是兼容性以及可玩性，上至 8Gen3 芯的大内存手机，中至 iPad Pro 10.5 英寸，下至小米儿童手表(破解版)均可玩，而且十分流畅，在手表上30帧起码是可以的。打开高辅助，只要控制刹车方向，带有各种辅助的时候玩。在我们初中生涯中，遇到一个至关重要的人物——Mr. October(十月先生) 对！就是那个发明水土著桌球的人。在七年级一年的“友好交流”(其实是他黑我电脑)之后，我们也有了深厚的Bromance(基情)。我们开始一块玩游戏，他在我的引导下进入了 RR3。一开始他老是倒着跑，后来在慢慢的练下学会了走线，也就是跑起来了。这车好开。非常有一套，非常有实力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Apex Racing&lt;/strong&gt;：第一次看到它，是在B站上看到一个人的推荐。以“高画质，开放世界”为亮点吸引了我去玩。我下载了意外发现在我的 Galaxy S6 上也能跑出不错的画面表现，更新到现在也更新了不少的车和内容。但是我没时间玩。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Torque Drift (扭矩漂移)&lt;/strong&gt;：小时候习惯 Carx 的手感之后去玩这个游戏。非常的不适应。感觉这个小马力车就漂不起来一样，非常难受。小时候也是因为谷歌闪退，没玩几把就删了。后来重下了回来也是一样的问题（问号）。感觉画质不错，PC端上免费下载也不错，挺好的。现在对于它评价是不错的。BTW，扭矩漂移2 PC上非常好玩，暑假买。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Real Driving School (RDS)&lt;/strong&gt;：从百分网游戏盒子下载。画质不错。有一个不是很真实的物理，但总体有意思。就是科尼赛克杰斯可能 600kph+？非常离谱。而且经常会起飞。最变态的我买车还能下车给加速。地图很大，车也很多，是一个不错的游戏。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;NFS 17 Mobile&lt;/strong&gt;：NFS的经典之作。画质修改模型与氮气。卡了个警车并且卡到了无限氮气。那些警车这下我终于明白为什么我跑再快他们总能追上我——TM警车能开700多kph，只能说一句“无语”，太快了。开警车去比赛直接完爆对手好吗。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;NFS No Limits&lt;/strong&gt;：我玩这个游戏大致可以分为2个阶段：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;阶段1&lt;/strong&gt;：在国区苹果商店上架。由于技术不好总是肝被劝退。偶然在视频平台上看到一款名为“极品飞车”的游戏（当时我手里 iPhone 7 没有梯子，当时也是锁着），就跑到 App Store 去搜，居然搜到了(全拼叫 No Limits)。我兴高采烈下载下来发现不是开放世界(T_T)。后面就将就玩了。曾经留了几个当初的截图(img)。后来丢了，现在想找也找不回了。就退坑了。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;阶段2&lt;/strong&gt;：修改器逆天改命，满级特权+50级满配车走上人生巅峰。23年还是24年，我在B站上看到了 @NFS_melon 大佬的视频跟着学会了修改器。懂的都懂无限金银，等级满级，全车解锁并满星。后面就变挂逼了。而且到现在也没被封号。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;tip: 我还有好多游戏实在是想不起来了，后面想起来还是会补的。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;近代史结语&lt;/h3&gt;
&lt;p&gt;近代史写个总结吧。这绝对是我人生中游戏最快乐的一个阶段了。许多好游戏的黄金时期可以用它吧。甚至那些比较辉煌好玩儿的时期，都被我赶上了，真的觉得没什么遗憾！&lt;/p&gt;
&lt;h2&gt;现代史（2024至今）：怀旧复古狂潮与端游时代的开启&lt;/h2&gt;
&lt;p&gt;（终于可以写到现代史了）&lt;/p&gt;
&lt;h3&gt;怀旧复古&lt;/h3&gt;
&lt;p&gt;怀念“近代史”时候无忧无虑玩游戏（括号内的看心情去接）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Car Simulator 2&lt;/strong&gt;：先回顾这个游戏，找到了老版本(V1.3.x)的原版和破解版还有当时的入坑大作：VIVO商店魔改版(这也算的话) 介绍见上文。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Car Parking (V.4.x.x)&lt;/strong&gt;：大约是找回了以前玩的版本了吧。介绍见上文。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Asphalt 8 (V.1.0.0)&lt;/strong&gt;：新版本的A8已经面目全非了。找老版本来玩。介绍见上文。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Asphalt 9&lt;/strong&gt;：不知道为啥。就是想玩看看的。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Real Racing 3&lt;/strong&gt;：老朋友，介绍见上文。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;微信、QQ&lt;/strong&gt;：3A大作，不必多说，内存杀手，你我都在用。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;其次：端游时代的开始&lt;/h3&gt;
&lt;p&gt;为什么我从一个多年手游玩家突然转向端游的呢？我总结有以下几点原因。
前言追溯一下端游吧。我最早在云游戏平台玩过端游（扫雷纸牌那些小的不算了），其实那也不算是真正意义上的端游吧。是在某个云游戏软件上玩的地平线4。说实话那是我的第一款端游大作。这游戏画面真的好，这还是云的，玩了30分钟的心酸经历就先不说，那感觉真的没有Carx好玩。然后，促使我(或者我爸)升级电脑的动机是我在地平线4下架的前一天买了个终极版。家里电脑当时还是个核显几天后我爸就去买了块3050装上。完美4k全特效端游体验之后再自己说说。地平线四的优化真的好！&lt;/p&gt;
</content:encoded></item><item><title>给博客做了一轮性能收口，又塞进了一只会动的看板娘</title><link>https://gr114.com/posts/blog-performance-and-mascot/</link><guid isPermaLink="true">https://gr114.com/posts/blog-performance-and-mascot/</guid><description>把全站常驻的灯箱和滚动条组件改成按需加载，砍掉外部字体与无用样式，再把 whale-girl 的精灵素材压成 WebP，做成一只纯前端、可拖拽的博客看板娘。</description><pubDate>Tue, 25 Aug 2026 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;最近看博客，总觉得它有点像我本人：功能越来越多，细节越来越顺手，但也越来越容易在不该用力的地方使劲。&lt;/p&gt;
&lt;p&gt;首页有 Banner，文章页有图片灯箱，所有页面有滚动条增强、主题切换、Swup 换页、搜索、侧栏卡片……单独看都还行，堆在一起就开始值得算账了。&lt;/p&gt;
&lt;p&gt;于是这次不做那种“Lighthouse 红了，随便删两个库”的优化，而是把每一项东西都问了一遍：&lt;strong&gt;你是不是每一页、每一台设备、每一秒都必须存在？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;顺手还往右下角塞进了一只看板娘。&lt;/p&gt;
&lt;h2&gt;先把全站常驻的东西拆开&lt;/h2&gt;
&lt;p&gt;之前 PhotoSwipe 灯箱逻辑放在全局 &lt;code&gt;Layout&lt;/code&gt; 里。意思是无论你是在首页看文章卡片、去归档翻旧文，还是打开一个根本没图的页面，浏览器都得准备好一整套图片灯箱。&lt;/p&gt;
&lt;p&gt;这就有点像去便利店买瓶水，店员先把投影仪、幕布和音响搬出来待命。&lt;/p&gt;
&lt;p&gt;现在它被拆成了独立的 &lt;code&gt;Lightbox&lt;/code&gt; 组件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只有文章页、关于页和碎碎念页会挂载它；&lt;/li&gt;
&lt;li&gt;只有页面里真的存在正文图片或封面图时，才会动态导入 PhotoSwipe；&lt;/li&gt;
&lt;li&gt;没图的页面不会下载灯箱主体，也不会初始化相关事件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;功能没少，图片点开还是能放大、缩放、关闭；只是没图的地方终于不用为这件事提前买单。&lt;/p&gt;
&lt;h2&gt;手机端别再硬上自定义滚动条&lt;/h2&gt;
&lt;p&gt;桌面端的 OverlayScrollbars 看着不错，代码块横向滚动也比较顺手。&lt;/p&gt;
&lt;p&gt;但手机上，本来就有原生滚动、惯性、回弹和系统级手势。为了把滚动条“美化”一下，再额外加载脚本和样式，多少有点本末倒置。&lt;/p&gt;
&lt;p&gt;所以现在的策略很简单：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;细指针的桌面设备才启用 OverlayScrollbars；&lt;/li&gt;
&lt;li&gt;而且等浏览器空闲后再动态导入；&lt;/li&gt;
&lt;li&gt;触控设备直接使用原生滚动。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是“功能降级”，而是承认手机浏览器在滚动这件事上，确实比我这点 JavaScript 更懂用户。&lt;/p&gt;
&lt;h2&gt;字体也得克制&lt;/h2&gt;
&lt;p&gt;之前页面通过 Google Fonts 一口气加载了好几套字体和字重。视觉上当然没问题，但每次首访都得多一次跨域请求、多一段 DNS/TLS 流程，还要看网络和 CDN 心情。&lt;/p&gt;
&lt;p&gt;一开始我本来想把中文字体整个本地化，后来发现这事不太对。&lt;/p&gt;
&lt;p&gt;完整的中文字体不是一张小图标，光常规字重就是大文件；即使做了分片，页面里也会出现一串字体请求。为了“本地化”把首屏拉得更重，那就属于为了治头疼把脑袋卸了。&lt;/p&gt;
&lt;p&gt;最后定了一个比较现实的平衡：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;保留本地的 Lora 拉丁字形，只留下 400 和 700 两个常用字重；&lt;/li&gt;
&lt;li&gt;中文回归系统字体栈，让不同设备用自己最合适的中文字体；&lt;/li&gt;
&lt;li&gt;移除不再使用的 Plus Jakarta Sans；&lt;/li&gt;
&lt;li&gt;顺手删掉了一大段已经没有播放器使用的 APlayer 样式。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;现在站点不再依赖 Google Fonts，Lora 的两个 WOFF2 文件加起来也就四十多 KB。该省省，该让系统干活就让系统干活。&lt;/p&gt;
&lt;h2&gt;然后，右下角多了一只鲸鱼娘&lt;/h2&gt;
&lt;p&gt;性能账算完之后，当然要干点不那么“理性”的事。&lt;/p&gt;
&lt;p&gt;我看到 &lt;a href=&quot;https://github.com/vlln/whale-girl&quot;&gt;whale-girl&lt;/a&gt; 这个桌宠项目时，第一反应是：这东西放博客右下角应该很合适。&lt;/p&gt;
&lt;p&gt;但它本身是给 DSH 用的插件，不是拿个 &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; 往 Astro 里一塞就能跑的网页组件。它依赖一套状态接口、事件流和资源路由。为了一个看板娘再给博客接一套常驻服务端，不值当。&lt;/p&gt;
&lt;p&gt;于是走了另一条路：&lt;strong&gt;只使用角色精灵素材，交互逻辑全部自己写。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;首版保留了七种最有用的状态：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;idle&lt;/code&gt;：平时发呆；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;think&lt;/code&gt;：思考；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;working&lt;/code&gt;：认真营业；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;celebrate&lt;/code&gt;：发现好东西时庆祝；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;error&lt;/code&gt;：留给以后做小彩蛋；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;welcome&lt;/code&gt;：第一次见面打招呼；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;drag&lt;/code&gt;：被拎着到处挪时的状态。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;原始七张 PNG 精灵表大约 1MB。我把它们转成保留透明通道的 WebP，最后总大小约 224KB。&lt;/p&gt;
&lt;p&gt;更重要的是，它不会一上来就把全部动作图拉下来：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;首屏只用 &lt;code&gt;idle&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;第一次互动后，其他状态才在后台准备；&lt;/li&gt;
&lt;li&gt;没点她之前，她就是一只安静待着的鲸鱼娘，不抢首页带宽。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;看板娘该有的基本礼貌&lt;/h2&gt;
&lt;p&gt;看板娘最怕两个问题：挡内容，和赖着不走。&lt;/p&gt;
&lt;p&gt;所以这里给她定了几条规矩：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;桌面端默认在右下角，能拖拽，位置会保存在本地。&lt;/li&gt;
&lt;li&gt;手机端默认折叠成小入口，点开才展开，别一进站就占半个屏幕。&lt;/li&gt;
&lt;li&gt;点击会有随机台词和爱心特效，但遵循系统的“减少动态效果”设置。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Escape&lt;/code&gt; 可以收起，右上角按钮也能缩回入口。&lt;/li&gt;
&lt;li&gt;她挂在 &lt;code&gt;body&lt;/code&gt; 的直属层，不在 Swup 的页面替换区域里，所以站内换页不会反复重建出好几只。&lt;/li&gt;
&lt;li&gt;开启文章的禅定模式时，她也会淡出，不来打扰你看字。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;看板娘不需要知道我正在写什么，也不需要连任何后端。她只要在你点一下时说两句话，被拖走时老实进入拖拽状态，偶尔自己发会儿呆，就够了。&lt;/p&gt;
&lt;h2&gt;这轮改完之后&lt;/h2&gt;
&lt;p&gt;这次没有做什么“把所有东西砍掉，博客快了 300%”的神话。&lt;/p&gt;
&lt;p&gt;做的事情更朴素：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;无图页面不再带着图片灯箱跑；&lt;/li&gt;
&lt;li&gt;手机不再为了自定义滚动条多背一份脚本；&lt;/li&gt;
&lt;li&gt;字体不再依赖外部服务，也不硬塞巨大的中文字库；&lt;/li&gt;
&lt;li&gt;无用播放器样式被清掉；&lt;/li&gt;
&lt;li&gt;新加的看板娘也按首屏资源预算来，不搞一只 2MB 的右下角装饰品。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;性能优化不是让网站看起来像一张白纸。&lt;/p&gt;
&lt;p&gt;真正舒服的状态应该是：该出现的东西有存在感，不该出现的东西安静消失。现在右下角那只鲸鱼娘会动，会聊天，会被拖走；但在你还没理她之前，她不会抢走任何不属于她的注意力。&lt;/p&gt;
</content:encoded></item><item><title>给四个 AI 编程工具的对话记录建了个知识库</title><link>https://gr114.com/posts/llm-wiki-knowledge-base/</link><guid isPermaLink="true">https://gr114.com/posts/llm-wiki-knowledge-base/</guid><description>Antigravity CLI、Claude Code、OpenCode、grok-cli 四个工具的对话记录散落系统各处，格式还全不一样。花了一天把它们全收进一个 Obsidian vault。</description><pubDate>Thu, 23 Jul 2026 15:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;说在前头：我同时用了四个 AI 编程 CLI 工具，对话记录散落在系统各处，格式还全不一样。这篇文章记录的是我花了一天把它们全部收进一个 Obsidian vault 的过程。没有现成的导出指南，最后全靠&quot;挖本地文件 + 读 CHANGELOG&quot;硬刚出来的。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;为什么要折腾这个&lt;/h2&gt;
&lt;p&gt;我是个管不住手的折腾爱好者（这博客哪篇文章不是折腾出来的），同时用着四个 AI 编程 CLI 工具：Antigravity CLI、Claude Code、OpenCode、grok-cli。每个工具都跟我聊了几十上百个会话，帮我做过博客、整蛊平台、刷课脚本、翻页时钟……&lt;/p&gt;
&lt;p&gt;问题是：&lt;strong&gt;这些对话记录全散着&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这四个工具各自把对话存在系统不同角落，格式还都不一样。我在 Antigravity 里跟 AI 讨论过的 boom 架构设计，和在 OpenCode 里做的 boom 代码审查，完全是两条线，谁也接不上。更别提有时候我换了个工具继续同一个项目，前因后果全断了。&lt;/p&gt;
&lt;p&gt;所以我想：能不能把这些对话全收进一个地方，整理成能检索的知识库？&lt;/p&gt;
&lt;p&gt;（这不是什么新鲜想法，Karpathy 之前就提过用 LLM 帮你维护个人 wiki 的思路，刚好有个现成的 skill 可以用。）&lt;/p&gt;
&lt;h2&gt;第一步：建 vault&lt;/h2&gt;
&lt;p&gt;先用 Obsidian 建了个空 vault，分了三个目录：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;raw/&lt;/code&gt; - 放原始对话日志和代码库综述（原料区）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wiki/&lt;/code&gt; - 放结构化知识页面（成品区）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;journal/&lt;/code&gt; - 日记（后来没用上）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然后 &lt;code&gt;git init&lt;/code&gt;，写好 &lt;code&gt;.gitignore&lt;/code&gt;（排除了依赖、密钥、临时文件），首次提交 &lt;code&gt;init: empty vault&lt;/code&gt;。干净的空仓库，准备开干。&lt;/p&gt;
&lt;h2&gt;第二步：Antigravity CLI（踩坑最重的部分）&lt;/h2&gt;
&lt;h3&gt;官方文档啥也没写&lt;/h3&gt;
&lt;p&gt;Antigravity CLI 号称有&quot;持久化历史&quot;功能，但你翻遍官方文档和 GitHub README，关于历史存哪、什么格式、怎么导出--一个字都没写。文档站还是个 JS 渲染的单页应用，抓都抓不到正文（这文档站做得跟没上线似的）。&lt;/p&gt;
&lt;p&gt;到这一步我已经开始怀疑了：一个有&quot;持久化历史&quot;功能的工具，官方居然没有任何导出说明？&lt;/p&gt;
&lt;h3&gt;仓库里根本没有源码&lt;/h3&gt;
&lt;p&gt;不死心，我去翻 Antigravity CLI 的 GitHub 仓库目录结构，想直接看源码里历史是怎么存的。结果发现--&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这个仓库根本没有源码目录。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;根目录就三个文件：&lt;code&gt;CHANGELOG.md&lt;/code&gt;、&lt;code&gt;README.md&lt;/code&gt;、一个 25MB 的 demo gif，外加一个 &lt;code&gt;examples/&lt;/code&gt; 目录（里面只有 statusline 和 title 两个示例）。CLI 本体是闭源的。&lt;/p&gt;
&lt;p&gt;（也好理解，Google 的东西嘛，开源个壳子意思一下。）&lt;/p&gt;
&lt;h3&gt;读 CHANGELOG 逆天改命&lt;/h3&gt;
&lt;p&gt;正准备放弃这条路的时候，我顺手抓了 &lt;code&gt;CHANGELOG.md&lt;/code&gt; 的原始内容。这一抓，金矿出来了。&lt;/p&gt;
&lt;p&gt;CHANGELOG 里大量版本更新都提到了会话历史相关的改动，拼凑出了完整的信息：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;会话格式&lt;/strong&gt;：SQLite 数据库（&lt;code&gt;.db&lt;/code&gt; 文件），从 v1.0.4 起是正式会话格式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;存储目录&lt;/strong&gt;：在 Gemini 的配置目录下（因为 Antigravity 基于 Gemini 生态），有个专门的 &lt;code&gt;antigravity-cli&lt;/code&gt; 子目录&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;查看/恢复历史&lt;/strong&gt;：&lt;code&gt;/resume&lt;/code&gt; 斜杠命令，交互式选择器，支持搜索、重命名、删除&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;命令行恢复&lt;/strong&gt;：&lt;code&gt;agy -c &amp;lt;会话ID&amp;gt; -p &amp;lt;路径&amp;gt;&lt;/code&gt; 可以 headless 恢复指定会话&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;workspace 映射&lt;/strong&gt;：有个 &lt;code&gt;projects.json&lt;/code&gt; 存着&quot;工作目录 -&amp;gt; 项目&quot;的映射关系&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;人话解释：Antigravity CLI 把你每次跟它的对话存在一个数据库文件里，不是明文文本。数据库文件藏得很深，在 Gemini 的配置目录底下。你想看历史对话得用 &lt;code&gt;/resume&lt;/code&gt; 命令在 CLI 里交互式浏览，没有现成的&quot;导出&quot;按钮。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;与其继续猜数据库文件的确切位置和结构，不如直接看本机实际的目录--既然有历史对话，本地就一定有这个目录。&lt;/p&gt;
&lt;p&gt;果然，一查本地，17 个会话文件整整齐齐躺在那。导入 vault，commit 完成。&lt;/p&gt;
&lt;h2&gt;第三步：Claude Code 和 OpenCode（直接挖本地）&lt;/h2&gt;
&lt;p&gt;有了 Antigravity 的经验，这回我直接跳过查文档，&lt;strong&gt;挖本地数据目录&lt;/strong&gt;--反正对话存在本机，找到文件就完事。&lt;/p&gt;
&lt;h3&gt;Claude Code&lt;/h3&gt;
&lt;p&gt;Claude Code 的对话存储相对&quot;正规&quot;：每个项目一个目录，目录名是工作目录路径编码后的字符串（把 &lt;code&gt;/&lt;/code&gt; 替换成 &lt;code&gt;-&lt;/code&gt;），里面每个会话一个 &lt;code&gt;.jsonl&lt;/code&gt; 文件，文件名是 session UUID。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;人话解释：JSONL 就是&quot;一行一个 JSON 对象&quot;的文本格式，每行存一条消息。比 SQLite 数据库友好多了，至少能用文本编辑器直接打开看。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;本机查下来，Claude Code 下有几个项目的对话记录，每个项目里若干个会话文件，清清楚楚。&lt;/p&gt;
&lt;h3&gt;OpenCode&lt;/h3&gt;
&lt;p&gt;OpenCode 的存储方式和 Antigravity 类似--SQLite 数据库。一个 &lt;code&gt;opencode.db&lt;/code&gt; 文件装下所有会话。&lt;/p&gt;
&lt;p&gt;这里有个差点踩的坑：OpenCode 的数据目录里除了数据库，还有凭证相关的文件（认证信息、账号配置）。&lt;strong&gt;这些绝对不能导入 vault&lt;/strong&gt;，不然就等于把钥匙塞进保险箱还贴了张条子写&quot;钥匙在里面&quot;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;人话解释：四个工具两种存储方式。SQLite 数据库（Antigravity、OpenCode）和 JSONL 文本文件（Claude Code、grok-cli）。数据库需要写脚本查询导出，JSONL 直接复制就行。这就是为什么后面的整理工作量不一样。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;第四步：grok-cli 和代码库&lt;/h2&gt;
&lt;p&gt;grok-cli 的对话也在本地，JSONL 格式，6 个会话，直接导入。&lt;/p&gt;
&lt;p&gt;除了对话记录，我还把本地几个项目的代码库也做了综述导入--boom（整蛊平台）、博客、翻页时钟、open-design 等。每个代码库写一份&quot;它到底在干什么、用了什么技术栈&quot;的综述放进 &lt;code&gt;raw/&lt;/code&gt;，这样 wiki 页面引用时有据可查。&lt;/p&gt;
&lt;h2&gt;第五步：用 skill 编译成 wiki&lt;/h2&gt;
&lt;p&gt;原料全进 &lt;code&gt;raw/&lt;/code&gt; 之后，用 &lt;code&gt;karpathy-llm-wiki&lt;/code&gt; skill 把它们编译成结构化的 wiki 页面。&lt;/p&gt;
&lt;p&gt;编译出来的 wiki 分几种类型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;实体页（entity）&lt;/strong&gt;：每个工具、每个项目一个页面，记&quot;它是什么、什么技术栈、关键属性&quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;概念页（concept）&lt;/strong&gt;：跨项目提取的技术概念，比如&quot;AI CLI 对话存储机制&quot;把四个工具的存储方式放一张表对比&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;综述页（summary）&lt;/strong&gt;：每个工具的对话记录综述，提炼出&quot;聊了什么、做了什么&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如 boom 这个项目，在 Antigravity 里讨论过架构设计，在 Claude Code 里做过代码审查，在 OpenCode 里重设计过 UI--这些原本散在三个工具里的对话，现在通过 wiki 页面上的交叉引用串起来了。&lt;/p&gt;
&lt;h2&gt;第六步：分类重构（两次）&lt;/h2&gt;
&lt;p&gt;第一版 wiki 是按工具分类的：Antigravity 一堆、Claude Code 一堆、OpenCode 一堆。但很快发现问题--同一个项目的信息被打散到不同工具目录下了。boom 的架构设计在 Antigravity 目录，代码审查在 Claude Code 目录，UI 重设计在 OpenCode 目录，找起来要跨三个地方。&lt;/p&gt;
&lt;p&gt;于是第一次重构：改成 tools/（工具）+ summaries/（对话综述）+ 项目目录（按项目聚合）。&lt;/p&gt;
&lt;p&gt;用了之后又觉得不对：projects 里面混着&quot;实用工具&quot;（boom 整蛊平台、刷课脚本）和&quot;展示作品&quot;（博客、翻页时钟），这俩性质完全不同。&lt;/p&gt;
&lt;p&gt;于是第二次重构：拆成三大类--&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;projects&lt;/strong&gt;：实用工具，解决实际问题的（boom、刷课、文件互传、办公自动化 agent）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;creations&lt;/strong&gt;：展示作品，美学与表达的（博客、翻页时钟）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;explorations&lt;/strong&gt;：学习笔记，研究别人开源项目的（open-design）&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;人话解释：就像整理书架，第一版按&quot;在哪买的&quot;分（京东一堆、淘宝一堆），发现不好用；第二版按&quot;是什么&quot;分（工具书一堆、小说一堆），发现还是混；第三版按&quot;用来干嘛&quot;分（干活用的、看着爽的、学东西的），终于顺了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;两次重构一共移动了 19 个文件，所有跨目录链接全部更新。链接用 Obsidian 的 &lt;code&gt;[[双链]]&lt;/code&gt; 语法，改一次目录就要批量修一堆引用，痛不欲生。&lt;/p&gt;
&lt;h2&gt;成果&lt;/h2&gt;
&lt;p&gt;一天下来，知识库的格局是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;4 个工具&lt;/strong&gt;的对话记录全部导入（Antigravity 17 会话、Claude Code 11 会话、OpenCode 69 会话、grok-cli 6 会话）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;7 个代码库&lt;/strong&gt;的综述&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;30+ 个 wiki 页面&lt;/strong&gt;（实体页 + 概念页 + 综述页）&lt;/li&gt;
&lt;li&gt;三级分类（tools / projects+creations+explorations / summaries），交叉引用串成网&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最爽的是：现在开一个新会话，让 AI 先去读 wiki 的 index，它就能快速恢复&quot;我之前用这些工具做过这些项目、踩过这些坑&quot;的上下文。&lt;strong&gt;相当于给没有跨会话记忆的 AI 装了个外挂记忆。&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;踩坑总结&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;坑&lt;/th&gt;
&lt;th&gt;解法&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;官方文档没写导出方法&lt;/td&gt;
&lt;td&gt;放弃文档，直接挖本地数据目录&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Antigravity 仓库没源码&lt;/td&gt;
&lt;td&gt;读 CHANGELOG 反而挖到最关键的信息（存储格式、路径、命令）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;四种存储格式全不同&lt;/td&gt;
&lt;td&gt;SQLite 的写脚本查表导出，JSONL 的直接复制&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenCode 数据目录混着凭证文件&lt;/td&gt;
&lt;td&gt;导入前仔细甄别，凭证文件绝对不能进 vault&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;wiki 分类两次都不对&lt;/td&gt;
&lt;td&gt;第一次按工具分（信息打散），第二次按项目分（性质混淆），第三次按用途分才顺&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;改目录要批量修链接&lt;/td&gt;
&lt;td&gt;Obsidian 双链的代价，改一次痛一次&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;后记&lt;/h2&gt;
&lt;p&gt;这次折腾最大的感悟是：&lt;strong&gt;有时候官方文档帮不了你，但 CHANGELOG 可以。&lt;/strong&gt; Antigravity CLI 的 CHANGELOG 里密密麻麻记着每次版本更新对会话历史的改动，拼起来就是一份完整的&quot;数据存储演进史&quot;。官方文档啥都没写，CHANGELOG 全写了。&lt;/p&gt;
&lt;p&gt;（所以养成写 CHANGELOG 的好习惯啊各位开发者，你永远不知道谁会在哪天靠这玩意儿救命。）&lt;/p&gt;
&lt;p&gt;知识库现在还在用，每次新会话产出有价值的内容就往里沉淀。虽然 AI 没有跨会话记忆，但有了这个 vault，至少不用每次从零开始解释&quot;我是谁、我做过什么、别再问我为什么用 vibe coding 了&quot;。&lt;/p&gt;
</content:encoded></item><item><title>从局域网玩具到云端大杀器：Boom V3.0 整蛊平台重构与踩坑实录</title><link>https://gr114.com/posts/boom-v3-refactor/</link><guid isPermaLink="true">https://gr114.com/posts/boom-v3-refactor/</guid><description>高一班里的“赛博判官”成长史：把本地整蛊小脚本升级成拥有完整 WebSocket 云端架构的远程控制平台，顺便记录下这其中让人血压飙升的连环踩坑经历。</description><pubDate>Sat, 27 Jun 2026 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;故事的起因是这样的。班里总有那么几个“闲不住”的同学，最喜欢趁课间休息或者自习没人管的时候，偷偷把讲台上的教学一体机打开，公放一些奇奇怪怪、甚至是相当猎奇的视频和照片。&lt;/p&gt;
&lt;p&gt;身为班里的“首席网管”（虽然是自封的），我深感自己有责任维护一下班级的“网络风气”。一开始，我写了个非常简陋的本地脚本 Boom V2.5，趁他们不注意塞进一体机里，然后通过同一网段下的局域网去触发恶搞弹窗，算是给他们一点小小的震撼。&lt;/p&gt;
&lt;p&gt;但局域网的限制太大了，稍微换个网络环境直接抓瞎。如果说以前写的 Boom V2.5 充其量是个“自娱自乐”的局域网小玩具，那前几天闲着没事把它彻底重构出来的 &lt;strong&gt;Boom V3.0&lt;/strong&gt;，可以说已经进化成了一套具备完整云端架构、军工级通讯安全，且极具压迫感的&lt;strong&gt;远程整蛊操控平台&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;今天就来盘一盘，我是怎么把这个针对班级一体机的小脚本，一路“魔改”上云，以及这中间踩过的那些能让人当场砸键盘的“史诗级”天坑。&lt;/p&gt;
&lt;h2&gt;🎯 啥是 Boom V3.0？&lt;/h2&gt;
&lt;p&gt;简单来说，这是一个基于 Python 开发的分布式整蛊工具，现在它的结构分成了两截：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;云端主控中心&lt;/strong&gt;：部署在 Railway 云服务器上的高并发 WebSocket 服务端，自带一个极具黑客风的 Web 控制台。只要有个浏览器，我现在随时随地都能对线上的客户端发号施令，再也不用受限于校园局域网了。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;受害者执行端&lt;/strong&gt;：用 PyInstaller 强行压成的一个完全单文件的 &lt;code&gt;.exe&lt;/code&gt;。纯净、无依赖。把它丢进一体机（或者同学的电脑）双击运行，就会像幽灵一样无痕潜伏。一连上服务器，就能对当前机器执行毁灭性的打击。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;核心武器库大概有这些：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;物理干扰&lt;/strong&gt;：翻转屏幕、疯狂瞬移活动窗口、幽灵打字机。非常适合打断那些正在专心摸鱼看猎奇视频的人。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;系统伪装&lt;/strong&gt;：极其逼真的 Windows 假更新、蓝屏死机 (BSOD)、全屏勒索锁屏。直接让他们以为一体机被自己搞坏了，瞬间慌神。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;精神打击&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;终极 Rickroll&lt;/strong&gt;：强开浏览器播放《Never Gonna Give You Up》，同时瞬间调用底层 API 连按 50 次“音量加”键，物理拉满音量，直接当场社死。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;假系统通知轰炸&lt;/strong&gt;：在右下角伪造极其逼真的 Windows 通知（比如“您的屏幕正在被共享”、“教导处监控已接入”），疯狂施加心理压迫。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;🚀 一些技术上的“升维”&lt;/h2&gt;
&lt;p&gt;为了让这个平台配得上“大杀器”的名号，在技术底层也是下了一番狠功夫的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 架构升维：抛弃局域网，拥抱 WebSocket C2&lt;/strong&gt;
V2 时代最大的痛点就是只能在同一个局域网底下自嗨，只要他们把一体机断网或者连了热点，我就抓瞎了。V3 直接上了 &lt;code&gt;WebSockets&lt;/code&gt; 全双工通信。受害者端加了&lt;strong&gt;指数退避重连算法&lt;/strong&gt;（从 2 秒递增到 120 秒），就算网断了，只要一恢复，被控端就会像幽灵一样自动重新上线并连上我的云端服务器。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 安全加固：绝不让整蛊工具变成肉鸡&lt;/strong&gt;
把这玩意儿丢到公网上，极其容易被各种扫描器嗅探。要是被别人拿去干坏事就麻烦了。为了防身，我给它套了几层装甲：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HMAC-SHA256 动态签名&lt;/strong&gt;：不光连上去要 Token，下发的每一条指令都必须带基于预共享密钥（PSK）的签名，别人想抓包伪造指令？门都没有。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;防爆破机制&lt;/strong&gt;：单 IP 连错 5 次 Token，直接拉黑 10 分钟。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IP 白名单&lt;/strong&gt;：只有在白名单里的 IP，才有资格登录控制台。其他人就算瞎猫碰上死耗子拿到了 Token，连进去也只能当“受害者”。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3. 打包工程化：告别玄学&lt;/strong&gt;
以前往一体机里塞脚本，还要配环境，太容易穿帮。现在写了个 &lt;code&gt;build_private.bat&lt;/code&gt;，把复杂的打包过程彻底傻瓜化。配置和密钥不再硬编码，而是编译前动态生成 &lt;code&gt;temp_config.json&lt;/code&gt; 打进 EXE。外加 &lt;code&gt;--noconsole&lt;/code&gt; 参数，双击后连个黑框都不会闪，完美潜伏。&lt;/p&gt;
&lt;h2&gt;💣 踩坑血泪史&lt;/h2&gt;
&lt;p&gt;牛皮吹完了，接下来就是在这期间踩过的几个能把人逼疯的坑。如果大家也折腾网络开发，一定对这些玄学 bug 感同身受。&lt;/p&gt;
&lt;h3&gt;坑 1：反向代理迷阵与真实 IP 幽灵&lt;/h3&gt;
&lt;p&gt;在搞 IP 防爆破的时候，发现不管谁连进来，服务端识别到的全都是 &lt;code&gt;10.x.x.x&lt;/code&gt; 或者 &lt;code&gt;172.x.x.x&lt;/code&gt; 这种内网 IP。结果就是防爆破一触发，把所有人全给封了。
&lt;strong&gt;原因&lt;/strong&gt;：Railway 的底层是 Envoy 反向代理。Python 默认拿到的永远是代理服务器的 IP。
&lt;strong&gt;解法&lt;/strong&gt;：去读 HTTP 头里的 &lt;code&gt;X-Forwarded-For&lt;/code&gt;。但 Python &lt;code&gt;websockets&lt;/code&gt; 库要拦握手请求很麻烦，如果直接覆盖旧的 header 字典，还会抛 &lt;code&gt;MultipleValuesError&lt;/code&gt;。最后只能用精确捕获异常，&lt;code&gt;del headers[...]&lt;/code&gt; 删干净再赋值，才把真实 IP 扒出来。&lt;/p&gt;
&lt;h3&gt;坑 2：消失的 0KB 脚本与双重回车符&lt;/h3&gt;
&lt;p&gt;Linux 和 Windows 混着开发时，我的 &lt;code&gt;build_private.bat&lt;/code&gt; 到了 Windows 11 里突然报错“本电脑不支持”，文件大小还变成了 0KB。
&lt;strong&gt;原因&lt;/strong&gt;：我在 Linux 下图省事用 &lt;code&gt;sed&lt;/code&gt; 改 DOS 格式的代码，结果行尾被搞成了畸形的 &lt;code&gt;\r\r\n&lt;/code&gt;。这玩意在 Linux 的文本编辑器里完全隐形，但 Windows 的 CMD 一读就当场脑溢血。
&lt;strong&gt;解法&lt;/strong&gt;：老老实实用 &lt;code&gt;sed -i &apos;s/\r//g&apos;&lt;/code&gt; 先把回车符全洗掉，再重新加规范的 &lt;code&gt;\r\n&lt;/code&gt;。跨平台开发，换行符（CRLF vs LF）永远是万恶之源。&lt;/p&gt;
&lt;h3&gt;坑 3：NTFS 锁死玄学&lt;/h3&gt;
&lt;p&gt;在 Linux 下想改挂载的 Windows 盘里的代码，一直报“权限不够”或“只读文件系统”。
&lt;strong&gt;原因&lt;/strong&gt;：Windows 11 的“快速启动”本质上是休眠，关机时会锁死 NTFS 分区的日志。Linux 为了怕把数据搞坏，直接拒绝提供写权限。
&lt;strong&gt;解法&lt;/strong&gt;：Linux 终端执行 &lt;code&gt;sudo ntfsfix /dev/sdX&lt;/code&gt; 强行把脏标记洗掉，重新挂载，世界终于清静了。&lt;/p&gt;
&lt;h2&gt;最后&lt;/h2&gt;
&lt;p&gt;从为了制裁班里放猎奇视频的同学而随手写下的几十行本地脚本，折腾成现在这个麻雀虽小五脏俱全的云端平台。整蛊其实只剩下一个外壳，真正爽的是背后架构设计和解决这些玄学 Bug 的过程。&lt;/p&gt;
&lt;p&gt;如果大家也对开发类似的网络工具感兴趣，上面这些坑希望能帮你们少掉几根头发。不说了，我去班里盯着那一帮刺头，抓两个当小白鼠试试水了。&lt;/p&gt;
</content:encoded></item><item><title>博客折腾日记：个人卡片、评论区与 Telegram 碎碎念接入实录</title><link>https://gr114.com/posts/blog-card-giscus-telegram/</link><guid isPermaLink="true">https://gr114.com/posts/blog-card-giscus-telegram/</guid><description>生命不息折腾不止，给博客加上了游戏化个人卡片、Giscus 评论区，还顺手把 Telegram 频道接进来当碎碎念用了。</description><pubDate>Sun, 21 Jun 2026 13:40:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;说在前头：作为一个管不住手的电子产品和代码折腾爱好者，看到博客哪里不顺眼就总想动两刀。今天花时间把首页那个略显简陋的个人介绍卡片重构了，顺便把一直缺席的评论区给补上了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;一、个人卡片：加点 RPG 元素&lt;/h2&gt;
&lt;p&gt;之前博客的卡片有点太素了，而且在宽屏桌面端还出了点布局 Bug。今天索性把 UI 拆了重写。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;假装很忙的呼吸灯&lt;/strong&gt;：在头像右下角焊了个绿色的呼吸状态灯，标着 &lt;code&gt;CODING&lt;/code&gt;。伪造出一种我 24 小时都在线敲代码的错觉（其实可能在打游戏 /doge/）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;属性面板&lt;/strong&gt;：既然写过“十年游戏史”，干脆就把枯燥的自我介绍搞成 RPG 游戏面板。弄了个 &lt;code&gt;Lv.16 | EXP 85%&lt;/code&gt; 的经验条（对应高一），然后把各种技能强行分到了 &lt;code&gt;ATK&lt;/code&gt;（Pr/Ae/PS）、&lt;code&gt;INT&lt;/code&gt;（C++/Java/Py）和 &lt;code&gt;AGI&lt;/code&gt;（Win/Mac/Lin）三个属性槽里。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;移动端排版&lt;/strong&gt;：顺手把移动端的 DOM 顺序提到了文章列表上方，省得每次要在手机上划半天才能看到我是谁。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;二、给博客加个评论区&lt;/h2&gt;
&lt;p&gt;一个没有评论区的博客是没有灵魂的。
对比了 Waline、Twikoo 这些方案，我最后选了 &lt;strong&gt;Giscus&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;主要原因是：完全免费、零服务器成本，而且基于 GitHub Discussions，自带防垃圾评论属性。唯一的门槛是访客必须有 GitHub 账号，不过考虑到这本来就是个偏技术的博客，问题不大。&lt;/p&gt;
&lt;p&gt;配置其实也就是去官网填几个参数，然后拿到一段 &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; 标签扔进代码里。由于我这个站用了 &lt;code&gt;swup&lt;/code&gt; 做 SPA 无刷新跳转，我还额外加了几个钩子事件去重载脚本，防止跳转下一篇文章时评论区加载失败。&lt;/p&gt;
&lt;p&gt;一顿操作猛如虎，点开本地服务器一看：&lt;strong&gt;评论区加载失败，喜提报错。&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;三、踩坑：官方文档要仔细看&lt;/h2&gt;
&lt;p&gt;在控制台对着报错看了半天，重新核对了两遍 repo ID 也没发现问题。最后回去重读了一遍官方文档，发现人家写得清清楚楚，Giscus 运行必须满足三个条件：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;该仓库是公开的&lt;/strong&gt;（满足）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;giscus app 已安装&lt;/strong&gt;（🚨 等等，这是啥？）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Discussions 功能已在你的仓库中启用&lt;/strong&gt;（满足）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我满脑子都是在自己仓库里点开关，完全忽略了需要去 GitHub 市场给我的仓库安装 Giscus 授权 App。不给权限，它拿头去帮你读写 Discussions 啊。&lt;/p&gt;
&lt;p&gt;去 GitHub Apps 搜一下 &lt;code&gt;giscus&lt;/code&gt;，点个 &lt;code&gt;Install&lt;/code&gt; 授予仓库权限，回过头再刷新，一切正常。&lt;/p&gt;
&lt;h2&gt;四、UI 适配：治好强迫症&lt;/h2&gt;
&lt;p&gt;评论区是跑通了，但 Giscus 默认那股浓烈的 GitHub 原生风，跟我博客这种带点毛玻璃和圆角的风格放在一起，怎么看怎么难受。&lt;/p&gt;
&lt;p&gt;作为理科生，遇到这种 UI 割裂感肯定是不能忍的，所以顺手做了一点微调。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 去掉祖传边框&lt;/strong&gt;
不要用默认的 &lt;code&gt;preferred_color_scheme&lt;/code&gt;。Giscus 其实内置了无边框主题 &lt;code&gt;noborder_light&lt;/code&gt; 和 &lt;code&gt;noborder_dark&lt;/code&gt;。换上这个之后，丑陋的外边框就没了，背景也会变成透明，看起来就像是博客自带的原生组件。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 解决暗黑模式的通信问题&lt;/strong&gt;
因为没用 &lt;code&gt;preferred_color_scheme&lt;/code&gt;，评论区也就没法自动感知系统主题了。如果博客切了暗黑模式，评论区还是个刺眼的白框，那就搞笑了。&lt;/p&gt;
&lt;p&gt;我的解决思路很简单：因为博客切暗黑模式本质上就是在 &lt;code&gt;&amp;lt;html&amp;gt;&lt;/code&gt; 标签上加减 &lt;code&gt;dark&lt;/code&gt; 类名，所以弄个 &lt;code&gt;MutationObserver&lt;/code&gt; 盯着它就行。一旦发生变动，直接通过 &lt;code&gt;postMessage&lt;/code&gt; 给 Giscus 所在的 iframe 发信，命令它当场换装。&lt;/p&gt;
&lt;p&gt;代码大概长这样：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;script&amp;gt;
    // 判断当前到底是白天还是黑夜
    function getGiscusTheme() {
        return document.documentElement.classList.contains(&apos;dark&apos;) ? &apos;noborder_dark&apos; : &apos;noborder_light&apos;;
    }

    // 跨域通讯，通知 iframe 里的 Giscus 切换主题
    function syncGiscusTheme() {
        const iframe = document.querySelector(&apos;iframe.giscus-frame&apos;);
        if (!iframe) return;
        iframe.contentWindow.postMessage(
            { giscus: { setConfig: { theme: getGiscusTheme() } } },
            &apos;https://giscus.app&apos;
        );
    }

    // 弄个监工，死盯 &amp;lt;html&amp;gt; 标签的 class 变化
    const observer = new MutationObserver((mutations) =&amp;gt; {
        mutations.forEach((mutation) =&amp;gt; {
            if (mutation.attributeName === &apos;class&apos;) {
                syncGiscusTheme(); // 检测到切换，立马发包
            }
        });
    });
    observer.observe(document.documentElement, { attributes: true, attributeFilter: [&apos;class&apos;] });
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;实测效果不错，点右上角切换模式的时候，评论区基本上也是瞬间跟着变黑变白，强迫症终于舒服了。&lt;/p&gt;
&lt;h2&gt;五、引入 Telegram 当“碎碎念”后端&lt;/h2&gt;
&lt;p&gt;写长文太累，平时很多零碎的想法发推特又觉得没有自己的数据主权。于是盯上了 Telegram 频道，打算把它当成一个微型的无头 CMS（Headless CMS），拉取数据到博客里作为“碎碎念”。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 拒绝纯前端抓取&lt;/strong&gt;
最省事的做法其实是开个单独的子页面，直接嵌个 iframe 或者用纯前端拉数据。但这么做体验不好：我想把碎碎念像朋友圈一样，直接混排在首页的长篇文章列表里。
这就导致我得对博客动大刀：把原本极速纯静态（SSG）的首页，硬生生拉拽成了服务端渲染（SSR）模式。在 &lt;code&gt;astro.config.mjs&lt;/code&gt; 里开启了 &lt;code&gt;hybrid&lt;/code&gt; 模式，每次访问首页时，让 Vercel 服务端在后台实时扒取 &lt;code&gt;t.me/s/频道名&lt;/code&gt; 的网页 DOM，用 &lt;code&gt;cheerio&lt;/code&gt; 提纯出文字和图片，再和长文章按时间重新排序合并。&lt;/p&gt;
&lt;p&gt;在代码里，只需要给首页路由打个 SSR 的标记，并手写分页逻辑：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// src/pages/[...page].astro
export const prerender = false; // 强行关闭预渲染，开启 SSR

const allBlogPosts = await getSortedPosts();
const typedPosts = allBlogPosts.map(p =&amp;gt; ({ ...p, _type: &apos;post&apos; }));

// 实时抓取最新的 Telegram 频道数据
const memos = await fetchTelegramChannel(&apos;greenroc114life&apos;);
const typedMemos = memos.map(m =&amp;gt; ({ ...m, _type: &apos;memo&apos; }));

// 两头数据一锅炖，按发布时间降序排序
const combinedItems = [...typedPosts, ...typedMemos].sort((a, b) =&amp;gt; {
    // ...排序逻辑略
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2. 踩坑：Telegram 祖传防盗链&lt;/strong&gt;
DOM 解析本身没啥难度，无非就是用正则过滤几个 class，但这期间结结实实踩了个坑：图片防盗链。
把解析出来的 &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; 标签直接扔进页面里，文字正常渲染，图片全裂了。控制台一看，全部报 &lt;code&gt;403 Forbidden&lt;/code&gt;。Telegram 显然对外部域名的直接请求进行了防盗链拦截。
解决方法简单粗暴：套个免费的公共图片代理（比如 &lt;code&gt;wsrv.nl&lt;/code&gt;）。我写了个替换逻辑，把所有 Telegram 的图片链接前缀挂到代理域名后面。顺带还能在 URL 后面加参数，让代理节点帮我压缩一下图片体积，省下一点客户端流量。&lt;/p&gt;
&lt;p&gt;几行正则直接药到病除：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// 把图片 URL 塞进代理节点，顺手限制宽度 800px 以减轻加载压力
const imageProxyUrl = &apos;https://wsrv.nl/?url=&apos;;

// 从 DOM 里提纯出的 style 包含 background-image: url(&apos;...&apos;)
const bgMatch = style.match(/url\([&apos;&quot;]?(.*?)[&apos;&quot;]?\)/);
if (bgMatch) {
    let imgUrl = bgMatch[1];
    // 强制走代理绕过 403
    imgUrl = imageProxyUrl + encodeURIComponent(imgUrl) + &apos;&amp;amp;w=800&apos;;
    images.push(imgUrl);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;3. 图片也得有尊严：接管原生缩放&lt;/strong&gt;
数据跑通后，发现从 Telegram 拉下来的图片没法放大。博客本身自带了 PhotoSwipe 插件，提供原生的点按呼出沉浸式缩放。
为了让两边体验对齐，我翻了一下博客底层布局逻辑，发现只要给外层容器套上一个 &lt;code&gt;custom-md&lt;/code&gt; 的 class，PhotoSwipe 就会自动把这块区域识别为受控 DOM。加上这个类名之后，碎碎念里的梗图终于也能正常双击放大了。&lt;/p&gt;
&lt;p&gt;组件里的代码大致就长这样，极其简单：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;!-- 加上 custom-md，假装这是通过 Markdown 渲染出来的内容 --&amp;gt;
&amp;lt;div class=&quot;custom-md grid gap-2 grid-cols-2 mt-4&quot;&amp;gt;
    {memo.images.map(img =&amp;gt; (
        &amp;lt;a href={img.replace(&apos;&amp;amp;w=800&apos;, &apos;&apos;)} target=&quot;_blank&quot;&amp;gt;
            &amp;lt;img src={img} class=&quot;w-full h-auto object-cover&quot; loading=&quot;lazy&quot; /&amp;gt;
        &amp;lt;/a&amp;gt;
    ))}
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;六、Vercel 部署连环踩坑&lt;/h2&gt;
&lt;p&gt;本来以为本地跑通了就可以直接推上云端享受了，结果 Vercel 直接给我甩了两个大嘴巴子，连续两次构建失败。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一坑：&lt;code&gt;astro-compress&lt;/code&gt; 插件挤爆内存&lt;/strong&gt;
报错日志直接输出：&lt;code&gt;✘ [ERROR] The build was canceled&lt;/code&gt;，前文还附带了 &lt;code&gt;Error: Cannot compress file ...&lt;/code&gt;。
查了一下才发现，博客底层集成了一个叫 &lt;code&gt;astro-compress&lt;/code&gt; 的压缩插件。因为我把首页改成了 SSR，Vite 打包出来的底层 JS 文件变得极其复杂，超出了这个插件里 &lt;code&gt;terser&lt;/code&gt; 的解析能力，直接把 Vercel 免费版的构建内存给干崩了。
&lt;strong&gt;解法&lt;/strong&gt;：Vite 引擎自己在打包时就已经对 JS 做了极高比例的压缩，再套一层二次压缩反而容易翻车。果断去 &lt;code&gt;astro.config.mjs&lt;/code&gt; 里把它的 JS 压缩通道强制掐断：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Compress({
  CSS: false,
  Image: false,
  JavaScript: false, // 禁用二次压缩，防止 Vercel 炸内存
})
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;第二坑：Node.js 运行时版本过时&lt;/strong&gt;
内存不炸了，Vercel 又报了个新错：&lt;code&gt;The following Serverless Functions contain an invalid &quot;runtime&quot;: - _render (nodejs18.x)&lt;/code&gt;。
Vercel 最近开始强制要求新建的 Serverless 函数必须基于 Node 20 及以上。而为了兼容当前的 Astro 版本，我用了相对旧一点的 &lt;code&gt;@astrojs/vercel&lt;/code&gt; 适配器。这个老适配器拿不准环境，直接 fallback 到了 &lt;code&gt;nodejs18.x&lt;/code&gt;，结果被 Vercel 云端无情拦截。
&lt;strong&gt;解法&lt;/strong&gt;：在 &lt;code&gt;package.json&lt;/code&gt; 里显式声明 &lt;code&gt;engines&lt;/code&gt;，按着 Vercel 的头让它用 Node 20 跑构建，强制让适配器生成合规的配置文件。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;engines&quot;: {
    &quot;node&quot;: &quot;20.x&quot;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;七、最后&lt;/h2&gt;
&lt;p&gt;现在文章底部有评论框了（全量支持 Markdown），首页的时间线也终于充实了起来。如果你也碰巧在搭博客，或者遇到了和我一样的报错，希望这篇记录能帮到你。&lt;/p&gt;
&lt;p&gt;大家有什么想吐槽的，直接在下面评论区见。&lt;/p&gt;
</content:encoded></item><item><title>从锤子到轻拟物，美学的轮回与惋惜</title><link>https://gr114.com/posts/smartisan-aesthetics/</link><guid isPermaLink="true">https://gr114.com/posts/smartisan-aesthetics/</guid><description>老罗赶快回来做手机</description><pubDate>Tue, 26 Aug 2025 10:36:28 GMT</pubDate><content:encoded>&lt;p&gt;在中国智能手机的发展史上，锤子科技无疑是一个充满传奇色彩的存在。&lt;/p&gt;
&lt;h2&gt;一、锤子科技的前世今生&lt;/h2&gt;
&lt;p&gt;2012 年，罗永浩创立了锤子科技，怀揣着“改变世界”的理想，希望能做出一款极致的、兼具人文关怀与设计美学的手机。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;2013 年&lt;/strong&gt;，Smartisan OS 横空出世，凭借其拟物化的图标和细节，被誉为“最美的手机系统”。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2014 年&lt;/strong&gt;，锤子科技推出了第一款手机 Smartisan T1，虽然销量有限，但在用户心中留下了“工艺与情怀”的印记。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2016 年&lt;/strong&gt;，锤子推出了“坚果”系列手机，试图用更亲民的价格打开市场。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2017 年&lt;/strong&gt;，坚果 Pro 2 成为爆款，锤子科技迎来高光时刻。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2018 年&lt;/strong&gt;，坚果 R1 与 TNT 工作站发布，虽然理念超前，但产品体验与资金链危机让锤子逐渐走向低谷。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2019 年&lt;/strong&gt;，字节跳动收购了锤子部分团队与专利。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2020 年&lt;/strong&gt;，坚果 R2 发布，这是最后一款锤子手机，至此锤子科技正式淡出舞台。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;短短八年，锤子从高调登场到悄然谢幕，留给粉丝们无尽的惋惜。它未能改变行业格局，却改变了无数人对“设计与产品”的理解。&lt;/p&gt;
&lt;h2&gt;二、拟物化设计与锤子&lt;/h2&gt;
&lt;p&gt;锤子之所以能在一众手机品牌中脱颖而出，很大程度上是因为其独特的 &lt;strong&gt;拟物化设计哲学&lt;/strong&gt;。
在那个 iOS7 和 Material Design 掀起扁平化大潮的年代，锤子却坚持把 &lt;strong&gt;按钮做得像按钮，开关做得像开关&lt;/strong&gt;，把生活中真实的质感与细节带进数字世界。&lt;/p&gt;
&lt;p&gt;很多人批评拟物化“繁琐”“过时”，但锤子用户却觉得那是 &lt;strong&gt;温度与人情味的体现&lt;/strong&gt;。在冰冷的科技洪流里，拟物化的设计让人感到熟悉、安心，仿佛在和一件“生活用品”而非“冷冰冰的工具”打交道。&lt;/p&gt;
&lt;h2&gt;三、轻拟物的回潮&lt;/h2&gt;
&lt;p&gt;时间走到今天，设计趋势再一次轮回。2020 年以后，随着“Neumorphism”（新拟物/轻拟物）的兴起，仿佛让人看到了锤子美学的影子。
轻拟物不再像早期拟物那样极尽写实，而是以 &lt;strong&gt;柔和的阴影、立体的质感&lt;/strong&gt; 呈现出一种微妙的真实感。它既保持了简洁与现代，又保留了一丝温润和细腻。&lt;/p&gt;
&lt;p&gt;从 iOS 小组件、到网页 UI、再到各类设计社区的作品，轻拟物正在悄然流行。对于曾经喜欢锤子拟物化风格的人来说，这不仅是一次设计潮流的回归，更像是一种 &lt;strong&gt;情怀的延续与安慰&lt;/strong&gt;。&lt;/p&gt;
&lt;h2&gt;结语&lt;/h2&gt;
&lt;p&gt;锤子科技已经成为历史，但它留下的设计美学与用户情感，却在轻拟物的浪潮里重新焕发光彩。或许这就是美学的魅力：它不会真正消亡，只会以另一种方式回到我们身边。&lt;/p&gt;
&lt;p&gt;当我们在屏幕上看到一个带有细腻阴影、仿佛能触摸到质感的按钮时，心里或许会突然响起一句话：
&lt;strong&gt;“如果锤子还在，或许今天的轻拟物就是它的舞台。”&lt;/strong&gt;&lt;/p&gt;
</content:encoded></item><item><title>百词斩单词机 ACE-1S 使用体验：小巧便携的“外星科技”</title><link>https://gr114.com/posts/baicizhan-ace-1s/</link><guid isPermaLink="true">https://gr114.com/posts/baicizhan-ace-1s/</guid><description>我的背单词设备</description><pubDate>Mon, 25 Aug 2025 15:03:28 GMT</pubDate><content:encoded>&lt;p&gt;如果说手机是万能的学习工具，那单词机就是一台专心致志的“小怪兽”。我最近入手了百词斩单词机 &lt;strong&gt;ACE-1S&lt;/strong&gt; 版本，这台小小的设备让我对“背单词”这件事有了新的感受。今天就来聊聊它的优缺点，顺便也结合网上的信息，给大家做个分享。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;一、外观与便携性：小巧到随身携带&lt;/h2&gt;
&lt;p&gt;ACE-1S 的第一印象就是：&lt;strong&gt;小！&lt;/strong&gt;
它大概只有巴掌大小，随手塞进书包侧袋，甚至口袋里也完全没问题。重量很轻，跟两块橡皮差不多，几乎没有负担。&lt;/p&gt;
&lt;p&gt;更特别的是这个版本采用了 &lt;strong&gt;透明机身&lt;/strong&gt;，里面的元件一览无余，给人一种“科技感爆棚”的感觉。现在很多厂商都在往无孔化发展，而它偏偏还保留了一个 &lt;strong&gt;3.5mm 耳机孔&lt;/strong&gt;——直接暴打苹果好吧~~(Only Apple Can Do)~~&lt;/p&gt;
&lt;p&gt;这种小巧 + 高颜值的设计，的确很能打动学生党和数码爱好者。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;二、护眼与学习体验：碎片时间的好伙伴&lt;/h2&gt;
&lt;p&gt;ACE-1S 配备了一块 &lt;strong&gt;墨水屏&lt;/strong&gt;，不用担心蓝光伤眼，长时间盯着看也不累。字体显示清晰，翻页速度在墨水屏里算比较快的。
在使用场景上，它最适合在 &lt;strong&gt;碎片时间&lt;/strong&gt;里背单词：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;课间休息五分钟&lt;/li&gt;
&lt;li&gt;等车、走路时&lt;/li&gt;
&lt;li&gt;睡前戴上耳机听一听例句&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不知不觉间，零零碎碎的时间就能攒下一大波词汇量，这一点比打开手机刷 APP 要更“纯粹”，不会被信息流、通知打断。&lt;/p&gt;
&lt;p&gt;此外，它可以通过 &lt;strong&gt;百词斩 App 同步词书&lt;/strong&gt;，包括四六级、考研、雅思托福等，甚至还有初高中教材的词汇，覆盖面很全。同步之后，即便不联网也能继续学习，使用上比较安心。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;三、系统与功能：简洁但有些遗憾&lt;/h2&gt;
&lt;p&gt;这台设备的系统设计很简洁，界面清爽，不花里胡哨。对于背单词来说，确实够用，但也存在一些 &lt;strong&gt;不足&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;没有遗忘曲线&lt;/strong&gt;
百词斩 App 的一大亮点是基于艾宾浩斯遗忘曲线的复习提醒，但在单词机上并没有实现。意味着你得自己多留意复习，不能完全依赖系统推送。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;反应偶尔迟钝&lt;/strong&gt;
虽然墨水屏翻页已经算快，但有时还是会有轻微卡顿，操作稍慢一拍，体验上不如手机流畅。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;高级自定义缺失&lt;/strong&gt;
一些深度用户习惯的功能，比如完全自建词库、灵活的复习模式，在单词机上并不完善。如果你对学习方式要求很高，可能会觉得它稍显单薄。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;四、续航与实用性：拿起来就能学&lt;/h2&gt;
&lt;p&gt;硬件配置上，ACE-1S 内置约 750mAh 电池，搭配墨水屏的省电特性，一次充电能撑 &lt;strong&gt;1–2 周&lt;/strong&gt;，完全不用像手机一样每天插线。随手拿起来就能用，哪怕出门几天忘记带充电器也不慌。&lt;/p&gt;
&lt;p&gt;而且它支持耳机学习，单词和例句都可以直接播放音频。对于听力训练和“磨耳朵”，还是蛮有帮助的。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;五、总结：谁适合 ACE-1S？&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;优点：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;小巧轻便，随身携带&lt;/li&gt;
&lt;li&gt;透明机身，颜值高、科技感足&lt;/li&gt;
&lt;li&gt;墨水屏护眼，支持 3.5mm 耳机&lt;/li&gt;
&lt;li&gt;系统简洁，不会被打扰&lt;/li&gt;
&lt;li&gt;App 同步词库，内容全面&lt;/li&gt;
&lt;li&gt;续航持久，出门几天不用担心&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;缺点：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;没有遗忘曲线辅助&lt;/li&gt;
&lt;li&gt;偶尔反应迟缓&lt;/li&gt;
&lt;li&gt;缺乏高级自定义功能&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想摆脱手机干扰，专心背单词的学生党&lt;/li&gt;
&lt;li&gt;经常有碎片化时间，想随手拿出来学习的人&lt;/li&gt;
&lt;li&gt;喜欢数码小玩意，对透明机身有好感的玩家&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那 ACE-1S 会是一个很合适的选择。&lt;/p&gt;
&lt;p&gt;但如果你追求极致的复习算法、个性化功能，或者习惯用 App 灵活调整学习模式，那它可能没法完全替代手机。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;总的来说，ACE-1S 更像是一台 &lt;strong&gt;“纯粹的背单词工具”&lt;/strong&gt;。它不会带来花里胡哨的功能，却能让你专注于单词本身。对于容易被手机分心的同学来说，这点价值其实不小。&lt;/p&gt;
&lt;p&gt;毕竟，能让你安心多记一个单词，它的任务就完成了。&lt;/p&gt;
</content:encoded></item><item><title>Gran Velocita – Real Driving 体验分享：口袋里的“拟真赛道”，差点让我心肌梗塞</title><link>https://gr114.com/posts/gran-velocita-review/</link><guid isPermaLink="true">https://gr114.com/posts/gran-velocita-review/</guid><description>新电动哦！</description><pubDate>Mon, 25 Aug 2025 10:19:28 GMT</pubDate><content:encoded>&lt;p&gt;在手机上玩赛车游戏，大多数时候就图个“快感”：一脚油门，风驰电掣，再来个漂移，帅就完事了。
但最近我遇到了一款不走寻常路的作品 —— &lt;strong&gt;Gran Velocita – Real Driving&lt;/strong&gt;。它不像其他手游那样“飙车+氮气”，而是一本正经地和你讲解轮胎磨损、空气动力学、刹车衰退……一句话：这是移动端里少有的“硬核模拟”。&lt;/p&gt;
&lt;p&gt;玩了一阵子，我的感觉可以概括为：**真实到想鼓掌，难点到想砸手机。**😂&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;模拟深度：手机游戏里的“小赛车学”&lt;/h2&gt;
&lt;p&gt;Gran Velocita 的核心卖点就是“硬核真实”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;物理系统&lt;/strong&gt;：轮胎会发热、磨损，悬挂会变形，引擎能累出病，甚至刹车都能“烧退”。开着开着，你就会发现这不是手游，这是门“物理实验”。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;赛车类型&lt;/strong&gt;：从街车到 GT4、GT3，再到 LMP、F4、F1，基本涵盖了赛车迷的所有口味。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;调校系统&lt;/strong&gt;：能改的东西一大堆——外倾角、阻尼、空气动力、传动比……调得好，车子乖乖听话；调不好，可能第一圈就直接“去见上帝”。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;总之，它不像是游戏，更像是把赛车模拟器硬塞进了一部手机。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;我的实测感受：又爱又恨&lt;/h2&gt;
&lt;h3&gt;✅ 让我惊喜的地方&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;物理体验优秀&lt;/strong&gt;
过弯、加速时那种“车身反馈”真的比大多数手游真实。尤其开 GT3 和 F1，心跳都快跟车速同步了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;调校自由度高&lt;/strong&gt;
可以像赛车工程师一样折腾参数，调来调去就像在参加 F1 工程师会议。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;iOS 优化还不错&lt;/strong&gt;
我用 iOS 玩的时候帧率稳定，流畅度能打 8.5 分。安卓玩家：别急，我后面要替你们发声。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h3&gt;❌ 让我吐槽的地方&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;转向手感偏重&lt;/strong&gt;
转向就像在跟车子拔河，方向盘没抖，手先抖了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;油门不够线性&lt;/strong&gt;
油门就像“开关”，不是 0 就是 100，中间几乎没过渡。出弯想轻点油？不存在的，非要你“秒变车神 or 秒变翻车”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;新手体验：毁灭打击&lt;/strong&gt;
想象一下：你刚开着丰田 GR86 兴致勃勃上赛道，结果下一秒发现对手是 Ferrari F40。emmm……谢谢，游戏直接让我怀疑人生。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;安卓优化拉胯&lt;/strong&gt;
安卓玩家表示：“这帧数是赛车还是幻灯片？”甚至偶尔还会闪退，玩得人心惊胆战。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;购买内容丢失 Bug&lt;/strong&gt;
重装游戏后，你买过的东西可能会凭空消失。那一刻，我不仅失去了 DLC，更失去了信任。🙃&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2&gt;开发者的努力 &amp;amp; 游戏的未来&lt;/h2&gt;
&lt;p&gt;其实游戏还在不断更新。最近的补丁修复了物理系统 Bug，调整了在线匹配，还修了点小毛病。未来可能还会加上天气系统、耐力赛，甚至更专业的在线联赛。&lt;/p&gt;
&lt;p&gt;说白了，这款游戏还在成长阶段，优点很耀眼，缺点也很扎眼。只要开发者持续打磨，它完全有潜力成为移动端的“赛车模拟天花板”。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;总结：值得期待的“折磨型好游戏”&lt;/h2&gt;
&lt;p&gt;如果要给 Gran Velocita 下个定义，那就是：&lt;strong&gt;一款能让赛车迷兴奋，顺便让普通玩家气到删游戏的作品&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对赛车模拟感兴趣？它能让你在手机上体验赛车工程学的魅力。&lt;/li&gt;
&lt;li&gt;想轻松玩玩？那准备好被对手吊打、被 Bug 打击、被帧数支配。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我给它的评价是：&lt;strong&gt;“潜力爆表，但现在还欠火候。”&lt;/strong&gt;
如果未来能解决转向手感、油门线性、新手匹配和安卓优化的问题，再加上修复购买丢失的 Bug，那么它一定能成为赛车迷的必玩之选。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;👉 最后一句：这游戏玩起来，真的有种“赛车模拟器搬进口袋”的感觉。就是……别一边玩一边摔手机，修屏幕的钱可不便宜。🤣&lt;/p&gt;
</content:encoded></item><item><title>霓虹闪烁的未来感：浅谈 Synthwave 及相关音乐风格</title><link>https://gr114.com/posts/synthwave-intro/</link><guid isPermaLink="true">https://gr114.com/posts/synthwave-intro/</guid><description>这个暑假我喜欢上了Synthwave这种音乐风格，这篇文章就来谈一谈。</description><pubDate>Sun, 24 Aug 2025 10:10:23 GMT</pubDate><content:encoded>&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;在浩瀚的电子音乐宇宙中，有一个特别的分支，它既让人感到怀旧，又充满未来幻想。它让人联想到霓虹灯闪烁的都市夜景、复古跑车的轰鸣、录像带与街机游戏、科幻电影的配乐与赛博朋克的氛围。这种音乐就是 &lt;strong&gt;Synthwave（合成波）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;近年来，Synthwave 不仅在音乐圈子里受到关注，还逐渐渗透到游戏、影视、时尚与视觉艺术中，成为了一种跨领域的文化符号。本文将带你深入了解 Synthwave 及其相关音乐风格，从历史根源、音乐特点，到它的分支流派、代表音乐人，以及它背后所承载的文化意象。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;一、Synthwave 的起源与历史背景&lt;/h2&gt;
&lt;h3&gt;1.1 20 世纪 80 年代的启蒙&lt;/h3&gt;
&lt;p&gt;Synthwave 的灵感来源可以追溯到 &lt;strong&gt;20 世纪 80 年代的电子音乐与电影配乐&lt;/strong&gt;。在那个年代，合成器逐渐普及，成为流行音乐和电影工业中不可或缺的乐器。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;电影配乐的影响&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Vangelis 为《银翼杀手》（1982）创作的原声音乐&lt;/strong&gt;，奠定了“未来都市+电子音色”的基调。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;John Carpenter&lt;/strong&gt; 以极简的合成器音色打造了许多恐怖、科幻电影的氛围。&lt;/li&gt;
&lt;li&gt;这些音乐充满冷冽的未来感，却又带有情绪化的浪漫，为后来 Synthwave 的诞生埋下了伏笔。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;流行乐与电子舞曲&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;80 年代的流行乐人（如 Depeche Mode、A-ha）广泛使用合成器。&lt;/li&gt;
&lt;li&gt;Disco 与电子舞曲的兴起，也让“电子音色”逐渐走入大众审美。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以说，Synthwave 本质上是对 &lt;strong&gt;80 年代“未来幻想”的一次现代再造&lt;/strong&gt;。&lt;/p&gt;
&lt;h3&gt;1.2 2000 年代的复兴&lt;/h3&gt;
&lt;p&gt;虽然 80 年代合成器音乐繁荣，但到了 90 年代，电子音乐逐渐向 Rave、Trance、Techno 等更“现代”的风格转变。Synthwave 真正作为一个独立风格出现，是在 2000 年代。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;先锋人物&lt;/strong&gt;：法国音乐人 &lt;strong&gt;Kavinsky&lt;/strong&gt;、&lt;strong&gt;College&lt;/strong&gt; 等开始尝试把 80 年代的音色和视觉符号重新包装。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;转折点&lt;/strong&gt;：Kavinsky 的《Nightcall》被选入 2011 年电影《Drive》（亡命驾驶）原声带，成为 Synthwave 的里程碑式作品。那种夜色高速公路的画面感，让观众第一次意识到这种风格的独特魅力。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;此后，越来越多独立音乐人加入 Synthwave 的创作，让它从小众的网络文化逐渐扩展到更广泛的听众群体。&lt;/p&gt;
&lt;h3&gt;1.3 网络与亚文化的助力&lt;/h3&gt;
&lt;p&gt;Synthwave 的崛起离不开 &lt;strong&gt;互联网&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;YouTube 与 Bandcamp&lt;/strong&gt; 成为主要传播渠道。许多 Synthwave 歌曲通过“Neon Drive Mix”“Cyberpunk Mix”这样的合集视频传播，搭配霓虹、城市、动漫等画面。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;复古视觉艺术&lt;/strong&gt;（像素风、VHS 效果、激光网格地平线）在 Tumblr、DeviantArt 上兴起，与音乐相互成就。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;独立游戏与影视剧&lt;/strong&gt;（如《Hotline Miami》《Stranger Things》）也大量使用 Synthwave 元素，使其迅速被更多人接受。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;二、Synthwave 的音乐特征&lt;/h2&gt;
&lt;p&gt;Synthwave 有着鲜明的音乐元素，通常包括：&lt;/p&gt;
&lt;h3&gt;2.1 音色&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;模拟合成器音色&lt;/strong&gt;：Moog、Roland Juno、Yamaha DX7 等经典设备的复刻或采样。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;鼓机节奏&lt;/strong&gt;：常用 TR-808、TR-909 等鼓机音色，带有复古电子感。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pad 与 Lead&lt;/strong&gt;：大面积的氛围铺底（Pad）和明亮的旋律声部（Lead），共同营造出“空旷又充满张力”的听感。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2.2 节奏与旋律&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;节奏通常为 80-120 BPM，不像 Techno 那样快速，而是更偏向于舒适的中速节奏。&lt;/li&gt;
&lt;li&gt;旋律感强，常常带有浪漫、忧郁甚至史诗般的氛围。&lt;/li&gt;
&lt;li&gt;和声结构较为简洁，以便突出氛围和情绪。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2.3 情绪与画面感&lt;/h3&gt;
&lt;p&gt;Synthwave 的独特魅力在于它的 &lt;strong&gt;画面感&lt;/strong&gt;。它不是冷冰冰的电子音乐，而是带有浓厚情绪色彩：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;浪漫、怀旧、孤独&lt;/li&gt;
&lt;li&gt;霓虹都市、未来幻想&lt;/li&gt;
&lt;li&gt;高速公路、夜晚的旅行感&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种“听觉-视觉”的结合，正是它吸引听众的重要原因。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;三、相关音乐风格与分支&lt;/h2&gt;
&lt;p&gt;Synthwave 并非单一风格，而是衍生出多个分支：&lt;/p&gt;
&lt;h3&gt;3.1 Retrowave（复古波）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;更强调 &lt;strong&gt;复古怀旧&lt;/strong&gt;，直接借鉴 80 年代流行乐、合成器音乐。&lt;/li&gt;
&lt;li&gt;氛围更温暖、轻快，常带有正能量的色彩。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3.2 Outrun&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;以街机赛车游戏《OutRun》命名。&lt;/li&gt;
&lt;li&gt;节奏更快、律动更强，强调 &lt;strong&gt;驾驶感&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;非常适合作为夜间公路驾驶的背景音乐。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3.3 Darksynth&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;偏向阴暗、厚重，常结合工业、金属元素。&lt;/li&gt;
&lt;li&gt;代表音乐人：&lt;strong&gt;Perturbator&lt;/strong&gt;、&lt;strong&gt;Carpenter Brut&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;氛围往往像恐怖片配乐，适合赛博朋克、反乌托邦的主题。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3.4 Chillwave&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;节奏更慢，氛围梦幻朦胧。&lt;/li&gt;
&lt;li&gt;更接近 Lo-Fi、Ambient，常常给人夏日下午的惬意感。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;3.5 Vaporwave&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;与 Synthwave 并列常被提及，但更多是一种 &lt;strong&gt;艺术风格&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;核心是采样 80、90 年代广告、商业音乐，进行减速、切割，营造超现实的效果。&lt;/li&gt;
&lt;li&gt;它带有网络迷因文化和讽刺意味。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;四、代表性音乐人与作品&lt;/h2&gt;
&lt;p&gt;如果你想深入体验 Synthwave，可以从以下音乐人入手：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kavinsky&lt;/strong&gt; —— 法国音乐人，《Nightcall》是入门之作。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Perturbator&lt;/strong&gt; —— 黑暗风格代表，作品充满赛博朋克气息。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Carpenter Brut&lt;/strong&gt; —— 结合金属与电子，舞台表现力极强。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Midnight&lt;/strong&gt; —— 偏流行化，旋律浪漫，歌曲里常加入人声。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FM-84&lt;/strong&gt; —— 旋律优美，带有复古浪漫的气息。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gunship&lt;/strong&gt; —— 视觉与音乐结合紧密，MV 常有赛博朋克风格。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些音乐人共同塑造了 Synthwave 的多样面貌，从怀旧浪漫到暗黑未来，应有尽有。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;五、Synthwave 的视觉文化&lt;/h2&gt;
&lt;p&gt;Synthwave 与 &lt;strong&gt;视觉艺术&lt;/strong&gt; 密不可分。几乎所有相关音乐的封面、MV、现场舞美，都有鲜明的视觉符号：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;配色&lt;/strong&gt;：紫红色、蓝色、霓虹光效。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;元素&lt;/strong&gt;：落日、跑车、激光网格、摩天大楼、VHS 扫描线。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;风格&lt;/strong&gt;：像素艺术、3D 渲染、复古海报。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种“音画一体”的体验，让 Synthwave 不仅仅是音乐，更是一种文化氛围。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;六、听众群体与文化意象&lt;/h2&gt;
&lt;p&gt;Synthwave 吸引的听众往往分为几类：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;80 后、90 后&lt;/strong&gt;：对录像带、街机、老游戏机有真实记忆。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;年轻一代&lt;/strong&gt;：虽然没经历过 80 年代，但通过 Synthwave 体验到一种“虚拟怀旧”。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;赛博朋克文化爱好者&lt;/strong&gt;：喜欢科幻、未来都市题材的人。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Synthwave 承载的文化意象：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对过去的怀念&lt;/li&gt;
&lt;li&gt;对未来的幻想&lt;/li&gt;
&lt;li&gt;对孤独与浪漫的共鸣&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它既是“复古”，也是“未来”，是一种跨越时间的美学体验。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;七、Synthwave 的未来&lt;/h2&gt;
&lt;p&gt;随着流媒体、游戏与影视的进一步发展，Synthwave 可能会：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;与 &lt;strong&gt;游戏配乐&lt;/strong&gt; 深度结合，营造沉浸式体验。&lt;/li&gt;
&lt;li&gt;与 &lt;strong&gt;视觉艺术、虚拟现实&lt;/strong&gt; 融合，成为跨媒体的综合艺术。&lt;/li&gt;
&lt;li&gt;继续在 &lt;strong&gt;独立音乐圈&lt;/strong&gt; 保持活力，吸引更多创作者加入。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Synthwave 的魅力，正在于它永远停留在那个“想象中的 80 年代未来”。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;结语&lt;/h2&gt;
&lt;p&gt;Synthwave 并不仅仅是一种音乐风格，它是一种 &lt;strong&gt;文化现象&lt;/strong&gt;。它把 80 年代的浪漫与未来的幻想结合在一起，让我们在霓虹与电子音色中，既回望过去，又畅想未来。&lt;/p&gt;
&lt;p&gt;当夜幕降临，不妨戴上耳机，播放一首 Synthwave，让自己沉浸在那条永远通向未来的霓虹公路上。&lt;/p&gt;
</content:encoded></item><item><title>联想TB-X605FC平板备份&amp;刷机</title><link>https://gr114.com/posts/lenovo-tb-x605fc-flash/</link><guid isPermaLink="true">https://gr114.com/posts/lenovo-tb-x605fc-flash/</guid><description>平板备份刷机</description><pubDate>Wed, 18 Jun 2025 11:10:10 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;这个教程仅仅在&lt;em&gt;联想TB-X605FC&lt;/em&gt;上测试过，理论上来说只要是骁龙芯片，找对了刷机包和触点就能用&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;注意：本教程需要拆机&lt;/h2&gt;
&lt;h2&gt;准备工作&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;拆机片（或者是你的手指甲）&lt;/li&gt;
&lt;li&gt;一台电脑&lt;/li&gt;
&lt;li&gt;你的平板&lt;/li&gt;
&lt;li&gt;一根牢固的数据线&lt;/li&gt;
&lt;li&gt;一个镊子（只要是能短接的金属物品都可以）&lt;/li&gt;
&lt;li&gt;软件及刷机包&lt;/li&gt;
&lt;li&gt;勤劳的双手，智慧的大脑&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;第一步：拆机&lt;/h2&gt;
&lt;p&gt;首先把平板关机，从边角处（或者是你觉得好拆的地方）先扣开一个角
&lt;img src=&quot;https://alist.gr114.com/d/covers/post-dif1/p1.png?sign=ha9Dl-gjhC6O--rEUh80Tcm2foKKFx4PdaJoIvezKKE=:0&quot; alt=&quot;拆机&quot; title=&quot;拆机&quot; /&gt;
然后沿着这个角把所有的塑料卡扣一一掰开（注意保护音量键和开机键，这俩在掰壳子的时候会掉下来，注意保存好他们），下面是拆开之后的样子
&lt;img src=&quot;https://alist.gr114.com/d/covers/post-dif1/p2.png?sign=2wLdu-zx-FL5Vs7xOEDfqpYT9eVYtE1icFng4I53JX0=:0&quot; alt=&quot;拆机之后&quot; title=&quot;拆机之后&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;第二步：下载软件并激活&lt;/h2&gt;
&lt;p&gt;下载链接里的三个东西（驱动和刷机软件）&lt;a href=&quot;https://alist.gr114.com/d/covers/post-dif1/vivo9008drivers.exe?sign=IH_L4io_WZsF2jKxBYE5Yv2dgvjvnK5aA2g0MHLXZHY=:0&quot;&gt;驱动&lt;/a&gt;&lt;a href=&quot;https://alist.ahhf45.top/d/covers/post-dif1/MiKo_Loder%20Pro.zip?sign=xAhfndJ5tBEWQapDSipPc_lc7nXy2dk_xwtTCImZND8=:0&quot;&gt;Miko工具&lt;/a&gt; &lt;a href=&quot;https://alist.ahhf45.top/d/covers/post-dif1/Qualcomm_Flash_Image_Loader_v2.0.3.5.zip?sign=UAzRbZ6QRYl2ih4ENPaKpbsMy7oHZRHYF8ktdNn9HNw=:0&quot;&gt;QFIL&lt;/a&gt;
高通板子刷机需要安装9008驱动和adb驱动，打开并安装文件里的9008driver
&lt;img src=&quot;https://alist.gr114.com/d/covers/post-dif1/p3.jpg?sign=thNzzEsxIWJ9R32HsJWGDtX80dchKpimoen9Zc3Vamo=:0&quot; alt=&quot;9008驱动&quot; title=&quot;9008驱动&quot; /&gt;
用Miko loader制作救砖包以及救砖。找到miko文件夹，双击miko安装，直接默认就行了，记住安装路径，安装完成后把文件夹内的loader复制到miko的安装目录，创建loader的快捷方式到桌面
&lt;img src=&quot;https://alist.gr114.com/d/covers/post-dif1/p4.jpg?sign=tG1BaffuBjGxTpY7FsRvdv5yqOY-XeronRsJdcvPFiM=:0&quot; alt=&quot;Miko工具&quot; title=&quot;Miko工具&quot; /&gt;
打开Miko工具&lt;/p&gt;
&lt;h2&gt;第三步：短接&lt;/h2&gt;
&lt;p&gt;把右上角的屏蔽贴纸撕开（如图）你就会看到两个触点叫&quot;1V8&quot;和&quot;BOOT&quot;
&lt;img src=&quot;https://alist.gr114.com/d/covers/post-dif1/p5.png?sign=DBHrQaeD1QpxQVGpofKOkGV4gMZ2Bf56DU4hegHCSTs=:0&quot; alt=&quot;触点&quot; /&gt;
&lt;img src=&quot;https://alist.gr114.com/d/covers/post-dif1/p6.png?sign=h2Wx3z-Z4GgsV364l91JwWa1A2FM2SLIKQhtAfyp8E0=:0&quot; alt=&quot;短接&quot; /&gt;
提前把数据线公头接到电脑上，在短接的同时插入数据线，听到电脑的提示音或在设备管理器里见到了如下图这样，你就进入了9008模式（刷机的）
&lt;img src=&quot;https://alist.gr114.com/d/covers/post-dif1/p7.png?sign=EWWB9JpNutoIVz9K-Bn6MBSpHZOeDGOM-IASYyao_Bk=:0&quot; alt=&quot;插线&quot; /&gt;
&lt;img src=&quot;https://alist.gr114.com/d/covers/post-dif1/p8.jpg?sign=rSKDvJWYjtbMxg8LAJ5lbJPWL3GvcstmGXzp6rBthEg=:0&quot; alt=&quot;9008&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;第四步：备份&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;刷机不备份，机主两行泪&lt;/strong&gt;
这里下载&lt;a href=&quot;https://alist.gr114.com/d/covers/post-dif1/prog_emmc_firehose_8953_ddr.mbn?sign=P6xJGJ5aTweq7plgujqyxYrCVQ0o78EP5-bwGBGo9iE=:0&quot;&gt;Firehose&lt;/a&gt;要不然等会无法进行备份工作，把它保存在一个你能找到的地方
在miko工具里依照如下图所示顺序进行操作
&lt;img src=&quot;https://alist.gr114.com/d/covers/post-dif1/p9.png?sign=LS4Gbh7ccLX--tz9FHsqvLQs-TOtwaiuYne8e9GWQHA=:0&quot; alt=&quot;操作&quot; /&gt;
点read，partition backup，取消勾选 Auto Loader，点击三个点选择刚刚下好的Firehose，双击下面double click to open save folder，选好救砖包生成的路径，点load partition structure，点read full image就能制作刷机救砖包，耐心等待进度条跑完，保存好这个后缀名为.bin的单文件，以后要是检查平板或者是平板回收，都能靠这个文件恢复如初&lt;/p&gt;
&lt;h2&gt;第五步：刷机&lt;/h2&gt;
&lt;p&gt;下载&lt;a href=&quot;https://alist.gr114.com/d/covers/post-dif1/TB-X605FC_S100038_210722_ROW.zip?sign=1tMO439mmNhr-e7ybNhGxqeyNZO-FxyVXYRos_N3jCE=:0&quot;&gt;刷机包&lt;/a&gt;解压在一个你能找到的位置，打开QFIL（上面下载过）安下图顺序操作，即可刷机，开机后就是一个正常的平板了！&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://alist.gr114.com/d/covers/post-dif1/p10.PNG?sign=Md8XQFMvBzXKXbPlHeBe88y0OdvardVuMhkePcuu4yY=:0&quot; alt=&quot;qfil&quot; /&gt;&lt;/p&gt;
&lt;p&gt;选择9008设备（反正就一个根本不用选），选择Flat Build，选择上面用过的那个Firehose，点击LoadXml，选择刷机包解压出来的rawprogram_unsparse.xml，然后再弹出一个窗口，直接选patch0.xml，最后点击Download，等待进度条跑完，应该会自动重启，如果没自动重启的话就按住电源键和音量下重启。&lt;/p&gt;
</content:encoded></item><item><title>扁平化与拟物化</title><link>https://gr114.com/posts/flat-vs-skeuomorphism/</link><guid isPermaLink="true">https://gr114.com/posts/flat-vs-skeuomorphism/</guid><description>简单讲讲扁平化和拟物化。</description><pubDate>Tue, 17 Jun 2025 19:10:10 GMT</pubDate><content:encoded>&lt;h2&gt;📱一、什么是拟物化设计？&lt;/h2&gt;
&lt;p&gt;拟物化的设计风格，就是让手机、电脑上的图标、按钮等看起来像现实中的物品。
比如“回收站”图标像一个真实的垃圾桶，记事本APP像一本带纹理的纸质笔记本 (&lt;a href=&quot;https://www.skillshare.com/en/blog/skeuomorphism-design-history/?srsltid=AfmBOoqO1jYElPjzi6efn2mrgSCKUrcLoegAMaFmebs1oxQqS8yaqHf3&amp;amp;utm_source=chatgpt.com&quot;&gt;skillshare.com&lt;/a&gt;)。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;优点&lt;/strong&gt;：让完全不懂科技的人，一眼就能看懂——鼠标点回收桶就像现实中扔垃圾，很直观。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;含义&lt;/strong&gt;：给人熟悉的感觉，降低学习新科技的门槛 。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如早年Mac的“Aqua”界面，会有光泽、水滴质感，看起来不仅漂亮，也让人了解“能点、能拖” (&lt;a href=&quot;https://en.wikipedia.org/wiki/Aqua_(user_interface)?utm_source=chatgpt.com&quot;&gt;en.wikipedia.org&lt;/a&gt;)。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;二、拟物化设计的历史到底有多早？&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;历史渊源&lt;/strong&gt;：拟物化最早可以追溯到1890年，用“形状”来模仿之前的真实物品 。
(&lt;a href=&quot;https://www.skillshare.com/en/blog/skeuomorphism-design-history/?srsltid=AfmBOoqO1jYElPjzi6efn2mrgSCKUrcLoegAMaFmebs1oxQqS8yaqHf3&amp;amp;utm_source=chatgpt.com&quot;&gt;skillshare.com&lt;/a&gt;)。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;苹果代表性案例&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;iPhone刚出时用felt（毛毡）、皮革等视觉元素，像桌面日历、书架等界面，目的是教会人们点触屏操作 。&lt;/li&gt;
&lt;li&gt;2013年iOS 6前，苹果APP如“日历”“笔记”都是拟物化风格 (&lt;a href=&quot;https://www.wired.com/2013/06/ios7-redesign?utm_source=chatgpt.com&quot;&gt;wired.com&lt;/a&gt;)。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;总之，拟物设计早期让新手快速上手，界面也更“好看”、“有质感”。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;三、平地风：扁平化设计如何兴起？&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;根源于印刷＋现代主义&lt;/strong&gt;：扁平化风格早在1920-60年代就存在，像瑞士风格的排版，讲究网格布局、无衬线字体 (&lt;a href=&quot;https://dovetail.com/ux/skeuomorphism/?utm_source=chatgpt.com&quot;&gt;dovetail.com&lt;/a&gt;, &lt;a href=&quot;https://speckyboy.com/origins-and-evolution-of-flat-design/?utm_source=chatgpt.com&quot;&gt;speckyboy.com&lt;/a&gt;)。
(&lt;a href=&quot;https://zh.wikipedia.org/wiki/%E6%89%81%E5%B9%B3%E5%8C%96%E8%AE%BE%E8%AE%A1?utm_source=chatgpt.com&quot;&gt;zh.wikipedia.org&lt;/a&gt;)。
。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;于是，微软、苹果、谷歌（推出Material Design）全面转向扁平化设计 。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;四、两种设计风格的优点与不足&lt;/h2&gt;
&lt;h3&gt;1. 拟物化设计&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;优点&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;上手机、平板界面像现实物，直观易懂，降低学习成本 。&lt;/li&gt;
&lt;li&gt;细节丰富、视觉效果强，看起来漂亮、逼真。&lt;/li&gt;
&lt;li&gt;适合初学者，用真实感来教人。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不足&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;图案复杂，界面容易“重”，加载慢，占资源简单。&lt;/li&gt;
&lt;li&gt;设计成本高，细节太多很麻烦 (&lt;a href=&quot;https://www.storyly.io/post/skeuomorphism-vs-flat-design?utm_source=chatgpt.com&quot;&gt;storyly.io&lt;/a&gt;)。&lt;/li&gt;
&lt;li&gt;高度写实可能误导人，比如按钮像旋钮但用不了 。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2. 扁平化设计&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;优点&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;界面更简洁、干净、现代，有“明快感” 。&lt;/li&gt;
&lt;li&gt;加载快速，跨平台适应强（网页、手机、平板都好看） (&lt;a href=&quot;https://dev.to/codebridge_tech/the-evolution-of-user-interface-ui-design-from-skeuomorphism-to-neumorphism-hl7?utm_source=chatgpt.com&quot;&gt;dev.to&lt;/a&gt;)。&lt;/li&gt;
&lt;li&gt;维护简单，开发成本低。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不足&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;对于新用户，有时辨认按钮不容易，容易“看不出哪里能点” 。&lt;/li&gt;
&lt;li&gt;风格太统一，个性不足，部分用户觉得“冷冰冰”“没温度” 。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;五、我的选择：倾向拟物化设计 🤗&lt;/h2&gt;
&lt;p&gt;虽然大家现在都喜欢扁平化，我更倾向拟物化设计，原因如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;更容易上手&lt;/strong&gt;
作为初中生，遇到一样新东西，看着像书本、笔记本就懂怎么用了，不必靠猜。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;更有亲切感&lt;/strong&gt;
拟真图标会让我觉得“会动、有触感”，像在现实中操作，心里更舒服。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;更有趣味性&lt;/strong&gt;
细节丰富，每次滑动都能找到“惊喜”，更有参与感。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;当然，我也不是反对扁平化。它确实干净、效率高。我认为最好的方式，是在简洁的基础上，加入小小拟物化元素。比如按钮有一点阴影、立体感，但整体还是现代风格。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;六、总结：未来可能是两者融合的时代&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;曾经&lt;/strong&gt;：拟物化主导界面设计 → 用真实感教会用户。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;现在&lt;/strong&gt;：扁平化主流 → 界面更简洁、适应各种设备。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;将来&lt;/strong&gt;：设计界可能发展出“新拟物”或“柔性扁平”风格，比如Material Design、Neumorphism 等，用简洁中带温度 (&lt;a href=&quot;https://zh.wikipedia.org/wiki/%E6%89%81%E5%B9%B3%E5%8C%96%E8%AE%BE%E8%AE%A1?utm_source=chatgpt.com&quot;&gt;zh.wikipedia.org&lt;/a&gt;, &lt;a href=&quot;https://drprime.hashnode.dev/navigating-the-digital-canvas-a-journey-through-the-evolution-of-website-design-trends?utm_source=chatgpt.com&quot;&gt;drprime.hashnode.dev&lt;/a&gt;)。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我觉得，借助拟物化让新用户快速上手，不失趣味，用好阴影、纹理，也不会牺牲界面效率，会更适合用户体验。&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;📝 博文结尾：说说为什么喜欢拟物化&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;对于初中生来说很友好&lt;/strong&gt;：不用翻教程，看着就懂该怎么点。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;更有“人的味道”&lt;/strong&gt;：不会像机器人界面，操作起来安心。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;也能混搭&lt;/strong&gt;：比如按钮稍微立体，图标简洁，既方便，又有质感。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;总之，拟物化的亲切和直观是我喜欢它的理由，而它不是回到“乱糟糟”的界面，而是理解使用者、帮助他们自然上手的美好设计方式。未来，如果能结合扁平化的优点，做个既好用又好看的界面，那就太棒啦！&lt;/p&gt;
</content:encoded></item><item><title>一道数学题</title><link>https://gr114.com/posts/math-problem/</link><guid isPermaLink="true">https://gr114.com/posts/math-problem/</guid><description>上课的课前测。</description><pubDate>Fri, 16 May 2025 19:10:10 GMT</pubDate><content:encoded>&lt;h2&gt;题目&lt;/h2&gt;
&lt;p&gt;已知x，y，z为实数，且y+z＝5﹣4x+3x2，z﹣y＝1﹣2x+x2，则x，y，z之间的大小关系是&lt;/p&gt;
&lt;h2&gt;解答&lt;/h2&gt;
&lt;h3&gt;解题过程&lt;/h3&gt;
&lt;h4&gt;已知条件&lt;/h4&gt;
&lt;p&gt;给定实数 ( x, y, z ) 满足以下方程组：
$$
\begin{cases}
y + z = 5 - 4x + 3x^2 \quad (1) \
z - y = 1 - 2x + x^2 \quad (2)
\end{cases}
$$&lt;/p&gt;
&lt;h4&gt;目标&lt;/h4&gt;
&lt;p&gt;求 ( x, y, z ) 之间的大小关系。&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;第一步：解方程组求 ( y ) 和 ( z )&lt;/h3&gt;
&lt;p&gt;将方程 (1) 和方程 (2) 相加：
$$
(y + z) + (z - y) = (5 - 4x + 3x^2) + (1 - 2x + x^2)
$$
$$
2z = 6 - 6x + 4x^2
$$
$$
z = 3 - 3x + 2x^2
$$&lt;/p&gt;
&lt;p&gt;将方程 (1) 减去方程 (2)：
$$
(y + z) - (z - y) = (5 - 4x + 3x^2) - (1 - 2x + x^2)
$$
$$
2y = 4 - 2x + 2x^2
$$
$$
y = 2 - x + x^2
$$&lt;/p&gt;
&lt;p&gt;因此，我们得到：
$$
y = x^2 - x + 2
$$
$$
z = 2x^2 - 3x + 3
$$&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;第二步：比较 ( x, y, z ) 的大小&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;比较 ( y ) 和 ( x )&lt;/strong&gt;
$$
y - x = (x^2 - x + 2) - x = x^2 - 2x + 2
$$
判断 ( x^2 - 2x + 2 ) 的符号：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;判别式 ( \Delta = (-2)^2 - 4 \times 1 \times 2 = 4 - 8 = -4 &amp;lt; 0 )&lt;/li&gt;
&lt;li&gt;二次项系数为正，且 ( \Delta &amp;lt; 0 )，故 ( x^2 - 2x + 2 &amp;gt; 0 ) 对所有实数 ( x ) 成立。&lt;/li&gt;
&lt;li&gt;因此，( y &amp;gt; x )。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;比较 ( z ) 和 ( x )&lt;/strong&gt;
$$
z - x = (2x^2 - 3x + 3) - x = 2x^2 - 4x + 3
$$
判断 ( 2x^2 - 4x + 3 ) 的符号：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;判别式 ( \Delta = (-4)^2 - 4 \times 2 \times 3 = 16 - 24 = -8 &amp;lt; 0 )&lt;/li&gt;
&lt;li&gt;二次项系数为正，且 ( \Delta &amp;lt; 0 )，故 ( 2x^2 - 4x + 3 &amp;gt; 0 ) 对所有实数 ( x ) 成立。&lt;/li&gt;
&lt;li&gt;因此，( z &amp;gt; x )。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;比较 ( z ) 和 ( y )&lt;/strong&gt;
$$
z - y = (2x^2 - 3x + 3) - (x^2 - x + 2) = x^2 - 2x + 1 = (x - 1)^2 \geq 0
$$&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对于所有实数 ( x )，( (x - 1)^2 \geq 0 )，当且仅当 ( x = 1 ) 时取等号。&lt;/li&gt;
&lt;li&gt;因此：
&lt;ul&gt;
&lt;li&gt;当 ( x \neq 1 ) 时，( z &amp;gt; y )；&lt;/li&gt;
&lt;li&gt;当 ( x = 1 ) 时，( z = y )。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h3&gt;第三步：总结大小关系&lt;/h3&gt;
&lt;p&gt;综合以上分析：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对于所有实数 ( x )，有 ( y &amp;gt; x ) 和 ( z &amp;gt; x )。&lt;/li&gt;
&lt;li&gt;对于 ( z ) 和 ( y )：
&lt;ul&gt;
&lt;li&gt;当 ( x \neq 1 ) 时，( z &amp;gt; y &amp;gt; x )；&lt;/li&gt;
&lt;li&gt;当 ( x = 1 ) 时，( z = y &amp;gt; x )。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此，一般可以表示为：
$$
z \geq y &amp;gt; x
$$&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;验证示例&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;当 ( x = 0 )&lt;/strong&gt;
$$
y = 0^2 - 0 + 2 = 2, \quad z = 2 \times 0^2 - 3 \times 0 + 3 = 3
$$
$$
3 &amp;gt; 2 &amp;gt; 0 \quad \Rightarrow \quad z &amp;gt; y &amp;gt; x
$$&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;当 ( x = 1 )&lt;/strong&gt;
$$
y = 1^2 - 1 + 2 = 2, \quad z = 2 \times 1^2 - 3 \times 1 + 3 = 2
$$
$$
2 = 2 &amp;gt; 1 \quad \Rightarrow \quad z = y &amp;gt; x
$$&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;当 ( x = 2 )&lt;/strong&gt;
$$
y = 2^2 - 2 + 2 = 4, \quad z = 2 \times 2^2 - 3 \times 2 + 3 = 5
$$
$$
5 &amp;gt; 4 &amp;gt; 2 \quad \Rightarrow \quad z &amp;gt; y &amp;gt; x
$$&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;验证结果与结论一致。&lt;/p&gt;
&lt;hr /&gt;
&lt;h3&gt;最终结论&lt;/h3&gt;
&lt;p&gt;对于所有实数 ( x )，( y )，( z ) 满足给定方程时，它们的大小关系为：
$$
z \geq y &amp;gt; x
$$&lt;/p&gt;
&lt;p&gt;即：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;( y ) 总是大于 ( x )；&lt;/li&gt;
&lt;li&gt;( z ) 大于或等于 ( y )（当且仅当 ( x = 1 ) 时，( z = y )）。&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>博客新变化</title><link>https://gr114.com/posts/random-avatar-api/</link><guid isPermaLink="true">https://gr114.com/posts/random-avatar-api/</guid><description>添加随机图片api</description><pubDate>Tue, 11 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;有什么变化？&lt;/h1&gt;
&lt;p&gt;现在当你打开我的博客主页，你会发现&lt;code&gt;GreenRoc&lt;/code&gt;字样的上方头像图片一直在变化，而且都是Avicii歌曲的封面&lt;/p&gt;
&lt;h1&gt;咋做的？&lt;/h1&gt;
&lt;p&gt;自建了一个随机图片api，里面全是鸽子封面&lt;/p&gt;
&lt;h2&gt;直接用&lt;/h2&gt;
&lt;p&gt;想用的话可以直接用我的这个api&lt;code&gt;https://cd.ahhf45.top/r.php&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;自己建&lt;/h2&gt;
&lt;p&gt;在你网站根目录建一个php文档，名称随意，再建一个名为&lt;code&gt;img&lt;/code&gt;的文件夹，里面放上你想要随机的图片，下面是源码&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
&amp;lt;?php
// 配置图片目录和允许的扩展名
$imageFolder = &apos;img/&apos;;
$allowedExtensions = [&apos;jpg&apos;, &apos;jpeg&apos;, &apos;png&apos;, &apos;gif&apos;];

// 检查目录是否存在
if (!is_dir($imageFolder)) {
    header(&quot;HTTP/1.1 500 Internal Server Error&quot;);
    exit(&apos;错误：图片目录不存在&apos;);
}

// 扫描目录获取有效图片文件
$imageList = [];
foreach (scandir($imageFolder) as $file) {
    $filePath = $imageFolder . $file;
    
    // 过滤隐藏文件和目录
    if ($file[0] === &apos;.&apos; || !is_file($filePath)) continue;
    
    // 验证文件扩展名
    $extension = strtolower(pathinfo($file, PATHINFO_EXTENSION));
    if (in_array($extension, $allowedExtensions)) {
        $imageList[] = $file;
    }
}

// 处理无图片情况
if (empty($imageList)) {
    header(&quot;HTTP/1.1 404 Not Found&quot;);
    exit(&apos;错误：未找到任何图片文件&apos;);
}

// 随机选择图片并重定向
$randomImage = $imageList[array_rand($imageList)];
$encodedFileName = rawurlencode($randomImage);  // 处理特殊字符
header(&apos;Location: &apos; . $imageFolder . $encodedFileName);
exit;
?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;复制到前面那个PHP文件里使用即可。&lt;/p&gt;
</content:encoded></item><item><title>历史听写</title><link>https://gr114.com/posts/history-dictation/</link><guid isPermaLink="true">https://gr114.com/posts/history-dictation/</guid><description>大家为周二的历史听写做好准备，这些供大家参考</description><pubDate>Sat, 08 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;第14课 法西斯国家的侵略扩张&lt;/h1&gt;
&lt;h2&gt;1. 世界法西斯主义的三大形态&lt;/h2&gt;
&lt;p&gt;意大利法西斯主义、德国纳粹主义、日本军国主义。&lt;/p&gt;
&lt;h2&gt;2. 法西斯专政的共同点&lt;/h2&gt;
&lt;p&gt;对内实行独裁统治，对外醉心于侵略扩张&lt;/p&gt;
&lt;h2&gt;3. 最早建立法西斯专政的国家&lt;/h2&gt;
&lt;p&gt;意大利。&lt;/p&gt;
&lt;h2&gt;4. 意大利建立法西斯政权的背景&lt;/h2&gt;
&lt;p&gt;一战后政治动荡、经济凋敝，民众对政府不满，墨索里尼利用混乱局势夺取政权。&lt;/p&gt;
&lt;h2&gt;5. 意大利法西斯政党名称及领导人&lt;/h2&gt;
&lt;p&gt;法西斯党，领导人贝尼托·墨索里尼。&lt;/p&gt;
&lt;h2&gt;6. 意大利法西斯专政建立的标志&lt;/h2&gt;
&lt;p&gt;1922年10月，墨索里尼率领“黑衫军”进军罗马，迫使国王任命其为首相。&lt;/p&gt;
&lt;h2&gt;7. 意大利对外侵略扩张的表现&lt;/h2&gt;
&lt;p&gt;1935年侵略埃塞俄比亚。&lt;/p&gt;
&lt;h2&gt;8. 德、日法西斯政权建立的共同原因&lt;/h2&gt;
&lt;p&gt;• 经济大危机导致社会矛盾激化；&lt;/p&gt;
&lt;p&gt;• 民族复仇情绪（因受到制裁而产生不满情绪）；&lt;/p&gt;
&lt;h2&gt;9. 德国法西斯专政建立的背景、领导人、政党&lt;/h2&gt;
&lt;p&gt;• 背景：经济危机重创德国，民众对《凡尔赛条约》不满；&lt;/p&gt;
&lt;p&gt;• 领导人：阿道夫·希特勒；&lt;/p&gt;
&lt;p&gt;• 政党：纳粹党。&lt;/p&gt;
&lt;h2&gt;10. 德国法西斯专政建立的标志&lt;/h2&gt;
&lt;p&gt;1933年希特勒被任命为德国总理，随后解散国会，禁止其他政党活动，建立了法西斯专政。&lt;/p&gt;
&lt;h2&gt;11. 德国法西斯专政建立的影响&lt;/h2&gt;
&lt;p&gt;标志着欧洲战争策源地的形成。&lt;/p&gt;
&lt;h2&gt;12. 德国对内对外统治措施&lt;/h2&gt;
&lt;p&gt;• 对内：镇压德国共产党（国会纵火案），解散工会，迫害进步人士，焚烧进步书籍，迫害犹太人；&lt;/p&gt;
&lt;p&gt;• 对外：大力发展军事工业，扩军备战，撕毁《凡尔赛条约》，吞并奥地利（1938年），吞并捷克斯洛伐克。&lt;/p&gt;
&lt;h2&gt;13. 德国法西斯反人类罪行&lt;/h2&gt;
&lt;p&gt;残酷迫害屠杀犹太人。&lt;/p&gt;
&lt;h2&gt;14. 英法对德绥靖政策的体现&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;绥靖&lt;/code&gt;政策（注意字）&lt;/p&gt;
&lt;h2&gt;15. 绥靖政策达到顶峰的标志&lt;/h2&gt;
&lt;p&gt;1938年《慕尼黑协定》。&lt;/p&gt;
&lt;h2&gt;16. 日本法西斯政权建立的背景&lt;/h2&gt;
&lt;p&gt;经济危机冲击，日本对“凡尔赛-华盛顿体系”十分不满，日本觊觎中国之心由来已久。&lt;/p&gt;
&lt;h2&gt;17. 日本法西斯势力的核心&lt;/h2&gt;
&lt;p&gt;军部。&lt;/p&gt;
&lt;h2&gt;18. 日本法西斯专政建立的标志&lt;/h2&gt;
&lt;p&gt;1936年“二二六兵变”后，军部完全控制政府。&lt;/p&gt;
&lt;h2&gt;19. 日本法西斯专政建立的影响&lt;/h2&gt;
&lt;p&gt;标志着亚洲战争策源地的形成。&lt;/p&gt;
&lt;h2&gt;20. 日本法西斯统治措施&lt;/h2&gt;
&lt;p&gt;• 对内：加紧扩充军备，残酷镇压进步活动，推行国民经济军事化￼￼￼；&lt;/p&gt;
&lt;p&gt;• 对外：1931九一八事变，制定《国策基准》，1937七七事变。&lt;/p&gt;
&lt;h2&gt;21. 日本根本国策&lt;/h2&gt;
&lt;p&gt;“大陆政策”，以侵略中国和东南亚为核心。
（国策基准？）&lt;/p&gt;
&lt;h2&gt;22. 法西斯同盟形成的标志&lt;/h2&gt;
&lt;p&gt;• 初步形成：1936年《反共产国际协定》（德日）；&lt;/p&gt;
&lt;p&gt;• 正式建立：1940年《德意日三国同盟条约》。&lt;/p&gt;
&lt;h2&gt;23. 资本主义国家摆脱危机的不同方式及启示&lt;/h2&gt;
&lt;p&gt;• 不同方式：美国通过罗斯福新政改革，德日通过法西斯化转嫁矛盾，对外扩张；&lt;/p&gt;
&lt;p&gt;• 启示：①深化改革不断调整生产关系，加强国家对经济的宏观调控；②￼维护世界和平，促进世界经济发展时刻警惕军国主义，坚决反对法西斯主义。￼&lt;/p&gt;
&lt;h2&gt;24. 意德日法西斯化的异同&lt;/h2&gt;
&lt;p&gt;• 同：①都因受到制裁而产生不满情绪￼；②对内独裁专政，对外侵略扩张；￼&lt;/p&gt;
&lt;p&gt;• 异：①意大利受到一战打击，日本、德国是受经济危机走上法西斯道路￼；②意大利德国通过政党夺取建立法西斯专制日本以军部为核心，逐步实现法西斯专政。￼&lt;/p&gt;
&lt;h1&gt;第15课 第二次世界大战&lt;/h1&gt;
&lt;h2&gt;1. 二战又称&lt;/h2&gt;
&lt;p&gt;世界反法西斯战争。&lt;/p&gt;
&lt;h2&gt;2. 时间&lt;/h2&gt;
&lt;p&gt;1939年9月1日—1945年9月2日。&lt;/p&gt;
&lt;h2&gt;3. 交战双方&lt;/h2&gt;
&lt;p&gt;轴心国（德、意、日及仆从国）VS 反法西斯同盟（美、苏、英、中等）。&lt;/p&gt;
&lt;h2&gt;4. 爆发原因&lt;/h2&gt;
&lt;p&gt;• 根本原因：帝国主义国家间政治经济发展不平衡；&lt;/p&gt;
&lt;p&gt;• 直接原因：资本主义世界经济危机激化法西斯国家侵略扩张的欲望；&lt;/p&gt;
&lt;p&gt;• 历史原因：凡尔赛-华盛顿体系矛盾；&lt;/p&gt;
&lt;p&gt;• 催化因素：英法绥靖政策助长侵略。&lt;/p&gt;
&lt;h2&gt;5. 主要战场及东方主战场&lt;/h2&gt;
&lt;p&gt;• 主要战场：欧洲西线、东线、北非、太平洋、中国战场；&lt;/p&gt;
&lt;p&gt;• 中国战场是世界反法西斯东方主战场。&lt;/p&gt;
&lt;h2&gt;6. 二战序幕&lt;/h2&gt;
&lt;p&gt;1931年日本制造九一八事变。&lt;/p&gt;
&lt;h2&gt;7. 全面爆发标志&lt;/h2&gt;
&lt;p&gt;1939年9月1日德国闪击波兰，英法对德宣战。&lt;/p&gt;
&lt;h2&gt;8. 粉碎德军神话的战役&lt;/h2&gt;
&lt;p&gt;1941年莫斯科保卫战。&lt;/p&gt;
&lt;h2&gt;9. 战争最大规模的标志&lt;/h2&gt;
&lt;p&gt;1941年12月日本偷袭珍珠港，太平洋战争爆发。&lt;/p&gt;
&lt;h2&gt;10. 《联合国家宣言》签署及影响&lt;/h2&gt;
&lt;p&gt;• 时间：1942年1月1日；&lt;/p&gt;
&lt;p&gt;• 影响：标志国际反法西斯联盟正式形成。&lt;/p&gt;
&lt;h2&gt;11. 二战转折点&lt;/h2&gt;
&lt;p&gt;斯大林格勒战役（1942.7—1943.2），苏德对决。&lt;/p&gt;
&lt;h2&gt;12. 太平洋战场转折点&lt;/h2&gt;
&lt;p&gt;中途岛海战（1942年6月）。&lt;/p&gt;
&lt;h2&gt;13. 轴心国最先投降的国家&lt;/h2&gt;
&lt;p&gt;意大利（1943年9月8日）。&lt;/p&gt;
&lt;h2&gt;14. 欧洲第二战场开辟的标志&lt;/h2&gt;
&lt;p&gt;1944年6月诺曼底登陆。&lt;/p&gt;
&lt;h2&gt;15. 开罗会议&lt;/h2&gt;
&lt;p&gt;• 时间：1943年11月；&lt;/p&gt;
&lt;p&gt;• 参与国：中、美、英；&lt;/p&gt;
&lt;p&gt;• 内容：要求日本归还中国领土，战后朝鲜独立。&lt;/p&gt;
&lt;h2&gt;16. 雅尔塔会议&lt;/h2&gt;
&lt;p&gt;• 时间：1945年2月；&lt;/p&gt;
&lt;p&gt;• 参与国：美、苏、英；&lt;/p&gt;
&lt;p&gt;• 内容：分区占领德国、成立联合国、苏联对日作战；&lt;/p&gt;
&lt;p&gt;• 影响：奠定战后国际秩序基础。&lt;/p&gt;
&lt;h2&gt;17. 波茨坦会议&lt;/h2&gt;
&lt;p&gt;• 时间：1945年7月；&lt;/p&gt;
&lt;p&gt;• 参与国：美、苏、英；&lt;/p&gt;
&lt;p&gt;• 内容：敦促日本无条件投降，重申《开罗宣言》。&lt;/p&gt;
&lt;h2&gt;18. 欧洲战事结束标志&lt;/h2&gt;
&lt;p&gt;1945年5月8日德国无条件投降。&lt;/p&gt;
&lt;h2&gt;19. 二战结束标志&lt;/h2&gt;
&lt;p&gt;1945年9月2日日本签署投降书。&lt;/p&gt;
&lt;h2&gt;20. 二战特点&lt;/h2&gt;
&lt;p&gt;时间长，规模大，波及范围广，参加人口多，伤亡大，战争残酷。&lt;/p&gt;
&lt;h2&gt;21. 二战性质&lt;/h2&gt;
&lt;p&gt;世界人民反法西斯正义战争。&lt;/p&gt;
&lt;h2&gt;22. 二战影响&lt;/h2&gt;
&lt;p&gt;•给世界人民带来巨大灾难；&lt;/p&gt;
&lt;p&gt;•彻底粉碎法西斯主义，军国主义；&lt;/p&gt;
&lt;p&gt;• 推动殖民体系瓦解；&lt;/p&gt;
&lt;p&gt;• 确立美苏两极格局；&lt;/p&gt;
&lt;p&gt;• 促进科技发展（如核能、航空）；&lt;/p&gt;
&lt;p&gt;• 奠定联合国基础；&lt;/p&gt;
&lt;p&gt;• 社会主义力量壮大。&lt;/p&gt;
&lt;h2&gt;23. 胜利原因&lt;/h2&gt;
&lt;p&gt;• 根本原因：世界反法西斯力量的联合；&lt;/p&gt;
&lt;p&gt;• 其他：战争正义性、人民支持、轴心国缺乏合作，战略协同。&lt;/p&gt;
&lt;h2&gt;24. 中国战场的贡献&lt;/h2&gt;
&lt;p&gt;• 九一八事变揭开了世界反法西斯战争的序幕&lt;/p&gt;
&lt;p&gt;• 牵制日本陆军主力；&lt;/p&gt;
&lt;p&gt;• 持久抗战消耗日军资源；&lt;/p&gt;
&lt;h2&gt;25. 二战启示&lt;/h2&gt;
&lt;p&gt;• 和平需共同维护；&lt;/p&gt;
&lt;p&gt;•人民是重要力量；&lt;/p&gt;
&lt;p&gt;•各个国家在平等的基础上联合；&lt;/p&gt;
&lt;p&gt;•国与国之间应和平共处；&lt;/p&gt;
&lt;p&gt;•加强国际合作，谋求共同发展￼￼&lt;/p&gt;
&lt;p&gt;• 充分发挥联合国的作用。￼&lt;/p&gt;
</content:encoded></item><item><title>新老交接</title><link>https://gr114.com/posts/old-to-new-blog/</link><guid isPermaLink="true">https://gr114.com/posts/old-to-new-blog/</guid><description>新老博客的简单对比</description><pubDate>Sat, 08 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;以前的博客&lt;/h1&gt;
&lt;p&gt;之前我用的是&lt;code&gt;Wordpress&lt;/code&gt;作为博客框架，现在这个站点仍在我的维护中&lt;a href=&quot;https://ahhf45.top&quot;&gt;Ahhf45-GreenRoc的博客&lt;/a&gt;，这个框架功能很多，可选的主题也很多，但是我感觉他有点冗余，很多功能用不上，有后端数据库的原因，有点慢。。。&lt;/p&gt;
&lt;h1&gt;现在你看到的这个&lt;/h1&gt;
&lt;p&gt;才换的新博客框架，叫&lt;code&gt;fuwari&lt;/code&gt;下面是它的官方仓库
::github{repo=&quot;saicaca/fuwari&quot;}
这是个类似于hexo的静态博客，没有后端，所以访问很快，但是也没有评论系统了，我是直接部署到vercel上的，也没要钱，成本很低，而且还可以在GitHub上写文章，也挺方便了，下面是我这个博客的仓库，后面我会持续改进我的博客，下面是我这个博客的仓库
::github{repo=&quot;GreenRoc114/Roc-blog&quot;}&lt;/p&gt;
</content:encoded></item><item><title>成功复活</title><link>https://gr114.com/posts/blog-reborn/</link><guid isPermaLink="true">https://gr114.com/posts/blog-reborn/</guid><description>复活了</description><pubDate>Sat, 20 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;您猜怎么着&lt;/h2&gt;
&lt;p&gt;继博客删库之后，我又花了点时间重新建了一个，跟以前没什么不一样的，主要是我很看好这个博客框架。
以前的文章我都有备份，尽快会恢复。&lt;/p&gt;
&lt;h2&gt;音乐播放器测试&lt;/h2&gt;
&lt;p&gt;&amp;lt;div id=&quot;aplayer&quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script&amp;gt;
new APlayer({
container: document.getElementById(&apos;aplayer&apos;),
audio: [{ url: &apos;https://alist.ahhf45.top/d/covers/post-1/Tobu%20%26%20Luke%20Bergs%20-%20Heroes.mp3?sign=Kuc1gQOrQqjQg8zmedBpRRqS00ciTFoSU_4BUvvGLnc=:0&apos;, name: &apos;Heroes&apos;}]
});
&amp;lt;/script&amp;gt;&lt;/p&gt;
</content:encoded></item></channel></rss>