<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>e2147</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://i.101229.xyz/</id>
  <link href="https://i.101229.xyz/" rel="alternate"/>
  <link href="https://i.101229.xyz/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, e2147</rights>
  <title>E2147dev</title>
  <updated>2026-08-12T12:59:06.689Z</updated>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <content>
      <![CDATA[<p>如果你用过GitHub Pages、Vercel、Netlify或者Cloudflare Pages，大概会有一种相似的体验：把代码推到Git仓库，几分钟后一个网站就上线了，附带域名和HTTPS，整个过程不需要自己配置服务器，也不需要登录什么云控制台去上传文件。</p><p>这种体验背后，几家平台的做法其实高度一致。理解了这个共同原理，也就明白了为什么它们被称为“现代前端的基础设施”。</p><p>整个流程可以分成四个环节。</p><p>第一个环节是触发。你在本地写完代码，执行git push，代码被推送到远程仓库。仓库那边配置了一个Webhook，推送成功的瞬间会向Pages平台发送一个HTTP请求，告诉它“有代码更新了”。Pages平台收到这个信号，就开始准备干活。</p><p>第二个环节是构建。平台会启动一个临时的容器环境，在里面拉取你的代码，然后根据你的项目配置执行构建命令。如果是React项目，可能是npm run build；如果是Vue项目，也可能是类似的命令。构建过程的本质是把源代码转化成浏览器可以直接运行的静态文件——HTML、CSS、JavaScript。这个临时环境用完就会销毁，所以每次构建都是干净的、隔离的。</p><p>第三个环节是存储。构建产生的静态文件会被上传到平台背后的对象存储中，类似AWS S3或者MinIO这样的系统。这些文件被持久化保存下来，作为网站的源站内容。每一次部署产生的文件都是完整的、独立的，不会覆盖上一次的部署，这就为后面的回滚提供了基础。</p><p>第四个环节是分发。文件存入对象存储后，平台会把这些内容推送到全球的CDN边缘节点。用户访问你的网站时，DNS解析会将请求导向最近的CDN节点，而不是直接打到源站。这样无论访问者在美国、欧洲还是东南亚，都能获得比较快的加载速度。</p><p>在这套基础流程之上，还有三个几乎成为标配的交付体验。</p><p>零停机部署。每次构建完成的新版本并不会立即替换旧版本，而是先完整地上传到存储系统，等待所有文件就绪后，平台才把访问流量从旧版本切换到新版本。这个切换是瞬间完成的，用户不会感知到中断。如果新版本出了问题，回滚也是一样的逻辑——把流量切回到之前那个完整的部署快照，一秒钟就能完成。</p><p>自动化的HTTPS。只要你给网站绑定了自定义域名，平台会自动向Let’s Encrypt申请SSL证书，并且在证书过期前自动续签。整个过程不需要你手动操作，不需要每年记得去更新证书。</p><p>分支预览环境。当你发起一个Pull Request时，平台会为这个分支单独生成一个临时的预览链接。你可以在这个链接上测试新功能，团队成员也可以直接访问查看效果。PR合并之后，这个预览环境会自动销毁。这个能力让代码审查和测试变得非常自然，不再需要本地跑起来再给别人看。</p><p>把这些串起来看，Pages服务本质上做的事情是：把代码仓库、构建工厂、对象存储和CDN网络这四个组件无缝地整合在一起，让开发者只需要关注git push这一个动作。剩下的自动化流程，由平台在云端替你完成。</p><p>这就是它们的共同原理。不同的平台在细节上各有侧重，有的对特定框架优化更好，有的在边缘计算上走得更远，但最底层的这套逻辑，基本是一样的。</p><p>(AI生成)</p>]]>
    </content>
    <id>https://i.101229.xyz/2026/08/12/2026-08-12-03/</id>
    <link href="https://i.101229.xyz/2026/08/12/2026-08-12-03/"/>
    <published>2026-08-12T12:54:45.000Z</published>
    <summary>
      <![CDATA[<p>如果你用过GitHub Pages、Vercel、Netlify或者Cloudflare Pages，大概会有一种相似的体验：把代码推到Git仓库，几分钟后一个网站就上线了，附带域名和HTTPS，整个过程不需要自己配置服务器，也不需要登录什么云控制台去上传文件。</p>
<]]>
    </summary>
    <title>Pages服务的共同原理</title>
    <updated>2026-08-12T12:59:06.689Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <content>
      <![CDATA[<p>为什么放假比上学还要累qwq</p>]]>
    </content>
    <id>https://i.101229.xyz/2026/08/12/2026-08-12-02/</id>
    <link href="https://i.101229.xyz/2026/08/12/2026-08-12-02/"/>
    <published>2026-08-12T09:03:09.000Z</published>
    <summary>
      <![CDATA[<p>为什么放假比上学还要累qwq</p>]]>
    </summary>
    <title>qwq</title>
    <updated>2026-08-12T12:59:06.689Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <content>
      <![CDATA[<p>今天闲着没事，点开F12分析下我的网站，都知道我在Cloudflare上开了一份，Github pages上也开了一份，可是，我发现了不一样的地方</p><p>我发现，在Github pages上的只有第一次加载慢一点，后面几次几乎都是秒开；而在Cloudflare上的速度一直很快</p><p>我打开F12，准备看一看</p><p>①Github pages版本<br>我发现了问题<br>第一次访问状态码是200 OK，而后面几次秒开，但状态码变成了304 Not Modified<br>共发出0.3KB数据，有0.1KB回源到服务器，而剩下0.2KB是不蒜子的统计<br>查了一下资料，大概是强缓存了整个首页</p><p>②Cloudflare版本<br>每一次都是200 OK，但结合我之前这篇：<br><a href="https://i.101229.xyz/2026/08/05/2026-08-05-07/">https://i.101229.xyz/2026/08/05/2026-08-05-07/</a><br>彻底坐实了Cloudflare只强缓存JavaScript，CSS以及图片，对于经常变动的html文件缓存不深<br>还有它在我的页面里嵌入了统计脚本，通过这一点让我们得以在DashBoard中查看统计信息。</p><p>总结<br>根据以上信息，可以得知Cloudflare更注重内容的更新，Github更注重节省流量，各有各的优势</p><p>免责声明<br>文中提到的信息，均为个人实测，但不保证内容准确性严谨性，内容以“按现状”提供。注意：所有设置均为默认</p>]]>
    </content>
    <id>https://i.101229.xyz/2026/08/12/2026-08-12-01/</id>
    <link href="https://i.101229.xyz/2026/08/12/2026-08-12-01/"/>
    <published>2026-08-12T09:02:21.000Z</published>
    <summary>
      <![CDATA[<p>今天闲着没事，点开F12分析下我的网站，都知道我在Cloudflare上开了一份，Github pages上也开了一份，可是，我发现了不一样的地方</p>
<p>我发现，在Github pages上的只有第一次加载慢一点，后面几次几乎都是秒开；而在Cloudflare上的速]]>
    </summary>
    <title>探究不同CDN的缓存原理</title>
    <updated>2026-08-12T12:59:06.689Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <content>
      <![CDATA[<p><img src="/img/7.jpg"><br><img src="/img/8.jpg"></p>]]>
    </content>
    <id>https://i.101229.xyz/2026/08/11/2026-08-11-02/</id>
    <link href="https://i.101229.xyz/2026/08/11/2026-08-11-02/"/>
    <published>2026-08-11T01:09:37.000Z</published>
    <summary>
      <![CDATA[<p><img src="/img/7.jpg"><br><img src="/img/8.jpg"></p>]]>
    </summary>
    <title>分享图片</title>
    <updated>2026-08-12T12:59:06.689Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <content>
      <![CDATA[<p>现在的话，也不知道该干什么，</p><p>有种失落，却不知道失落在哪的感觉，</p><p>就很烦，</p><p>不过我现在倒有一些想法，把领的免费域名尽量的给他清空或者少用，否则管理起来真的很头疼。时间和精力才是最大的成本</p><p>以及专心经营这个博客，分享分享日常。</p><p>如果以后没有时间，那我也会尽量做到一周或两周更新一次<br>虽然说都是水文章，但至少能坚持。</p><p>毕竟一件事是否存在意义是因人而异的</p><p>主要是没有什么新的想法，也不想再继续试错了，现在越来越忙</p><p>算了，不管了，只要能继续前进，就好</p>]]>
    </content>
    <id>https://i.101229.xyz/2026/08/11/2026-08-11-01/</id>
    <link href="https://i.101229.xyz/2026/08/11/2026-08-11-01/"/>
    <published>2026-08-11T01:09:28.000Z</published>
    <summary>
      <![CDATA[<p>现在的话，也不知道该干什么，</p>
<p>有种失落，却不知道失落在哪的感觉，</p>
<p>就很烦，</p>
<p>不过我现在倒有一些想法，把领的免费域名尽量的给他清空或者少用，否则管理起来真的很头疼。时间和精力才是最大的成本</p>
<p>以及专心经营这个博客，分享分享]]>
    </summary>
    <title>迷途</title>
    <updated>2026-08-12T12:59:06.689Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <content>
      <![CDATA[<p>昨天晚上我突发奇想<br>能不能首页根目录放HTML代码，然后再搞一个框架，指定它的URL为&#x2F;post？这样的话混合架构，没准自由度会更高一点</p><p>但是今天试了一下，一堆报错，算了吧</p><p>之后我再折腾一下all in boom</p><p>折腾的时候我用的是hugo，毕竟，它以构建速度快而闻名</p><p>虽然说之前的那个折腾失效了，但我还安装了这个工具，我就试试搞一个更为轻量的，构建更快的博客</p><p>我看到了amigo框架，长得很像朋友圈，简单修改一下，我就构建成功了</p><p>就是这个相对路径问题太恶心了。还有hugo生成文章的时候，还必须要把TRUE改成FALSE，否则会视为草稿根本加不进去，这一点也太坑了，不过其他都还好</p><p>现在搞了一个比较轻量的小博客，可以用来写一些简短的句子</p><p>当然，现在这个博客肯定不会放弃，因为简单易用</p><p>反正两个地方我都会更新</p><p>你可以在这里体验：<a href="https://1f.cc.cd/">https://1f.cc.cd/</a><br>同时已经开源，欢迎访问我的Github仓库</p><p>对了，为了这个功能，课程表已经迁移到 <a href="https://1f.cc.cd/class">https://1f.cc.cd/class</a></p>]]>
    </content>
    <id>https://i.101229.xyz/2026/08/09/2026-08-09-02/</id>
    <link href="https://i.101229.xyz/2026/08/09/2026-08-09-02/"/>
    <published>2026-08-09T08:40:29.000Z</published>
    <summary>
      <![CDATA[<p>昨天晚上我突发奇想<br>能不能首页根目录放HTML代码，然后再搞一个框架，指定它的URL为&#x2F;post？这样的话混合架构，没准自由度会更高一点</p>
<p>但是今天试了一下，一堆报错，算了吧</p>
<p>之后我再折腾一下all in boom</p>
<p>折]]>
    </summary>
    <title>折腾hugo博客框架</title>
    <updated>2026-08-12T12:59:06.689Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <content>
      <![CDATA[<p>一连几天都在下雨</p><p>雨断断续续</p>]]>
    </content>
    <id>https://i.101229.xyz/2026/08/09/2026-08-09-01/</id>
    <link href="https://i.101229.xyz/2026/08/09/2026-08-09-01/"/>
    <published>2026-08-09T08:40:19.000Z</published>
    <summary>
      <![CDATA[<p>一连几天都在下雨</p>
<p>雨断断续续</p>]]>
    </summary>
    <title>雨天</title>
    <updated>2026-08-12T12:59:06.688Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <content>
      <![CDATA[<p>这个升学e网通，每天都要看好几节课</p><p>还不能摸鱼，不能挂机</p>]]>
    </content>
    <id>https://i.101229.xyz/2026/08/08/2026-08-08-02/</id>
    <link href="https://i.101229.xyz/2026/08/08/2026-08-08-02/"/>
    <published>2026-08-08T08:25:44.000Z</published>
    <summary>
      <![CDATA[<p>这个升学e网通，每天都要看好几节课</p>
<p>还不能摸鱼，不能挂机</p>]]>
    </summary>
    <title>太可恶了</title>
    <updated>2026-08-12T12:59:06.688Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <content>
      <![CDATA[<p>前情提要<br>我领了qd.je和l.cd这两个还算短的免费二级域名，</p><p>但是当我领完之后，我才发现原来暂时还不支持Cloudflare！</p><p>那我就在想，像我们这些没有源站的人，用不了Cloudflare pages，那这个域名简直一点用也没有。</p><p>我十分灰心丧气，那么，还要再等上几个月吗？</p><p>不不不，我开始想别的方法</p><p>我突然想到Github pages用的是Let’s Encrypt自动签发的证书，没准我在这些域名自带的DNS面板中能试一试</p><p>添加cname指向github.io，随便写一个小项目，开个公开仓库，打开pages，然后添加custom domain</p><p>刚开始我用qd.je试了试，证书签发失败了，只能用http，这我哪能忍？还是放弃了<br>再试几次，依旧还是那样，我只能把qd.je这个免费域名注销了。</p><p>但是在昨天我又领了个l.cd免费域名，没办法，真的好玩<br>可是他同样也不支持CloudFlare</p><p>突然，一个鬼点子冒出来，我能不能再这么试一次呢？</p><p>说干就干，还是同样的套路，<br>添加cname指向github.io，用之前的项目，打开pages，然后添加custom domain<br>几分钟之后DNS检查通过了，直接把证书签好了<br>居然可以用！！！<br>但我还是不放心，我感觉这只是运气好，决定再试一次，排除偶然因素</p><p>于是我把这个域名从Github pages删除，再来一遍</p><p>过了几分钟，虽然DNS检查通过了，但是证书始终没签下来<br>我有些着急了<br>算了算了，不管了，我把它晾在一边</p><p>又过了十几分钟，当我打开看的时候，证书签下来了！！！！！<br>成功了<br>哈哈，原来真的支持</p><p>所以说，还是要敢于尝试的<br>这是项目链接：<a href="https://ee.x2.l.cd/">https://ee.x2.l.cd/</a><br>Github链接：<a href="https://github.com/2025studentdev/color">https://github.com/2025studentdev/color</a><br>如果未来支持Cloudflare，那就更好了，那么现在就先用Github pages吧！</p>]]>
    </content>
    <id>https://i.101229.xyz/2026/08/08/2026-08-08-01/</id>
    <link href="https://i.101229.xyz/2026/08/08/2026-08-08-01/"/>
    <published>2026-08-08T08:20:01.000Z</published>
    <summary>
      <![CDATA[<p>前情提要<br>我领了qd.je和l.cd这两个还算短的免费二级域名，</p>
<p>但是当我领完之后，我才发现原来暂时还不支持Cloudflare！</p>
<p>那我就在想，像我们这些没有源站的人，用不了Cloudflare pages，那这个域名简直一点用也没有。</]]>
    </summary>
    <title>l.cd不支持Cloudflare，但支持Github pages！！！！！！</title>
    <updated>2026-08-12T12:59:06.688Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <content>
      <![CDATA[<p>刚刚正苦于不知道写什么的时候</p><p>原本比较亮的天突然变得灰暗</p><p>大概过了几分钟以后，渐渐刮起了大风，树随风飘动，窗帘飘飞，呼呼作响</p><p>又过了一会儿，雨渐渐变大了，原本柔和的雨滴，逐渐变多，猛烈的向地下砸去</p><p>我来到窗前，静静的坐着。</p><p>雨停了，</p><p>雨下了一次又一次，而我还在等待下一次</p>]]>
    </content>
    <id>https://i.101229.xyz/2026/08/07/2026-08-07-04/</id>
    <link href="https://i.101229.xyz/2026/08/07/2026-08-07-04/"/>
    <published>2026-08-07T02:28:21.000Z</published>
    <summary>
      <![CDATA[<p>刚刚正苦于不知道写什么的时候</p>
<p>原本比较亮的天突然变得灰暗</p>
<p>大概过了几分钟以后，渐渐刮起了大风，树随风飘动，窗帘飘飞，呼呼作响</p>
<p>又过了一会儿，雨渐渐变大了，原本柔和的雨滴，逐渐变多，猛烈的向地下砸去</p>
<p>我来到窗前，静静的坐]]>
    </summary>
    <title>下大雨了</title>
    <updated>2026-08-12T12:59:06.688Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <content>
      <![CDATA[<p>刚刚，我在用PCL启动器玩Minecraft的时候，</p><p>我看到彩蛋那一栏，想起来有个今日人品的功能，</p><p>于是我就想着给网站加一个，</p><p>当然，这个算法也做好了，总之，就是综合当天时间等一系列数据，生成一份当天独一无二的数字，怎么刷新都不会变。</p><p>可以试试看，现在就放在公告栏处</p>]]>
    </content>
    <id>https://i.101229.xyz/2026/08/07/2026-08-07-03/</id>
    <link href="https://i.101229.xyz/2026/08/07/2026-08-07-03/"/>
    <published>2026-08-07T02:28:11.000Z</published>
    <summary>
      <![CDATA[<p>刚刚，我在用PCL启动器玩Minecraft的时候，</p>
<p>我看到彩蛋那一栏，想起来有个今日人品的功能，</p>
<p>于是我就想着给网站加一个，</p>
<p>当然，这个算法也做好了，总之，就是综合当天时间等一系列数据，生成一份当天独一无二的数字，怎么刷新都不会变]]>
    </summary>
    <title>新增今日人品功能</title>
    <updated>2026-08-12T12:59:06.688Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <content>
      <![CDATA[<p>说实话，看别人的网站都有评论系统，在看我这个网站，什么都没有</p><p>我现在在考虑是否添加一个评论系统</p><p>但是我想了想，感觉还是算了</p><p>首先就是怕workers和数据库被刷爆，</p><p>其次，就是没有审核功能，有点不放心，</p><p>最后是我没能力折腾这件事，更没有维护</p><p>就这样吧，把目光转向别的功能</p>]]>
    </content>
    <id>https://i.101229.xyz/2026/08/07/2026-08-07-02/</id>
    <link href="https://i.101229.xyz/2026/08/07/2026-08-07-02/"/>
    <published>2026-08-07T02:28:04.000Z</published>
    <summary>
      <![CDATA[<p>说实话，看别人的网站都有评论系统，在看我这个网站，什么都没有</p>
<p>我现在在考虑是否添加一个评论系统</p>
<p>但是我想了想，感觉还是算了</p>
<p>首先就是怕workers和数据库被刷爆，</p>
<p>其次，就是没有审核功能，有点不放心，</p>
<p>]]>
    </summary>
    <title>该不该添加评论系统？</title>
    <updated>2026-08-12T12:59:06.688Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <content>
      <![CDATA[<p>前几天我又打听到eu.cc这个免费二级域名，</p><p>于是我满怀期待的注册了一个</p><p>注册还算简单，但是不仅要邮箱，还要绑定Authenticator这一类动态验证码，不过也还好</p><p>之后还是老一套，改ns，绑定cloudflare，新建pages项目，连接github仓库</p><p>访问的时候发现问题了，我用itdog测了一遍，大部分的访问被阻断了</p><p>后面查了一下信息，这类免费域名常常会被阻断，因为存在大量滥用问题</p><p>算了，只能放弃了，反正我都有.xyz了，知足了</p><p>毕竟免费域名，所有权不在我们手上</p><p>只能说，乐趣在于折腾</p>]]>
    </content>
    <id>https://i.101229.xyz/2026/08/07/2026-08-07-01/</id>
    <link href="https://i.101229.xyz/2026/08/07/2026-08-07-01/"/>
    <published>2026-08-07T02:27:37.000Z</published>
    <summary>
      <![CDATA[<p>前几天我又打听到eu.cc这个免费二级域名，</p>
<p>于是我满怀期待的注册了一个</p>
<p>注册还算简单，但是不仅要邮箱，还要绑定Authenticator这一类动态验证码，不过也还好</p>
<p>之后还是老一套，改ns，绑定cloudflare，新建pages]]>
    </summary>
    <title>免费域名这么坑</title>
    <updated>2026-08-12T12:59:06.688Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <content>
      <![CDATA[<p>分享图片<br><img src="/img/2.jpg"><br>Mygo!!!!!</p>]]>
    </content>
    <id>https://i.101229.xyz/2026/08/06/2026-08-06-03/</id>
    <link href="https://i.101229.xyz/2026/08/06/2026-08-06-03/"/>
    <published>2026-08-06T02:09:13.000Z</published>
    <summary>
      <![CDATA[<p>分享图片<br><img src="/img/2.jpg"><br>Mygo!!!!!</p>]]>
    </summary>
    <title>分享图片</title>
    <updated>2026-08-12T12:59:06.688Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <content>
      <![CDATA[<p>之前写了一个倒计时HTML，很简单，只有30行</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">&lt;!DOCTYPE <span class="keyword">html</span>&gt;</span><span class="tag">&lt;<span class="name">html</span> <span class="attr">lang</span>=<span class="string">&quot;zh-CN&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">head</span>&gt;</span><span class="tag">&lt;<span class="name">meta</span> <span class="attr">charset</span>=<span class="string">&quot;UTF-8&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">meta</span> <span class="attr">name</span>=<span class="string">&quot;viewport&quot;</span> <span class="attr">content</span>=<span class="string">&quot;width=device-width,initial-scale=1.0&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">title</span>&gt;</span>高考倒计时<span class="tag">&lt;/<span class="name">title</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">style</span>&gt;</span><span class="language-css"></span></span><br><span class="line"><span class="language-css">        *&#123;<span class="attribute">margin</span>:<span class="number">0</span>;<span class="attribute">padding</span>:<span class="number">0</span>;<span class="attribute">box-sizing</span>:border-box&#125;</span></span><br><span class="line"><span class="language-css">        <span class="selector-tag">body</span>&#123;<span class="attribute">background</span>:<span class="number">#000</span>;<span class="attribute">color</span>:<span class="number">#fff</span>;<span class="attribute">font-family</span>:system-ui,sans-serif;<span class="attribute">height</span>:<span class="number">100vh</span>;<span class="attribute">display</span>:flex;<span class="attribute">flex-direction</span>:column;<span class="attribute">justify-content</span>:center;<span class="attribute">align-items</span>:center;<span class="attribute">overflow</span>:hidden&#125;</span></span><br><span class="line"><span class="language-css">        <span class="selector-tag">body</span><span class="selector-pseudo">::before</span>&#123;<span class="attribute">content</span>:<span class="string">&quot;&quot;</span>;<span class="attribute">position</span>:absolute;<span class="attribute">inset</span>:<span class="number">0</span>;<span class="attribute">background-image</span>:<span class="built_in">linear-gradient</span>(<span class="built_in">rgba</span>(<span class="number">255</span>,<span class="number">255</span>,<span class="number">255</span>,.<span class="number">06</span>) <span class="number">1px</span>,transparent <span class="number">1px</span>),<span class="built_in">linear-gradient</span>(<span class="number">90deg</span>,<span class="built_in">rgba</span>(<span class="number">255</span>,<span class="number">255</span>,<span class="number">255</span>,.<span class="number">06</span>) <span class="number">1px</span>,transparent <span class="number">1px</span>);<span class="attribute">background-size</span>:<span class="number">40px</span> <span class="number">40px</span>;<span class="attribute">pointer-events</span>:none&#125;</span></span><br><span class="line"><span class="language-css">        <span class="selector-tag">h1</span>&#123;<span class="attribute">font-size</span>:<span class="built_in">clamp</span>(<span class="number">1.2rem</span>,<span class="number">4vw</span>,<span class="number">2rem</span>);<span class="attribute">font-weight</span>:<span class="number">200</span>;<span class="attribute">letter-spacing</span>:.<span class="number">5em</span>;<span class="attribute">margin-bottom</span>:<span class="built_in">clamp</span>(<span class="number">30px</span>,<span class="number">8vh</span>,<span class="number">80px</span>);<span class="attribute">z-index</span>:<span class="number">1</span>;<span class="attribute">text-indent</span>:.<span class="number">5em</span>&#125;</span></span><br><span class="line"><span class="language-css">        <span class="selector-class">.c</span>&#123;<span class="attribute">display</span>:flex;<span class="attribute">gap</span>:<span class="built_in">clamp</span>(<span class="number">8px</span>,<span class="number">2.5vw</span>,<span class="number">30px</span>);<span class="attribute">align-items</span>:center;<span class="attribute">z-index</span>:<span class="number">1</span>&#125;</span></span><br><span class="line"><span class="language-css">        <span class="selector-class">.b</span>&#123;<span class="attribute">display</span>:flex;<span class="attribute">flex-direction</span>:column;<span class="attribute">align-items</span>:center&#125;</span></span><br><span class="line"><span class="language-css">        <span class="selector-class">.b</span> <span class="selector-tag">span</span>&#123;<span class="attribute">font-family</span>:<span class="string">&#x27;Courier New&#x27;</span>,monospace;<span class="attribute">font-size</span>:<span class="built_in">clamp</span>(<span class="number">2.2rem</span>,<span class="number">11vw</span>,<span class="number">8rem</span>);<span class="attribute">font-weight</span>:<span class="number">700</span>;<span class="attribute">line-height</span>:<span class="number">1</span>;<span class="attribute">font-variant-numeric</span>:tabular-nums&#125;</span></span><br><span class="line"><span class="language-css">        <span class="selector-class">.b</span> <span class="selector-tag">p</span>&#123;<span class="attribute">margin-top</span>:<span class="built_in">clamp</span>(<span class="number">6px</span>,<span class="number">1.5vh</span>,<span class="number">16px</span>);<span class="attribute">font-size</span>:<span class="built_in">clamp</span>(.<span class="number">5rem</span>,<span class="number">1.5vw</span>,.<span class="number">8rem</span>);<span class="attribute">letter-spacing</span>:.<span class="number">2em</span>;<span class="attribute">color</span>:<span class="number">#666</span>;<span class="attribute">text-transform</span>:uppercase&#125;</span></span><br><span class="line"><span class="language-css">        <span class="selector-tag">i</span>&#123;<span class="attribute">font-style</span>:normal;<span class="attribute">font-size</span>:<span class="built_in">clamp</span>(<span class="number">1.5rem</span>,<span class="number">7vw</span>,<span class="number">5rem</span>);<span class="attribute">font-weight</span>:<span class="number">100</span>;<span class="attribute">color</span>:<span class="number">#333</span>;<span class="attribute">line-height</span>:<span class="number">1</span>&#125;</span></span><br><span class="line"><span class="language-css">    </span><span class="tag">&lt;/<span class="name">style</span>&gt;</span><span class="tag">&lt;/<span class="name">head</span>&gt;</span><span class="tag">&lt;<span class="name">body</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">h1</span>&gt;</span>高考倒计时<span class="tag">&lt;/<span class="name">h1</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;c&quot;</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;b&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">span</span> <span class="attr">id</span>=<span class="string">&quot;d&quot;</span>&gt;</span>000<span class="tag">&lt;/<span class="name">span</span>&gt;</span><span class="tag">&lt;<span class="name">p</span>&gt;</span>Days<span class="tag">&lt;/<span class="name">p</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span><span class="tag">&lt;<span class="name">i</span>&gt;</span>:<span class="tag">&lt;/<span class="name">i</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;b&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">span</span> <span class="attr">id</span>=<span class="string">&quot;h&quot;</span>&gt;</span>00<span class="tag">&lt;/<span class="name">span</span>&gt;</span><span class="tag">&lt;<span class="name">p</span>&gt;</span>Hours<span class="tag">&lt;/<span class="name">p</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span><span class="tag">&lt;<span class="name">i</span>&gt;</span>:<span class="tag">&lt;/<span class="name">i</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;b&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">span</span> <span class="attr">id</span>=<span class="string">&quot;m&quot;</span>&gt;</span>00<span class="tag">&lt;/<span class="name">span</span>&gt;</span><span class="tag">&lt;<span class="name">p</span>&gt;</span>Minutes<span class="tag">&lt;/<span class="name">p</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span><span class="tag">&lt;<span class="name">i</span>&gt;</span>:<span class="tag">&lt;/<span class="name">i</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;b&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">span</span> <span class="attr">id</span>=<span class="string">&quot;s&quot;</span>&gt;</span>00<span class="tag">&lt;/<span class="name">span</span>&gt;</span><span class="tag">&lt;<span class="name">p</span>&gt;</span>Seconds<span class="tag">&lt;/<span class="name">p</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span>&gt;</span><span class="language-javascript"></span></span><br><span class="line"><span class="language-javascript">    <span class="keyword">const</span> T=<span class="keyword">new</span> <span class="title class_">Date</span>(<span class="string">&#x27;2029-06-07T09:00:00+08:00&#x27;</span>).<span class="title function_">getTime</span>(),d=<span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&#x27;d&#x27;</span>),h=<span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&#x27;h&#x27;</span>),m=<span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&#x27;m&#x27;</span>),s=<span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&#x27;s&#x27;</span>);</span></span><br><span class="line"><span class="language-javascript">    <span class="keyword">function</span> <span class="title function_">u</span>(<span class="params"></span>)&#123;<span class="keyword">let</span> n=<span class="title class_">Date</span>.<span class="title function_">now</span>(),x=T-n;<span class="keyword">if</span>(x&lt;=<span class="number">0</span>)&#123;d.<span class="property">textContent</span>=<span class="string">&#x27;000&#x27;</span>;h.<span class="property">textContent</span>=<span class="string">&#x27;00&#x27;</span>;m.<span class="property">textContent</span>=<span class="string">&#x27;00&#x27;</span>;s.<span class="property">textContent</span>=<span class="string">&#x27;00&#x27;</span>;<span class="keyword">return</span>&#125;d.<span class="property">textContent</span>=<span class="title class_">String</span>(<span class="title class_">Math</span>.<span class="title function_">floor</span>(x/<span class="number">864e5</span>)).<span class="title function_">padStart</span>(<span class="number">3</span>,<span class="string">&#x27;0&#x27;</span>);h.<span class="property">textContent</span>=<span class="title class_">String</span>(<span class="title class_">Math</span>.<span class="title function_">floor</span>(x%<span class="number">864e5</span>/<span class="number">36e5</span>)).<span class="title function_">padStart</span>(<span class="number">2</span>,<span class="string">&#x27;0&#x27;</span>);m.<span class="property">textContent</span>=<span class="title class_">String</span>(<span class="title class_">Math</span>.<span class="title function_">floor</span>(x%<span class="number">36e5</span>/<span class="number">6e4</span>)).<span class="title function_">padStart</span>(<span class="number">2</span>,<span class="string">&#x27;0&#x27;</span>);s.<span class="property">textContent</span>=<span class="title class_">String</span>(<span class="title class_">Math</span>.<span class="title function_">floor</span>(x%<span class="number">6e4</span>/<span class="number">1e3</span>)).<span class="title function_">padStart</span>(<span class="number">2</span>,<span class="string">&#x27;0&#x27;</span>)&#125;</span></span><br><span class="line"><span class="language-javascript">    <span class="built_in">setInterval</span>(u,<span class="number">1000</span>);<span class="title function_">u</span>();</span></span><br><span class="line"><span class="language-javascript"></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span><span class="tag">&lt;/<span class="name">body</span>&gt;</span><span class="tag">&lt;/<span class="name">html</span>&gt;</span></span><br></pre></td></tr></table></figure><p>现在把html中间内联的JavaScript抽离出来</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">&lt;script&gt;</span><br><span class="line">    <span class="keyword">const</span> T=<span class="keyword">new</span> <span class="title class_">Date</span>(<span class="string">&#x27;2029-06-07T09:00:00+08:00&#x27;</span>).<span class="title function_">getTime</span>(),d=<span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&#x27;d&#x27;</span>),h=<span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&#x27;h&#x27;</span>),m=<span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&#x27;m&#x27;</span>),s=<span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&#x27;s&#x27;</span>);</span><br><span class="line">    <span class="keyword">function</span> <span class="title function_">u</span>(<span class="params"></span>)&#123;<span class="keyword">let</span> n=<span class="title class_">Date</span>.<span class="title function_">now</span>(),x=T-n;<span class="keyword">if</span>(x&lt;=<span class="number">0</span>)&#123;d.<span class="property">textContent</span>=<span class="string">&#x27;000&#x27;</span>;h.<span class="property">textContent</span>=<span class="string">&#x27;00&#x27;</span>;m.<span class="property">textContent</span>=<span class="string">&#x27;00&#x27;</span>;s.<span class="property">textContent</span>=<span class="string">&#x27;00&#x27;</span>;<span class="keyword">return</span>&#125;d.<span class="property">textContent</span>=<span class="title class_">String</span>(<span class="title class_">Math</span>.<span class="title function_">floor</span>(x/<span class="number">864e5</span>)).<span class="title function_">padStart</span>(<span class="number">3</span>,<span class="string">&#x27;0&#x27;</span>);h.<span class="property">textContent</span>=<span class="title class_">String</span>(<span class="title class_">Math</span>.<span class="title function_">floor</span>(x%<span class="number">864e5</span>/<span class="number">36e5</span>)).<span class="title function_">padStart</span>(<span class="number">2</span>,<span class="string">&#x27;0&#x27;</span>);m.<span class="property">textContent</span>=<span class="title class_">String</span>(<span class="title class_">Math</span>.<span class="title function_">floor</span>(x%<span class="number">36e5</span>/<span class="number">6e4</span>)).<span class="title function_">padStart</span>(<span class="number">2</span>,<span class="string">&#x27;0&#x27;</span>);s.<span class="property">textContent</span>=<span class="title class_">String</span>(<span class="title class_">Math</span>.<span class="title function_">floor</span>(x%<span class="number">6e4</span>/<span class="number">1e3</span>)).<span class="title function_">padStart</span>(<span class="number">2</span>,<span class="string">&#x27;0&#x27;</span>)&#125;</span><br><span class="line">    <span class="built_in">setInterval</span>(u,<span class="number">1000</span>);<span class="title function_">u</span>();</span><br><span class="line">&lt;/script&gt;</span><br></pre></td></tr></table></figure><p>随便找一个JavaScript混淆工具<br>就得到了下面这一段</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> _0x2a56c6=_0x5888;(<span class="keyword">function</span>(<span class="params">_0x4c30d9,_0x1e8d78</span>)&#123;<span class="keyword">const</span> _0x3e728d=_0x5888,_0x2d0b75=<span class="title function_">_0x4c30d9</span>();<span class="keyword">while</span>(!![])&#123;<span class="keyword">try</span>&#123;<span class="keyword">const</span> _0x3498a8=-<span class="built_in">parseInt</span>(<span class="title function_">_0x3e728d</span>(<span class="number">0x111</span>))/<span class="number">0x1</span>*(-<span class="built_in">parseInt</span>(<span class="title function_">_0x3e728d</span>(<span class="number">0x102</span>))/<span class="number">0x2</span>)+-<span class="built_in">parseInt</span>(<span class="title function_">_0x3e728d</span>(<span class="number">0x10b</span>))/<span class="number">0x3</span>*(-<span class="built_in">parseInt</span>(<span class="title function_">_0x3e728d</span>(<span class="number">0x10a</span>))/<span class="number">0x4</span>)+<span class="built_in">parseInt</span>(<span class="title function_">_0x3e728d</span>(<span class="number">0x105</span>))/<span class="number">0x5</span>+-<span class="built_in">parseInt</span>(<span class="title function_">_0x3e728d</span>(<span class="number">0x10d</span>))/<span class="number">0x6</span>*(<span class="built_in">parseInt</span>(<span class="title function_">_0x3e728d</span>(<span class="number">0x104</span>))/<span class="number">0x7</span>)+<span class="built_in">parseInt</span>(<span class="title function_">_0x3e728d</span>(<span class="number">0x109</span>))/<span class="number">0x8</span>*(-<span class="built_in">parseInt</span>(<span class="title function_">_0x3e728d</span>(<span class="number">0x10c</span>))/<span class="number">0x9</span>)+-<span class="built_in">parseInt</span>(<span class="title function_">_0x3e728d</span>(<span class="number">0x10f</span>))/<span class="number">0xa</span>+-<span class="built_in">parseInt</span>(<span class="title function_">_0x3e728d</span>(<span class="number">0x108</span>))/<span class="number">0xb</span>;<span class="keyword">if</span>(_0x3498a8===_0x1e8d78)<span class="keyword">break</span>;<span class="keyword">else</span> _0x2d0b75[<span class="string">&#x27;push&#x27;</span>](_0x2d0b75[<span class="string">&#x27;shift&#x27;</span>]());&#125;<span class="keyword">catch</span>(_0x1e4525)&#123;_0x2d0b75[<span class="string">&#x27;push&#x27;</span>](_0x2d0b75[<span class="string">&#x27;shift&#x27;</span>]());&#125;&#125;&#125;(_0x591e,<span class="number">0xaa8f0</span>));<span class="keyword">const</span> T=<span class="keyword">new</span> <span class="title class_">Date</span>(<span class="title function_">_0x2a56c6</span>(<span class="number">0x103</span>))[<span class="title function_">_0x2a56c6</span>(<span class="number">0x106</span>)](),d=<span class="variable language_">document</span>[<span class="title function_">_0x2a56c6</span>(<span class="number">0x110</span>)](<span class="string">&#x27;d&#x27;</span>),h=<span class="variable language_">document</span>[<span class="title function_">_0x2a56c6</span>(<span class="number">0x110</span>)](<span class="string">&#x27;h&#x27;</span>),m=<span class="variable language_">document</span>[<span class="title function_">_0x2a56c6</span>(<span class="number">0x110</span>)](<span class="string">&#x27;m&#x27;</span>),s=<span class="variable language_">document</span>[<span class="title function_">_0x2a56c6</span>(<span class="number">0x110</span>)](<span class="string">&#x27;s&#x27;</span>);<span class="keyword">function</span> <span class="title function_">_0x5888</span>(<span class="params">_0x47a547,_0x538b67</span>)&#123;<span class="keyword">const</span> _0x591e0e=<span class="title function_">_0x591e</span>();<span class="keyword">return</span> _0x5888=<span class="keyword">function</span>(<span class="params">_0x588844,_0x3b02de</span>)&#123;_0x588844=_0x588844-<span class="number">0x101</span>;<span class="keyword">let</span> _0x269a09=_0x591e0e[_0x588844];<span class="keyword">return</span> _0x269a09;&#125;,<span class="title function_">_0x5888</span>(_0x47a547,_0x538b67);&#125;<span class="keyword">function</span> <span class="title function_">_0x591e</span>(<span class="params"></span>)&#123;<span class="keyword">const</span> _0x54f174=[<span class="string">&#x27;000&#x27;</span>,<span class="string">&#x27;148siPsMJ&#x27;</span>,<span class="string">&#x27;2029-06-07T09:00:00+08:00&#x27;</span>,<span class="string">&#x27;273JEWkEv&#x27;</span>,<span class="string">&#x27;4548785uoONsM&#x27;</span>,<span class="string">&#x27;getTime&#x27;</span>,<span class="string">&#x27;textContent&#x27;</span>,<span class="string">&#x27;11117018Yiwmrn&#x27;</span>,<span class="string">&#x27;136UlZBcu&#x27;</span>,<span class="string">&#x27;143540sJdogC&#x27;</span>,<span class="string">&#x27;90nouaqW&#x27;</span>,<span class="string">&#x27;341307ECMzPL&#x27;</span>,<span class="string">&#x27;80604kcCLtk&#x27;</span>,<span class="string">&#x27;floor&#x27;</span>,<span class="string">&#x27;45100VIKZYM&#x27;</span>,<span class="string">&#x27;getElementById&#x27;</span>,<span class="string">&#x27;12109bvXMSM&#x27;</span>,<span class="string">&#x27;padStart&#x27;</span>];_0x591e=<span class="keyword">function</span>(<span class="params"></span>)&#123;<span class="keyword">return</span> _0x54f174;&#125;;<span class="keyword">return</span> <span class="title function_">_0x591e</span>();&#125;<span class="keyword">function</span> <span class="title function_">u</span>(<span class="params"></span>)&#123;<span class="keyword">const</span> _0x2642d1=_0x2a56c6;<span class="keyword">let</span> _0xb6362c=<span class="title class_">Date</span>[<span class="string">&#x27;now&#x27;</span>](),_0x28374a=T-_0xb6362c;<span class="keyword">if</span>(_0x28374a&lt;=<span class="number">0x0</span>)&#123;d[<span class="title function_">_0x2642d1</span>(<span class="number">0x107</span>)]=<span class="title function_">_0x2642d1</span>(<span class="number">0x101</span>),h[<span class="string">&#x27;textContent&#x27;</span>]=<span class="string">&#x27;00&#x27;</span>,m[<span class="title function_">_0x2642d1</span>(<span class="number">0x107</span>)]=<span class="string">&#x27;00&#x27;</span>,s[<span class="title function_">_0x2642d1</span>(<span class="number">0x107</span>)]=<span class="string">&#x27;00&#x27;</span>;<span class="keyword">return</span>;&#125;d[<span class="title function_">_0x2642d1</span>(<span class="number">0x107</span>)]=<span class="title class_">String</span>(<span class="title class_">Math</span>[<span class="title function_">_0x2642d1</span>(<span class="number">0x10e</span>)](_0x28374a/<span class="number">0x5265c00</span>))[<span class="string">&#x27;padStart&#x27;</span>](<span class="number">0x3</span>,<span class="string">&#x27;0&#x27;</span>),h[<span class="title function_">_0x2642d1</span>(<span class="number">0x107</span>)]=<span class="title class_">String</span>(<span class="title class_">Math</span>[<span class="title function_">_0x2642d1</span>(<span class="number">0x10e</span>)](_0x28374a%<span class="number">0x5265c00</span>/<span class="number">0x36ee80</span>))[<span class="title function_">_0x2642d1</span>(<span class="number">0x112</span>)](<span class="number">0x2</span>,<span class="string">&#x27;0&#x27;</span>),m[<span class="title function_">_0x2642d1</span>(<span class="number">0x107</span>)]=<span class="title class_">String</span>(<span class="title class_">Math</span>[<span class="title function_">_0x2642d1</span>(<span class="number">0x10e</span>)](_0x28374a%<span class="number">0x36ee80</span>/<span class="number">0xea60</span>))[<span class="string">&#x27;padStart&#x27;</span>](<span class="number">0x2</span>,<span class="string">&#x27;0&#x27;</span>),s[<span class="title function_">_0x2642d1</span>(<span class="number">0x107</span>)]=<span class="title class_">String</span>(<span class="title class_">Math</span>[<span class="string">&#x27;floor&#x27;</span>](_0x28374a%<span class="number">0xea60</span>/<span class="number">0x3e8</span>))[<span class="string">&#x27;padStart&#x27;</span>](<span class="number">0x2</span>,<span class="string">&#x27;0&#x27;</span>);&#125;<span class="built_in">setInterval</span>(u,<span class="number">0x3e8</span>),<span class="title function_">u</span>();</span><br></pre></td></tr></table></figure><p>看起来效果还不错</p>]]>
    </content>
    <id>https://i.101229.xyz/2026/08/06/2026-08-06-02/</id>
    <link href="https://i.101229.xyz/2026/08/06/2026-08-06-02/"/>
    <published>2026-08-06T01:48:03.000Z</published>
    <summary>
      <![CDATA[<p>之前写了一个倒计时HTML，很简单，只有30行</p>
<figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class=]]>
    </summary>
    <title>javascript混淆</title>
    <updated>2026-08-12T12:59:06.688Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <content>
      <![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt"     data-hbe-format="4"     data-wpm="密码错误，请再试一次"     data-whm="密码错误，请再试一次"     data-salt="60e01505ff78c411071927f7db58032ed0154ebb3647a2787cf2cdd6904bedaa"     data-nonce="20536d044bb33afeee1cb97c"     data-kdf-iterations="250000"     data-auto-save="false">  <script id="hbeData" type="hbeData">    39d60b9ccb9ff2bbbf89f3aab50793d6dbb74ee60dc34783a85486d88b86ef881dc9f170d9a95a84189fb5d6ce88162d0bf393ea3b7f29de68f94e195aaf57f825ad676824ad8a562fa58845cadd91a27ae03a8a95a62aba02a76eff87f57ffb22612cef741a183dffd4b3f8fcca1eb4d72aeeeb1d2a64bb38eff9cd0cae36ca28da15fba1ac8548cfec86857e910f0e078242dc705fe084214492dd62b232121a33d31da488a0c0d3d8b84ae2e58f3eb0db3370d8005b3973647b82f1cd1c82b13e3a9faf41b95a8b8e4215bda1435baf21649f1798ac6dae0d62591cb878628a0d69f3a686e70178ba141b588c8c5acadbc660de522c13fb0a682c3bff5317eafce418bc01a6e76926ddf1c93dcd651161c0be156a0b691dd2d406cc1827490fc16594f74d6f77e5e04f4bd5ded9d802b65fb39d84aaba823c8c6e9a9b4758792ed09c1ecf81e4762f26  </script>  <div class="hbe hbe-content">    <form id="hbeForm" class="hbe hbe-form" onsubmit="return false">      <div class="hbe hbe-input hbe-input-default">      <input class="hbe hbe-input-field hbe-input-field-default" type="password" id="hbePass">      <label class="hbe hbe-input-label hbe-input-label-default" for="hbePass">        <span class="hbe hbe-input-label-content hbe-input-label-content-default">这是一篇加密文章,请输入密码</span>      </label>    </div>      <button class="hbe hbe-button" type="submit">Decrypt</button>      <div class="hbe hbe-error" role="alert" aria-live="polite"></div>    </form>  </div></div><script data-pjax src="/lib/hbe.9e70f1e1d2.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]>
    </content>
    <id>https://i.101229.xyz/2026/08/06/2026-08-06-01/</id>
    <link href="https://i.101229.xyz/2026/08/06/2026-08-06-01/"/>
    <published>2026-08-06T01:30:16.000Z</published>
    <summary>Here's something encrypted, password is required to continue reading.</summary>
    <title>加密文章测试</title>
    <updated>2026-08-12T12:59:06.688Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <content>
      <![CDATA[<p>之前我想给Hexo博客加一个构建时间功能</p><p>我让AI帮我写了一个<br>前情提要：<a href="https://i.101229.xyz/2026/08/05/2026-08-05-03/">https://i.101229.xyz/2026/08/05/2026-08-05-03/</a></p><p>可惜呀，可惜，我忘记了cloudflare的构建服务器用的是UTC时间，</p><p>我问了AI，他说是没有指定时区导致的，</p><p>于是我直接commit在文件最开头加上这句：<br>process.env.TZ &#x3D; ‘Asia&#x2F;Shanghai’;</p><p>我本以为这样事情就结束了<br>结果啊，结果构建时间直接就不动了<br>我开始反思</p><p>最后想起之前看过一篇文章，Cloudflare会强缓存JavaScript和CSS，不缓存HTML<br>这就说通了，</p><p>于是我再让它写了个版本，直接使用script的HTML注入，把构建时间信息塞到.other-footer，也就是网页底部</p><p>我现在把这篇文章再提交上去</p><p>要是这次修改再没用，那我也没招了</p><p>那就明天再修吧</p><p>后记</p><p>我把这篇文章喂给AI，我发现AI的思考过程中提到了浏览器缓存，<br>我在提交这篇文章之前，也就是发布这个版本之前，<br>特地把浏览器缓存清了一遍，<br>结果发现，居然运行了，<br>之前的代码能用，只不过我没有清缓存！！！</p><p>只不过我再想了一下<br>万一经常看我博客的人，不清浏览器缓存，实际上这个也不好，<br>释怀了</p>]]>
    </content>
    <id>https://i.101229.xyz/2026/08/05/2026-08-05-07/</id>
    <link href="https://i.101229.xyz/2026/08/05/2026-08-05-07/"/>
    <published>2026-08-05T09:05:15.000Z</published>
    <summary>
      <![CDATA[<p>之前我想给Hexo博客加一个构建时间功能</p>
<p>我让AI帮我写了一个<br>前情提要：<a href="https://i.101229.xyz/2026/08/05/2026-08-05-03/">https://i.101229.xyz/2026/08/05/2]]>
    </summary>
    <title>智斗AI</title>
    <updated>2026-08-12T12:59:06.688Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <content>
      <![CDATA[<p>之前我不是做了一个显示构建时间功能么？</p><p>现在是下午16点，可是它却显示是8点</p><p>我就想16-8，不是8么，</p><p>时差八小时，坏菜了，Cloudflare构建的服务器可能用的是UTC时间</p><p>导致显示的构建时间有问题</p><p>我灵机一动</p><p>在js前面加一个process.env.TZ &#x3D; ‘Asia&#x2F;Shanghai’;</p><p>指定使用标准的时间</p><p>这下就没问题了</p><p>就是耗费一次构建次数…</p>]]>
    </content>
    <id>https://i.101229.xyz/2026/08/05/2026-08-05-06/</id>
    <link href="https://i.101229.xyz/2026/08/05/2026-08-05-06/"/>
    <published>2026-08-05T08:47:21.000Z</published>
    <summary>
      <![CDATA[<p>之前我不是做了一个显示构建时间功能么？</p>
<p>现在是下午16点，可是它却显示是8点</p>
<p>我就想16-8，不是8么，</p>
<p>时差八小时，坏菜了，Cloudflare构建的服务器可能用的是UTC时间</p>
<p>导致显示的构建时间有问题</p>
<p]]>
    </summary>
    <title>修bug</title>
    <updated>2026-08-12T12:59:06.688Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <content>
      <![CDATA[<p>已经上高中了</p><p>现在学业只会越来越繁忙</p><p>也许以后更新会越来越慢</p><p>大概每周更新一次</p><p>不过放心，我会继续更新的</p><style>.e2147-badge {  display: inline-flex;  font-family: 'Courier New', Courier, monospace;  font-size: 14px;  font-weight: bold;  border-radius: 6px;  overflow: hidden;  border: 2px solid #000;  vertical-align: middle;  line-height: 1;  text-decoration: none;  box-shadow: 2px 2px 0px #000; /* 黑白硬阴影增加立体感 */}.e2147-badge .badge-left {  background-color: #000;  color: #fff;  padding: 6px 10px;}.e2147-badge .badge-right {  background-color: #fff;  color: #000;  padding: 6px 10px;}</style><!-- 使用方式：直接放在文字旁边 --><div class="e2147-badge">  <span class="badge-left">e2147</span>  <span class="badge-right">dev</span></div>]]>
    </content>
    <id>https://i.101229.xyz/2026/08/05/2026-08-05-05/</id>
    <link href="https://i.101229.xyz/2026/08/05/2026-08-05-05/"/>
    <published>2026-08-05T08:06:42.000Z</published>
    <summary>
      <![CDATA[<p>已经上高中了</p>
<p>现在学业只会越来越繁忙</p>
<p>也许以后更新会越来越慢</p>
<p>大概每周更新一次</p>
<p>不过放心，我会继续更新的</p>
<style>
.e2147-badge {
  display: inline-flex;
  fon]]>
    </summary>
    <title>未来会怎么样？</title>
    <updated>2026-08-12T12:59:06.688Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <content>
      <![CDATA[<p>讲真的，我刚开始做这个博客也就属于一种跟风的行为</p><p>因为我在网上看到许多优秀的个人站点，</p><p>我就秉持着这种别人行、我就行的态度，更偏向于是一种竞争，<br>我会专门去想缺少哪些主流的功能，审美这一块会不会落后了？用这个框架会不会性能很低？会不会打造出和别人千篇一律的站点？<br>感觉有些功利性，但又不会获得什么。</p><p>但当我真投入这一种创作中去，我的态度就改变了<br>也许我只是需要一片发表自己想法的空间，也许我只需要有一个坚持下去的理由</p><p>大概就是这样</p>]]>
    </content>
    <id>https://i.101229.xyz/2026/08/05/2026-08-05-04/</id>
    <link href="https://i.101229.xyz/2026/08/05/2026-08-05-04/"/>
    <published>2026-08-05T08:06:19.000Z</published>
    <summary>
      <![CDATA[<p>讲真的，我刚开始做这个博客也就属于一种跟风的行为</p>
<p>因为我在网上看到许多优秀的个人站点，</p>
<p>我就秉持着这种别人行、我就行的态度，更偏向于是一种竞争，<br>我会专门去想缺少哪些主流的功能，审美这一块会不会落后了？用这个框架会不会性能很低？会不会打造出]]>
    </summary>
    <title>对博客这一种表达形式的思考</title>
    <updated>2026-08-12T12:59:06.688Z</updated>
  </entry>
</feed>
