<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="english"><id>/</id><title>毫无作为</title><updated>2026-06-05T18:59:07.625312+08:06</updated><author><name>jcjyxjs</name><email>i@elstec.cn</email></author><link href="/" rel="alternate"/><generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator><logo>/favicon.ico</logo><subtitle>永远年轻，永远热泪盈眶。</subtitle><entry><id>/archives/202108212/</id><title>关于编译OpenWrt固件中找不到luci-app-ssr-plus更新说明</title><updated>2026-06-05T18:59:07.625593+00:00</updated><author><name>jcjyxjs</name><email>i@elstec.cn</email><uri>https://elstec.cn</uri></author><content>&lt;html&gt;
    &lt;div class="warn"&gt;
        &lt;strong&gt;
            教程类文章具有时效性，看清楚发布日期，超过一定日子文章内容可能失效，仅仅作为参考。
        &lt;/strong&gt;
    &lt;/div&gt;
&lt;/html&gt;
&lt;h2&gt;云编译&lt;/h2&gt;
&lt;p&gt;云编译用户看上一篇更新说明：&lt;a href="https://elstec.cn/archives/20210821/"&gt;关于使用GitHub Actions云编译LEDE固件更新说明&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;本地编译用户开始&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;clone&lt;span class="w"&gt; &lt;/span&gt;https://github.com/coolsnowwolf/lede
&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;lede
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;修改&lt;code&gt;feeds.conf.default&lt;/code&gt;文件 &lt;strong&gt;（以下是2021年8月21日的文件）&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;src-git packages https://github.com/coolsnowwolf/packages
src-git luci https://github.com/coolsnowwolf/luci
src-git routing https://git.openwrt.org/feed/routing.git
src-git telephony https://git.openwrt.org/feed/telephony.git
#src-git video https://github.com/openwrt/video.git
#src-git targets https://github.com/openwrt/targets.git
#src-git oldpackages http://git.openwrt.org/packages.git
#src-link custom /usr/src/openwrt/custom-feed
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以发现并没有&lt;code&gt;XXRPlus&lt;/code&gt;或&lt;code&gt;PassWall&lt;/code&gt;，自行添加&lt;code&gt;XXRPlus&lt;/code&gt;或&lt;code&gt;PassWall&lt;/code&gt;。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;src-git helloworld https://github.com/fw876/helloworld
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code&gt;src-git passwall https://github.com/xiaorouji/openwrt-passwall
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后保存。&lt;/p&gt;&lt;p&gt;我的博客即将同步至腾讯云+社区，邀请大家一同入驻：&lt;a href="https://cloud.tencent.com/developer/support-plan?invite_code=b70aijpftod5"&gt;https://cloud.tencent.com/developer/support-plan?invite_code=b70aijpftod5&lt;/a&gt;&lt;/p&gt;</content><link href="/archives/202108212/"/><published>2021-08-21T23:00:00+08:06</published></entry><entry><id>/archives/20210913/</id><title>使用腾讯云Webify托管静态网站</title><updated>2026-06-05T18:59:07.625570+00:00</updated><author><name>jcjyxjs</name><email>i@elstec.cn</email><uri>https://elstec.cn</uri></author><content>&lt;div class="notice"&gt;绑定自定义域名需要提前完成备案&lt;/div&gt;&lt;p&gt;更多更详细配置参考官方文档：&lt;a href="https://webify.cloudbase.net/docs/introduction/"&gt;&lt;a href="https://webify.cloudbase.net/docs/introduction/"&gt;https://webify.cloudbase.net/docs/introduction/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;目前（2021年9月13日）仅支持部署静态网站，后期会支持&lt;code&gt;serverless&lt;/code&gt;能力，类似于&lt;code&gt;Vercel&lt;/code&gt;。本文以介绍接入静态网站为主。&lt;/p&gt;&lt;p&gt;登录&lt;code&gt;webify&lt;/code&gt;后台设置&lt;code&gt;Git&lt;/code&gt;平台账号授权。&lt;a href="https://console.cloud.tencent.com/webify/set"&gt;&lt;a href="https://console.cloud.tencent.com/webify/set"&gt;https://console.cloud.tencent.com/webify/set&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;然后在&lt;a href="https://console.cloud.tencent.com/webify/new"&gt;Webify 新建应用页面&lt;/a&gt;新建一个模板或选择导入&lt;code&gt;Git&lt;/code&gt;平台仓库&lt;/p&gt;&lt;div class="photoset"&gt;&lt;div class="photos"&gt;&lt;figure class="pswp-item"  size-undefined&gt;&lt;img loading="lazy" width="-1" height="-1" src="https://cdn.elstec.cn/41/1.png" /&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;应用名称随意，如果使用这些静态程序的话，可以直接使用预设，自己的程序不在内也可自定义构建命令，输出目录和安装命令。（已经构建完成的静态网站只需要设置目录为&lt;code&gt;.&lt;/code&gt;即可，其他都无需设置。）&lt;/p&gt;&lt;div class="photoset"&gt;&lt;div class="photos"&gt;&lt;figure class="pswp-item"  size-undefined&gt;&lt;img loading="lazy" width="-1" height="-1" src="https://cdn.elstec.cn/41/2.png" /&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;然后就是等待几分钟部署完成。可以在应用列表找到该应用。默认分配了一个超长的应用域名，可以在应用设置→自定义域名设置绑定自定义域名。后续在&lt;code&gt;Git&lt;/code&gt;平台上有新提交&lt;code&gt;Webify&lt;/code&gt;也会自动同步并构建。&lt;/p&gt;&lt;blockquote&gt;
&lt;p&gt;定价：Webify 费用参考：1000PV 网站预计消耗 0.21 元/天，300 元基本覆盖大部分个人站点的两年托管费用。如个别站点流量较大可额外联系申请。被刷流量提交工单审核也会免除被刷的费用&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;缺点：自定义域名CDN控制并没有接入内容分发网络控制台，控制选项不够多。删除应用不会马上把绑定的自定义域名删除，需要等待2-3小时系统删除或先删除域名再删应用。&lt;/p&gt;</content><link href="/archives/20210913/"/><published>2021-09-13T01:00:00+08:06</published></entry><entry><id>/archives/20210915/</id><title>使用Coding Devops+自动构建以及部署博客</title><updated>2026-06-05T18:59:07.625548+00:00</updated><author><name>jcjyxjs</name><email>i@elstec.cn</email><uri>https://elstec.cn</uri></author><content>&lt;h1&gt;看前须知&lt;/h1&gt;
&lt;p&gt;本文只是我使用&lt;code&gt;Coding Devops+&lt;/code&gt;部署博客以及自动&lt;code&gt;Push&lt;/code&gt;到&lt;code&gt;GitHub&lt;/code&gt;的过程记录，我只用到了&lt;code&gt;repo&lt;/code&gt;和&lt;code&gt;ci&lt;/code&gt;功能，不需要一模一样，&lt;code&gt;hexo&lt;/code&gt;等可以效仿，其他仅作参考，有问题评论留言即可。&lt;strong&gt;（看懂本文需要会一点&lt;code&gt;Git&lt;/code&gt;，&lt;code&gt;Linux&lt;/code&gt;服务器相关内容）&lt;/strong&gt;&lt;/p&gt;&lt;h3&gt;当前构建状态&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://jcjyxjs.coding.net/p/blog/ci/job"&gt;&lt;figure class="pswp-item"  size-undefined&gt;&lt;img loading="lazy" width="-1" height="-1" src="https://jcjyxjs.coding.net/badges/blog/job/808073/build.svg" /&gt;&lt;figcaption&gt;构建状态&lt;/figcaption&gt;&lt;/figure&gt;&lt;/a&gt;&lt;/p&gt;&lt;h1&gt;开始&lt;/h1&gt;
&lt;p&gt;实现的最终效果如图。&lt;/p&gt;&lt;div class="photoset"&gt;&lt;div class="photos"&gt;&lt;figure class="pswp-item"  size-undefined&gt;&lt;img loading="lazy" width="-1" height="-1" src="https://cdn.elstec.cn/42/1.svg" /&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;Coding&lt;/code&gt;这个实现起来不是很难，我自己用也不需要什么测试，迭代。&lt;/p&gt;&lt;p&gt;在想要构建的仓库里&lt;code&gt;创建构建计划&lt;/code&gt;→&lt;code&gt;自定义构建过程&lt;/code&gt;→&lt;code&gt;不使用代码仓库&lt;/code&gt;。不适用代码仓库的原因是如果一开始就使用选定的仓库，运行&lt;code&gt;CI&lt;/code&gt;会全局覆盖&lt;code&gt;Git&lt;/code&gt;信息导致后续无法&lt;code&gt;Push&lt;/code&gt;到&lt;code&gt;Github&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;不选代码仓库就没有检出这一步骤，第一步创建&lt;code&gt;执行Shell脚本&lt;/code&gt;，内容就是&lt;code&gt;clone&lt;/code&gt;托管在&lt;code&gt;Coding&lt;/code&gt;的仓库，不使用&lt;code&gt;SSH&lt;/code&gt;方式，改成账号密码。除了账号密码以外的部分可以在仓库里找到。&lt;/p&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;git&lt;span class="w"&gt; &lt;/span&gt;clone&lt;span class="w"&gt; &lt;/span&gt;https://账号:密码@e.coding.net/用户名/项目名/项目名.git
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;Coding CI&lt;/code&gt;的初始目录如下，所有的操作都会在这个目录里进行，需要注意的是：如果有&lt;code&gt;cd&lt;/code&gt;操作，&lt;code&gt;cd&lt;/code&gt;结束之后会自动回到这个目录，所以所有的步骤都要&lt;code&gt;cd&lt;/code&gt;或者直接把内容拖到这个目录。&lt;/p&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;/root/workspace
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;然后先删除项目内的&lt;code&gt;.git&lt;/code&gt;文件夹（改也行），然后就是设置&lt;code&gt;Git&lt;/code&gt;信息。在&lt;code&gt;Coding CI&lt;/code&gt;内无法输入账号密码，所以&lt;code&gt;Push&lt;/code&gt;到&lt;code&gt;Github&lt;/code&gt;需要&lt;code&gt;Github&lt;/code&gt;的&lt;code&gt;Personal access tokens&lt;/code&gt;。在这里新建&lt;code&gt;token&lt;/code&gt;，&lt;a href="https://github.com/settings/tokens"&gt;&lt;a href="https://github.com/settings/tokens"&gt;https://github.com/settings/tokens&lt;/a&gt;&lt;/a&gt; 并把对&lt;code&gt;repo&lt;/code&gt;的控制勾上。&lt;/p&gt;&lt;p&gt;格式跟&lt;code&gt;Coding&lt;/code&gt;那个仓库差不多，可以免密&lt;code&gt;Clone&lt;/code&gt;，&lt;code&gt;Push&lt;/code&gt;等。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://token@github.com/用户名/项目名.git
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;所有&lt;code&gt;Git&lt;/code&gt;的操作就跟在本地一样，唯一的区别就是&lt;code&gt;CI&lt;/code&gt;的服务器&lt;code&gt;Push&lt;/code&gt;到&lt;code&gt;Github&lt;/code&gt;很快hhh，格式如下，最后分支那里不用加&lt;code&gt;HEAD&lt;/code&gt;。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git push https://token@github.com/用户名/项目名.git branch
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;整仓&lt;code&gt;Push&lt;/code&gt;到我的&lt;code&gt;Github&lt;/code&gt;之后，开始构建并生成我的静态内容。我的博客和&lt;code&gt;GitHub Pages&lt;/code&gt;是两个仓库所以我最终会提交两次，博客那个仓库主要做个备份。&lt;/p&gt;&lt;p&gt;我的博客用的&lt;code&gt;Maverick&lt;/code&gt;，所以需要用到&lt;code&gt;Python&lt;/code&gt;，版本只要大于3.6就可以，&lt;code&gt;CI&lt;/code&gt;默认就有环境&lt;code&gt;SDK&lt;/code&gt;内置。具体看官方文档。没有想要的环境或版本可以用自定义&lt;code&gt;docker&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;&lt;a href="https://help.coding.net/docs/ci/node/env.html"&gt;&lt;a href="https://help.coding.net/docs/ci/node/env.html"&gt;https://help.coding.net/docs/ci/node/env.html&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;查看文档可以看到和&lt;code&gt;Python&lt;/code&gt;有关的环境有：&lt;code&gt;python3/pip3: 3.9、3.8、3.7&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;首先我更新默认的&lt;code&gt;pip&lt;/code&gt;版本，其实这个无所谓。&lt;/p&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;python3.9&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;pip&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;--upgrade&lt;span class="w"&gt; &lt;/span&gt;pip
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;然后就是安装依赖&lt;/p&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;pip3.9&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;-r&lt;span class="w"&gt; &lt;/span&gt;requirements.txt
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;最后生成&lt;/p&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;python3.9&lt;span class="w"&gt; &lt;/span&gt;mvrk.py&lt;span class="w"&gt; &lt;/span&gt;--config&lt;span class="w"&gt; &lt;/span&gt;./demo_src/config.py&lt;span class="w"&gt; &lt;/span&gt;--source_dir&lt;span class="w"&gt; &lt;/span&gt;./demo_src/&lt;span class="w"&gt; &lt;/span&gt;--build_dir&lt;span class="w"&gt; &lt;/span&gt;./dist/
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;部署完成之后我需要推送到我的服务器，创建&lt;code&gt;执行 Pipeline 脚本&lt;/code&gt;，可以用私钥也可以用账号密码，具体参考官方文档：&lt;a href="https://help.coding.net/docs/ci/deploy/ssh.html"&gt;&lt;a href="https://help.coding.net/docs/ci/deploy/ssh.html"&gt;https://help.coding.net/docs/ci/deploy/ssh.html&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;如果是图形化编辑器，复制从&lt;code&gt;def&lt;/code&gt;开始的内容即可，文本编辑器参考文档。填写好&lt;code&gt;IP&lt;/code&gt;，端口等之后，可以看到&lt;code&gt;credentialsId&lt;/code&gt;，凭据ID可以在当前项目页面左下角找到项目设置，开发者选项，就有凭据选项。新建凭据，可以用私钥也可以设置账号密码。添加完成后把凭据ID替换到&lt;code&gt;执行的Pipeline脚本&lt;/code&gt;内。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://jcjyxjs.coding.net/p/项目名称/setting/connection?page=1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;成功连接服务器之后，就等于直接操作服务器，首先我需要把生成的内容传输到我的服务器上，&lt;code&gt;form&lt;/code&gt;就是&lt;code&gt;CI&lt;/code&gt;目录，&lt;code&gt;into&lt;/code&gt;就是我服务器目录。然后就是替换操作了。&lt;/p&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;sshPut&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;remote:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;from:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/root/workspace&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;into:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/xxxxxxxx/&amp;#39;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="kt"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[:]&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;名字随便&amp;#39;&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;allowAnyHosts&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;服务器IP&amp;#39;&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;SSH端口&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;user&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;用户&amp;#39;&lt;/span&gt;

&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="c1"&gt;// 把「CODING 凭据管理」中的「凭据 ID」填入 credentialsId，而 id_rsa 无需修改&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="n"&gt;withCredentials&lt;/span&gt;&lt;span class="o"&gt;([&lt;/span&gt;&lt;span class="n"&gt;sshUserPrivateKey&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;credentialsId:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;xxxxxxxxxxxxx&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;keyFileVariable:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;id_rsa&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)])&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;identityFile&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;id_rsa&lt;/span&gt;

&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="c1"&gt;// SSH 上传文件到远端服务器&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;sshPut&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;remote:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;from:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/tmp/tmp.tar.gz&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;into:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/tmp/&amp;#39;&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="c1"&gt;// 解压缩&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;sshCommand&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;remote:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;command:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;tar -zxf /tmp/tmp.tar.gz -C /tmp/&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;sshCommand&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;remote:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;sudo:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;command:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;mkdir -p /var/www/example-site&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;sshCommand&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;remote:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;sudo:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;command:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;cp -R /tmp/site/* /var/www/example-site/&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;sshCommand&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;remote:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;sudo:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;command:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;cp -R /tmp/apache2/ /etc/&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="c1"&gt;// 重启 apache2&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;sshCommand&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;remote:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;sudo:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;command:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;a2ensite example.com&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;sshCommand&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;remote:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;sudo:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;command:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;a2enmod headers rewrite ssl&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="n"&gt;sshCommand&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;remote:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;sudo:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;command:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;systemctl reload apache2&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;最后回到&lt;code&gt;CI&lt;/code&gt;，还是创建&lt;code&gt;Shell命令&lt;/code&gt;，我也不会其他方法，只能先删不需要的然后把&lt;code&gt;dist&lt;/code&gt;目录内的东西移动到工作目录，然后&lt;code&gt;clone&lt;/code&gt;在&lt;code&gt;GitHub&lt;/code&gt;的仓库，把&lt;code&gt;.git&lt;/code&gt;移动到工作目录，删除&lt;code&gt;clone&lt;/code&gt;的产物，最后&lt;code&gt;git push&lt;/code&gt;，&lt;code&gt;git init&lt;/code&gt;然后添加远程仓库就是&lt;code&gt;push&lt;/code&gt;不上去也不知道什么原因，我只能先这样。其他东西参考上文。&lt;/p&gt;&lt;p&gt;在每个步骤的最后我都添加了一步，推送消息到企业微信，这还挺方便的，执行到哪里了也都知道。&lt;/p&gt;&lt;p&gt;这个&lt;code&gt;CI&lt;/code&gt;没有用代码仓库所以不会检测&lt;code&gt;repo&lt;/code&gt;然后触发自动构建，所以在触发规则中，选择&lt;code&gt;API&lt;/code&gt;触发，可以直接生成&lt;code&gt;CURL&lt;/code&gt;触发命令，项目令牌和密码也可以一键生成，时间可以自定义。然后复制这个触发命令。&lt;/p&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;curl&lt;span class="w"&gt; &lt;/span&gt;-u&lt;span class="w"&gt; &lt;/span&gt;&amp;lt;项目令牌用户名&amp;gt;:&amp;lt;项目令牌密码&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;-v&lt;span class="w"&gt; &lt;/span&gt;-X&lt;span class="w"&gt; &lt;/span&gt;POST&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;自己的CI点生成可以看到&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;-H&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Content-Type: application/json&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;-d&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;
&lt;span class="s1"&gt;    {&lt;/span&gt;
&lt;span class="s1"&gt;    &amp;quot;ref&amp;quot;: &amp;quot;master&amp;quot;,&lt;/span&gt;
&lt;span class="s1"&gt;    &amp;quot;envs&amp;quot;: []&lt;/span&gt;
&lt;span class="s1"&gt;}&amp;#39;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;再次创建一个&lt;code&gt;CI&lt;/code&gt;，使用&lt;code&gt;Coding&lt;/code&gt;的仓库，然后创建一个&lt;code&gt;Shell命令&lt;/code&gt;，把刚刚复制的&lt;code&gt;CURL&lt;/code&gt;命令粘贴进来然后保存就可以。&lt;/p&gt;&lt;p&gt;最终就会是：我本地提交&lt;code&gt;git&lt;/code&gt;到&lt;code&gt;Coding&lt;/code&gt;的仓库，触发器这个&lt;code&gt;CI&lt;/code&gt;检测到仓库变化然后运行，运行的内容就是启动另外一个&lt;code&gt;CI&lt;/code&gt;，触发器结束任务，主要的&lt;code&gt;CI&lt;/code&gt;开始运行我指定的内容。官方文档写的非常好，可读性极强。&lt;/p&gt;</content><link href="/archives/20210915/"/><published>2021-09-15T01:00:00+08:06</published></entry><entry><id>/archives/20210926/</id><title>echarts在Markdown下深色模式自适应</title><updated>2026-06-05T18:59:07.625526+00:00</updated><author><name>jcjyxjs</name><email>i@elstec.cn</email><uri>https://elstec.cn</uri></author><content>&lt;p&gt;我首先找了一个官方示例做例子。&lt;/p&gt;&lt;p&gt;圆角环形饼图：&lt;a href="https://echarts.apache.org/examples/zh/editor.html?c=pie-borderRadius&amp;amp;lang=js"&gt;&lt;a href="https://echarts.apache.org/examples/zh/editor.html?c=pie-borderRadius&amp;amp;lang=js"&gt;https://echarts.apache.org/examples/zh/editor.html?c=pie-borderRadius&amp;amp;lang=js&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;查阅官方文档得知深色模式根据&lt;code&gt;backgroundColor&lt;/code&gt;这个属性进行自适应。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;darkmode：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;是否是暗黑模式，默认会根据背景色 backgroundColor 的亮度自动设置。 如果是设置了容器的背景色而无法判断到，就可以使用该配置手动指定，echarts 会根据是否是暗黑模式调整文本等的颜色。

该配置通常会被用于主题中。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;backgroundColor：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;背景色，默认无背景。

支持使用rgb(255,255,255)，rgba(255,255,255,1)，#fff等方式设置为纯色，也支持设置为渐变色和纹理填充，具体见option.color
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;文档反正我就明白了一个背景色默认无背景，真的有点迷迷糊糊的。&lt;/p&gt;&lt;p&gt;我观察到手动深色模式会创建一个&lt;code&gt;dark&lt;/code&gt;的属性。&lt;/p&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;myChart&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;echarts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;chartDom&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;dark&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;但是手动深色模式的背景颜色不符合我的博客，所以我直接把饼图的背景改成了透明，只需要在&lt;code&gt;option&lt;/code&gt;内设置背景透明即可。这样深色模式的背景只会显示我博客的背景。&lt;/p&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nx"&gt;option&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nx"&gt;backgroundColor&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;transparent&amp;#39;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;由于在&lt;code&gt;Markdown&lt;/code&gt;中不能通过&lt;code&gt;script&lt;/code&gt;标签直接运行&lt;code&gt;JS&lt;/code&gt;，所以需要单独挂载一个&lt;code&gt;JS&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;&lt;code&gt;HTML&lt;/code&gt;部分：&lt;/p&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;html&lt;/span&gt; &lt;span class="na"&gt;lang&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;en&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;head&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;meta&lt;/span&gt; &lt;span class="na"&gt;charset&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Title&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;https://cdn.jsdelivr.net/npm/echarts@5.2.0/dist/echarts.min.js&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;style&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nt"&gt;body&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="k"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mh"&gt;#fff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="k"&gt;media&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;prefers-color-scheme&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;dark&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="nt"&gt;body&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="k"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mh"&gt;#000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;style&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;head&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;body&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;main&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;width: 600px;height: 600px;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt; &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;https://cdn.jsdelivr.net/gh/jcjyxjs/cdn@master/43.js&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;body&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;html&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;JS&lt;/code&gt;部分：&lt;/p&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;chartDom&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;main&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;myChart&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;echarts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;chartDom&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;dark&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;option&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;option&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;backgroundColor&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;transparent&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;legend&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;top&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;5%&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nx"&gt;left&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;center&amp;#39;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;series&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Access From&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;pie&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="nx"&gt;radius&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;40%&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;70%&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="nx"&gt;avoidLabelOverlap&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="nx"&gt;itemStyle&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="nx"&gt;borderRadius&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="nx"&gt;borderColor&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;#fff&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="nx"&gt;borderWidth&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="nx"&gt;label&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="nx"&gt;show&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="nx"&gt;position&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;center&amp;#39;&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="nx"&gt;emphasis&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="nx"&gt;label&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="nx"&gt;show&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="nx"&gt;fontSize&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;40&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;                    &lt;/span&gt;&lt;span class="nx"&gt;fontWeight&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;bold&amp;#39;&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="nx"&gt;labelLine&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="nx"&gt;show&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;1048&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Search Engine&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;735&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Direct&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;580&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Email&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;484&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Union Ads&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;300&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Video Ads&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;            &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="nx"&gt;option&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;myChart&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;setOption&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;option&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
    &lt;script src="https://cdn.jsdelivr.net/npm/echarts@5.2.0/dist/echarts.min.js"&gt;&lt;/script&gt;
    &lt;style&gt;
        body {
            background: #fff;
        }
        @media(prefers-color-scheme: dark) {
            body {
                background: #000;
            }
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;div id="main" style="width: 600px;height: 600px;"&gt;&lt;/div&gt;
    &lt;script src="https://cdn.jsdelivr.net/gh/jcjyxjs/cdn@master/43.js"&gt;&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;p&gt;此时切换深色模式和浅色模式可以直接看到效果。&lt;/p&gt;</content><link href="/archives/20210926/"/><published>2021-09-26T01:00:00+08:06</published></entry><entry><id>/archives/20211002/</id><title>本年度（2021）最后一个🐧活动赠品</title><updated>2026-06-05T18:59:07.625504+00:00</updated><author><name>jcjyxjs</name><email>i@elstec.cn</email><uri>https://elstec.cn</uri></author><content>&lt;p&gt;细数今年参加了不少线上活动，拿了很多屁用没有的小玩意。去年阿里云活动很多，但东西质量真的就一般，今年腾讯云活动感觉挺多的，东西就是自家产品线上的玩偶，手办，希望积分商城一直开下去。比阿里要高上一个档次，但我就拿了一点，其他都是虚拟物品，不过都赚。&lt;/p&gt;&lt;html&gt;
&lt;div&gt;
  &lt;table&gt;
    &lt;thead&gt;
      &lt;tr&gt;
        &lt;th&gt;序号&lt;/th&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;1&lt;/td&gt;
        &lt;td&gt;鼠年公仔16CM&lt;/td&gt;
        &lt;td&gt;1&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;2&lt;/td&gt;
        &lt;td&gt;牛年公仔20CM&lt;/td&gt;
        &lt;td&gt;1&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;3&lt;/td&gt;
        &lt;td&gt;牛年公仔30CM+随机钥匙扣&lt;/td&gt;
        &lt;td&gt;1+1&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
&lt;/div&gt;
&lt;/html&gt;
&lt;p&gt;今天拿到随便拍了几张照片，用的是&lt;code&gt;铭匠&lt;/code&gt;的&lt;code&gt;35mm f1.4&lt;/code&gt;手动头，成像效果很不错，就是没有打光，公仔那个早点很多，修的也不是很好。&lt;/p&gt;&lt;div class="photos"&gt;
&lt;figure class="pswp-item"  size-undefined&gt;&lt;img loading="lazy" width="-1" height="-1" src="https://cdn.elstec.cn/44/1.jpg" /&gt;&lt;figcaption&gt;公仔&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure class="pswp-item"  size-undefined&gt;&lt;img loading="lazy" width="-1" height="-1" src="https://cdn.elstec.cn/44/2.jpg" /&gt;&lt;figcaption&gt;钥匙扣&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;</content><link href="/archives/20211002/"/><published>2021-10-02T01:00:00+08:06</published></entry><entry><id>/archives/20211127/</id><title>是甜品🍰！</title><updated>2026-06-05T18:59:07.625481+00:00</updated><author><name>jcjyxjs</name><email>i@elstec.cn</email><uri>https://elstec.cn</uri></author><content>&lt;p&gt;杭州2例无症状感染者，疫情小幅反弹，其实并不妨碍我回家吃甜品。&lt;/p&gt;&lt;hr /&gt;
&lt;p&gt;昨天一下车就跑店里买了招牌的蛋挞，大众点评首单19.9买8选4，个头蛮大的，看着也很有食欲，味道超好！&lt;/p&gt;&lt;p&gt;今年入了&lt;code&gt;α6000+铭匠35 1.4+55-210&lt;/code&gt;，铭匠除了对焦麻烦，这个价位无敌，&lt;code&gt;55-210&lt;/code&gt;焦段可以就是太肉了。&lt;/p&gt;&lt;p&gt;蛋挞和奶茶都是&lt;code&gt;铭匠35 1.4&lt;/code&gt;拍的，光圈拉满。&lt;/p&gt;&lt;p&gt;&lt;code&gt;ISO-400 f1.4 1/250&lt;/code&gt;&lt;/p&gt;&lt;div class="photoset"&gt;&lt;div class="photos"&gt;&lt;figure class="pswp-item"  size-undefined&gt;&lt;img loading="lazy" width="-1" height="-1" src="https://cdn.elstec.cn/46/DSC00135.jpg" /&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;ISO-2500 f1.4 1/1600&lt;/code&gt;&lt;/p&gt;&lt;div class="photoset"&gt;&lt;div class="photos"&gt;&lt;figure class="pswp-item"  size-undefined&gt;&lt;img loading="lazy" width="-1" height="-1" src="https://cdn.elstec.cn/46/DSC00051-2.jpg" /&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;</content><link href="/archives/20211127/"/><published>2021-11-27T01:00:00+08:06</published></entry><entry><id>/archives/20211209/</id><title>2021的最后一抹秋🍂</title><updated>2026-06-05T18:59:07.625457+00:00</updated><author><name>jcjyxjs</name><email>i@elstec.cn</email><uri>https://elstec.cn</uri></author><content>&lt;p&gt;已经2021年12月9日了，距离2022年一个月都不到了，但是现在疫情有了大幅反弹，最坏的情况可能就是会在学校过这个年，作为绍兴本地人居然还不能回家，自己属实小丑🤡，期末考试也直接提前一周不知道是好还是坏，大概1月9日就放寒假了。&lt;/p&gt;&lt;hr /&gt;
&lt;p&gt;前几天趁着还有太阳和银杏叶，在学校拍了年末最后的景色，银杏yyds。用的是&lt;code&gt;Sony&lt;/code&gt;原厂的&lt;code&gt;55-210&lt;/code&gt;变焦&lt;code&gt;55mm&lt;/code&gt;段。
&lt;code&gt;P&lt;/code&gt;档，&lt;code&gt;LR&lt;/code&gt;后期，不得不说宽容度高就是可以为所欲为。&lt;/p&gt;&lt;div class="photos"&gt;
&lt;figure class="pswp-item"  size-undefined&gt;&lt;img loading="lazy" width="-1" height="-1" src="https://cdn.jsdelivr.net/gh/jcjyxjs/cdn@master/DCIM/DSC00141.png" /&gt;&lt;figcaption&gt;ISO640 f/9 1/500&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure class="pswp-item"  size-undefined&gt;&lt;img loading="lazy" width="-1" height="-1" src="https://cdn.jsdelivr.net/gh/jcjyxjs/cdn@master/DCIM/DSC00142.png" /&gt;&lt;figcaption&gt;ISO640 f/4.5 1/640&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;div class="photos"&gt;
&lt;figure class="pswp-item"  size-undefined&gt;&lt;img loading="lazy" width="-1" height="-1" src="https://cdn.jsdelivr.net/gh/jcjyxjs/cdn@master/DCIM/DSC00143.png" /&gt;&lt;figcaption&gt;ISO640 f/4.5 1/640&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure class="pswp-item"  size-undefined&gt;&lt;img loading="lazy" width="-1" height="-1" src="https://cdn.jsdelivr.net/gh/jcjyxjs/cdn@master/DCIM/DSC00144.png" /&gt;&lt;figcaption&gt;ISO640 f/4.5 1/640&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;</content><link href="/archives/20211209/"/><published>2021-12-09T20:00:00+08:06</published></entry><entry><id>/archives/review2021/</id><title>贰零贰壹</title><updated>2026-06-05T18:59:07.625432+00:00</updated><author><name>jcjyxjs</name><email>i@elstec.cn</email><uri>https://elstec.cn</uri></author><content>&lt;div id="aplayer"&gt;
&lt;meting-js
server="netease"
type="song"
id="1904183420"
autoplay="true"&gt;
&lt;/meting-js&gt;
&lt;/div&gt;
&lt;p&gt;回顾2021，首先是博客，百度统计一年&lt;code&gt;PV 24,588&lt;/code&gt;，&lt;code&gt;UV 19,228&lt;/code&gt;，&lt;code&gt;IP 14,559&lt;/code&gt;，&lt;code&gt;跳出率 91.5%&lt;/code&gt;，&lt;code&gt;平均访问时长 00:03:48&lt;/code&gt;，数据显示我虽然&lt;code&gt;PV&lt;/code&gt;很高但是实际真人（&lt;code&gt;IP&lt;/code&gt;）还是很少，写的文章深度不够，主要还是我随便写写（水平太差）加生活向内容也没人看吧。明年再接再厉吧hh。&lt;/p&gt;&lt;html&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
    &lt;script src="https://cdn.jsdelivr.net/npm/echarts@5.2.0/dist/echarts.min.js"&gt;&lt;/script&gt;
    &lt;style&gt;
        body {
            background: #fff;
        }
        @media(prefers-color-scheme: dark) {
            body {
                background: #000;
            }
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;div id="main" style="width: 600px;height: 600px;"&gt;&lt;/div&gt;
    &lt;script src="https://cdn.elstec.cn/47/47.js"&gt;&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;p&gt;其次是今年学习也没学什么东西，感觉就浑浑噩噩的度过了一年，该学的一个都没学，可能自我感觉最好的一次还是申请了腾讯云云+社区的作者，写了一篇&lt;code&gt;CI&lt;/code&gt;的文章上了首页，还有就是相机拍了几张自己还算满意的照片。&lt;/p&gt;&lt;p&gt;加上最近疫情肆虐，回家也是个未知数，希望疫情能赶快过去，恢复正常生活吧。&lt;/p&gt;&lt;p&gt;明年目标是多刷&lt;code&gt;leetcode&lt;/code&gt;锻炼一下自己，编程语言全忘光了，全部都要重新回顾，再把&lt;code&gt;Vue&lt;/code&gt;这些框架学了，其实自己还蛮喜欢&lt;code&gt;CV&lt;/code&gt;和&lt;code&gt;嵌入式&lt;/code&gt;的，看明年有没有时间学了，还有日常生活的锻炼，体测不太理想（丢人）以至于我拿奖学金受阻。班上平时看着傻傻的同学其实背地里在偷偷&lt;del&gt;内卷&lt;/del&gt;，害，可能人就这样吧。&lt;/p&gt;&lt;p&gt;还挺想买个日常用的4K屏，&lt;code&gt;Sigma 30 1.4&lt;/code&gt;，相机配件之类的，哈哈哈就跟人菜瘾又大一样。还有一个月不到一点就生日了，又大了一岁，做任何事都要对自己负责任。&lt;/p&gt;&lt;div class="photoset"&gt;&lt;div class="photos"&gt;&lt;figure class="pswp-item"  size-undefined&gt;&lt;img loading="lazy" width="-1" height="-1" src="https://cdn.elstec.cn/47/1.png" /&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;最后就希望考试周能正常发挥~最后放几张最近拍的月亮了，纯手持无三脚架，全糊的。&lt;/p&gt;&lt;div class="photos"&gt;
&lt;figure class="pswp-item"  size-undefined&gt;&lt;img loading="lazy" width="-1" height="-1" src="https://cdn.elstec.cn/47/2.png" /&gt;&lt;/figure&gt;
&lt;figure class="pswp-item"  size-undefined&gt;&lt;img loading="lazy" width="-1" height="-1" src="https://cdn.elstec.cn/47/3.png" /&gt;&lt;/figure&gt;
&lt;/div&gt;</content><link href="/archives/review2021/"/><published>2021-12-31T01:00:00+08:06</published></entry><entry><id>/archives/20220123/</id><title>爱快多拨+负载均衡叠加带宽</title><updated>2026-06-05T18:59:07.625404+00:00</updated><author><name>jcjyxjs</name><email>i@elstec.cn</email><uri>https://elstec.cn</uri></author><content>&lt;p&gt;一直想买一台低功耗小主机做软路由，前几天刚好看到淘宝有卖便宜双网口&lt;code&gt;j1900&lt;/code&gt;小主机，看样子和成色应该是整机二手，不过看着还行，叫卖家给我装了爱快，插电直接用也省的我装。&lt;/p&gt;&lt;p&gt;先找来笔记本换&lt;code&gt;默认网关IP&lt;/code&gt;，换了个&lt;code&gt;192.168.192.1&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;然后设置&lt;code&gt;WAN&lt;/code&gt;口，爱快&lt;code&gt;PPPoE&lt;/code&gt;拨号，接入方式选择&lt;code&gt;基于物理网卡的混合模式&lt;/code&gt;，拨号选&lt;code&gt;ADSL/PPPoE&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;主要是多拨设置，打开多播助手，多拨并发数一般2或3，再多拨不出（因地区而异）。最重要的是需要开启&lt;strong&gt;掉线并重拨&lt;/strong&gt;，检测周期全选，检测时间凌晨&lt;code&gt;2-6&lt;/code&gt;点，因为白天多拨大概率失败，凌晨成功概率比较高，掉线检测间隔时间和掉线数量随便。&lt;/p&gt;&lt;p&gt;当然如果运营商在上游进行限制，那是无法多拨的。&lt;/p&gt;&lt;p&gt;然后新建两条&lt;code&gt;PPPoE&lt;/code&gt;，名称只能&lt;code&gt;adsl&lt;/code&gt;打头，账号密码一样，其他默认。&lt;/p&gt;&lt;div class="photoset"&gt;&lt;div class="photos"&gt;&lt;figure class="pswp-item"  size-undefined&gt;&lt;img loading="lazy" width="-1" height="-1" src="https://cdn.elstec.cn/48/1.png" /&gt;&lt;figcaption&gt;多拨&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;最后来到&lt;code&gt;流控分流-分流设置-多线负载&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;新建设置，负载模式选择（可以二选一），其他设置需具体测试，一般这两种是比较稳定的：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;新建连接数&lt;/li&gt;
&lt;li&gt;源IP+目的IP+目的端口&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;由于是单线多拨，运营商是同一个，所以全部。&lt;/p&gt;&lt;p&gt;我是双拨，所以只有两条线路，负载比例全部&lt;code&gt;1&lt;/code&gt;能叠加带宽，但我貌似只能叠加下行 🤬 上行要是叠加的话我公网看家里的影片也快一点了hhhh&lt;/p&gt;&lt;div class="photoset"&gt;&lt;div class="photos"&gt;&lt;figure class="pswp-item"  size-undefined&gt;&lt;img loading="lazy" width="-1" height="-1" src="https://cdn.elstec.cn/48/2.png" /&gt;&lt;figcaption&gt;负载均衡&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;</content><link href="/archives/20220123/"/><published>2022-01-23T01:00:00+08:06</published></entry><entry><id>/archives/20260105/</id><title>阿里云ESA（边缘安全加速）+IPV6一键回程访问NAS资源</title><updated>2026-06-05T18:59:07.625354+00:00</updated><author><name>jcjyxjs</name><email>i@elstec.cn</email><uri>https://elstec.cn</uri></author><content>&lt;p&gt;近期阿里云上线了ESA的免费套餐，不限流量，全球加速，且国内能正常使用，自定义规则，与CF类似。刚好家中有NAS带IPV6公网，于是赶紧接入折腾了。&lt;/p&gt;&lt;div class="photoset"&gt;&lt;div class="photos"&gt;&lt;figure class="pswp-item"  size-undefined&gt;&lt;img loading="lazy" width="-1" height="-1" src="/images/20260105/1.png" /&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;通过NS方式接入其实也方便，原先域名托管在腾讯云，直接导出Zone文件再导入ESA就开始运作了&lt;/p&gt;&lt;div class="photoset"&gt;&lt;div class="photos"&gt;&lt;figure class="pswp-item"  size-undefined&gt;&lt;img loading="lazy" width="-1" height="-1" src="/images/20260105/2.png" /&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;前期需要有一个域名DDNS到IPV6的地址。然后直接在DNS添加一条CNAME记录。源站选域名以及跟随源站域名即可。下一步后会选择是静态资源加速还是音视频还是其他加速，根据需求选择。NAS主页静态资源，emby这类就选择音视频，非常简单。&lt;/p&gt;&lt;div class="photoset"&gt;&lt;div class="photos"&gt;&lt;figure class="pswp-item"  size-undefined&gt;&lt;img loading="lazy" width="-1" height="-1" src="/images/20260105/3.png" /&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;一般NAS中的资源都是非标准端口，即非80/443，到也问题不大。添加完加速后，进入规则加一条回源规则。直接指定回源协议以及回源端口。&lt;/p&gt;&lt;div class="photoset"&gt;&lt;div class="photos"&gt;&lt;figure class="pswp-item"  size-undefined&gt;&lt;img loading="lazy" width="-1" height="-1" src="/images/20260105/4.png" /&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;</content><link href="/archives/20260105/"/><published>2026-01-05T01:00:00+08:06</published></entry></feed>