<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Web &amp; Frontend on VerifyBench</title>
        <link>https://verifybench.top/it-software/web/</link>
        <description>Recent content in Web &amp; Frontend on VerifyBench</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en-us</language>
        <lastBuildDate>Wed, 14 Oct 2026 09:47:17 +0800</lastBuildDate><atom:link href="https://verifybench.top/it-software/web/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>Hello World — Full Journey of Building My Own Blog</title>
            <link>https://verifybench.top/it-software/web/hello-world/</link>
            <pubDate>Wed, 14 Oct 2026 09:47:17 +0800</pubDate>
            <guid>https://verifybench.top/it-software/web/hello-world/</guid>
            <description>&lt;h1 id=&#34;hello-world&#34;&gt;Hello World!&#xA;&lt;/h1&gt;&lt;p&gt;I purchased this domain on Spaceship and bound DNS through Cloudflare. As someone who just stepped out of campus, doing all this felt like an 80-year-old looking up words in a dictionary to write a novel. I encountered many unfamiliar terms and processes along the way, and with the help of AI I resolved them one by one — and here I issue my Hello World.&lt;/p&gt;&#xA;&lt;p&gt;我在Spaceship网站上购买了这个域名，并且通过cloudflare进行了DNS的绑定。当我刚刚迈出校园，做这一切的时候，我觉得我就像是新闻里80岁翻字典写小说的老人。在这个过程中我遇到许多问题，陌生的术语和流程，在AI的帮助下我都一一解决，并且在这里发出Hello World的一声。&lt;/p&gt;&#xA;&lt;h2 id=&#34;tech-stack&#34;&gt;Tech Stack&#xA;&lt;/h2&gt;&lt;p&gt;Domain registrar: Spaceship (254.68 CNY)&#xA;DNS: Cloudflare (0 CNY)&#xA;Static hosting: Cloudflare (0 CNY)&#xA;Git: Local repository (0 CNY)&#xA;Static site generator: Hugo (0 CNY)&#xA;OS: Linux Mint 22.3&#xA;Kernel: Linux 7.0.0-38-generic&#xA;Architecture: x86-64&lt;/p&gt;&#xA;&lt;p&gt;购买域名（域名注册商）：Spaceship（254.68￥）&#xA;DNS：Cloudflare（0￥）&#xA;静态推送：Cloudflare（0￥）&#xA;git：本地仓库（0￥）&#xA;静态网站生成器：Hugo（0￥）&#xA;操作系统: Linux Mint 22.3&#xA;内核: Linux 7.0.0-38-generic&#xA;架构: x86-64&lt;/p&gt;&#xA;&lt;h2 id=&#34;process-log&#34;&gt;Process Log&#xA;&lt;/h2&gt;&lt;h3 id=&#34;domain-purchase&#34;&gt;Domain Purchase&#xA;&lt;/h3&gt;&lt;p&gt;I searched for the domain &amp;ldquo;verifybench&amp;rdquo; on Spaceship and chose the cheapest price. After browsing through many options, I settled on the cheapest .top domain — only 254.68 CNY for ten years. At first I thought that was enough, but I realized I had only bought the name itself without any pointer (like buying a road sign without knowing where to plant it).&lt;/p&gt;&#xA;&lt;p&gt;我从Spaceship上搜索&amp;quot;verifybench&amp;quot;这个域名，并且选择最便宜的价格，翻阅了大量的可选域名之后，我选择了最便宜的.top域名，这个域名十年仅需254.68￥，一开始我觉得这样就够了，但是我意识到我仅仅是买了一个域名（名字本身），它还没有一个指向（就像是我买了一块路牌，但是我还不知道把它插在哪里）。&lt;/p&gt;&#xA;&lt;h3 id=&#34;dns-configuration&#34;&gt;DNS Configuration&#xA;&lt;/h3&gt;&lt;p&gt;Following AI guidance, I went to Cloudflare. Since all the sites were in English, finding things was a bit tough. Luckily I landed directly on the dashboard, otherwise I would have been confused for a while. I tried searching for &amp;ldquo;Add site&amp;rdquo; and similar terms but none matched. Eventually I found &amp;ldquo;Add Domain&amp;rdquo; and entered my domain (be careful not to mistype, or you have to redo it).&lt;/p&gt;&#xA;&lt;p&gt;选择免费的套餐即可，之后会扫描现有的DNS记录，对我来说这是一个新的网站，之前的DNS我都将其删除了，之后Cloudflare提供了两个名称服务器（NS地址），对于所有的免费套餐来说应该都是一样的：&lt;/p&gt;&#xA;&lt;p&gt;后面我在AI的指引下来到Cloudflare网站，因为都是英文网站所以找东西对我来说有点吃力。不过我幸运地直接进入了dashboard界面，要不然肯定还会懵逼一会。首先是添加域名，我试着搜索Add site等，都不太对。直到我发现Add Domain，输入了我的网站域名（注意别输错了，要不还得重新弄一遍）。&lt;/p&gt;&#xA;&lt;p&gt;Choose the free plan. It then scans existing DNS records — for me this was a brand new site so I deleted all previous DNS entries. Cloudflare then provides two nameservers (NS addresses), which are the same for all free plans:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;aria.ns.cloudflare.com&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;sonny.ns.cloudflare.com&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;After adding verifybench.top, I needed to go back to the registrar Spaceship to bind the DNS. The DNS binding is in the Domain Manage interface, which took me a while to find. With the help of the interface AI I found it at &lt;a class=&#34;link&#34; href=&#34;https://www.spaceship.com/launchpad/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://www.spaceship.com/launchpad/&lt;/a&gt; — then Domain Manage, click the domain, and modify under &amp;ldquo;Nameservers &amp;amp; DNS&amp;rdquo;. DNSSEC is generally off by default so you can ignore it.&lt;/p&gt;&#xA;&lt;p&gt;将verifybench.top这个网站加入之后就要回到域名注册商Spaceship处绑定DNS。绑定DNS需要到Domain Manage的界面，但是这个界面我有点挠头不知道在哪，之后借助界面AI的力量发现在https://www.spaceship.com/launchpad/这里面，然后进入Domain Manage，点击域名，然后Nameservers &amp;amp; DNS中修改即可，一般来说都是默认关闭 DNSSEC的，不用考虑这个。&lt;/p&gt;&#xA;&lt;h3 id=&#34;website-deployment&#34;&gt;Website Deployment&#xA;&lt;/h3&gt;&lt;p&gt;For deploying a static site, Cloudflare offers Compute: Workers &amp;amp; Pages. There are two modes. The default is Workers — at first I didn&amp;rsquo;t notice and just uploaded index.html (a web page AI generated for me earlier). Make sure to select Pages below, then upload the index.html file or a folder with index.html at its root.&lt;/p&gt;&#xA;&lt;p&gt;对于部署静态网站来说，Cloudflare里面提供了Compute: Workers &amp;amp; Pages，在这里可以选择两种模式部署。默认界面是Workers，一开始我没注意看就直接上传了index.html（这是一个我之前让ai帮忙生成的网页文件），要注意在下方选择Pages，然后再上传index.html文档或者一级目录下有index.html的文件夹。&lt;/p&gt;&#xA;&lt;p&gt;A .dev-suffixed URL is generated where you can browse the index.html. But I hit a 404 error at first. After investigation I learned that Cloudflare sets access restrictions by default. If you want anyone to access it, you need to remove the Access protection.&lt;/p&gt;&#xA;&lt;p&gt;之后会生成一个.dev后缀的网站，能够浏览这个index.html。但是当时我遇到了404错误，经过一番查找之后得知，是因为Cloudflare默认设置了访问权限，如果你希望任何人都能访问，需要移除那个 Access 保护。&lt;/p&gt;&#xA;&lt;p&gt;So go back to the Cloudflare dashboard, find Zero Trust, purchase the free plan (I was puzzled why &amp;ldquo;free&amp;rdquo; still required PayPal). Then delete the existing protection and the .dev site becomes accessible — this is the test development page.&lt;/p&gt;&#xA;&lt;p&gt;所以回到Cloudflare的dashboard界面，找到Zero Trust并进入，购买它的免费套餐（虽然我也很疑惑为什么免费还要用Paypal支付），进入之后Delete已有的那个保护，就发现可以正常进入.dev后缀的网站了，这就是测试开发页。&lt;/p&gt;&#xA;&lt;h3 id=&#34;domain-binding&#34;&gt;Domain Binding&#xA;&lt;/h3&gt;&lt;p&gt;To bind the test page to your own domain: go to Workers &amp;amp; Pages, enter the project, go to Custom Domains, and add &lt;code&gt;verifybench.top&lt;/code&gt; and &lt;code&gt;www.verifybench.top&lt;/code&gt;. Then the site is accessible via both domains.&lt;/p&gt;&#xA;&lt;p&gt;但是要把测试开发页同自己的域名绑定到一起还需要一步，项目和域名之间是一对多的映射，即一个域名只能被分配一个项目，而一个项目可以分配多个域名。到Workers &amp;amp; Pages界面并进入该项目，进入Custom domains添加上&lt;code&gt;verifybench.top&lt;/code&gt;和&lt;code&gt;www.verifybench.top&lt;/code&gt;，就可以通过这两个域名来访问网站了。&lt;/p&gt;&#xA;&lt;h3 id=&#34;site-generation&#34;&gt;Site Generation&#xA;&lt;/h3&gt;&lt;h4 id=&#34;hugo-installation&#34;&gt;Hugo Installation&#xA;&lt;/h4&gt;&lt;p&gt;We were using a pre-made HTML file, but normally you can publish a website by editing Markdown files. So let&amp;rsquo;s install Hugo and use it to publish.&lt;/p&gt;&#xA;&lt;p&gt;现在我们是使用了现成的html文件，但通常是可以通过编辑Markdown文件来发布网站的。所以说安装hugo，并利用hugo进行网站的发布。&lt;/p&gt;&#xA;&lt;p&gt;Set up network with Clash iKuuu. &lt;a class=&#34;link&#34; href=&#34;https://ikuuu.win/user&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;iKuuuVPN latest domain 2026-09-11&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;用Clash iKuuu进行网络的配置，&lt;a class=&#34;link&#34; href=&#34;https://ikuuu.win/user&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;iKuuuVPN最新域名 2026-09-11&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Clash for Linux&amp;rsquo;s virtual NIC (TUN) seems to have issues, so I configured temporary environment variables in the terminal:&lt;/p&gt;&#xA;&lt;p&gt;Clash for Linux的虚拟网卡（TUN）功能似乎有些问题，因此我选择在终端里配置临时环境变量&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;export http_proxy=&amp;#34;http://127.0.0.1:7890&amp;#34;  &#xA;export https_proxy=&amp;#34;http://127.0.0.1:7890&amp;#34;  &#xA;export all_proxy=&amp;#34;http://127.0.0.1:7890&amp;#34;  &#xA;git config --global http.https://github.com.proxy http://127.0.0.1:7890&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;First run the nvm install script: &lt;code&gt;curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;先运行nvm安装脚本：&lt;code&gt;curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Then make nvm active in the current terminal:&lt;/p&gt;&#xA;&lt;p&gt;按照提示让nvm在当前终端生效：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;export NVM_DIR=&amp;#34;$HOME/.nvm&amp;#34;&#xA;[ -s &amp;#34;$NVM_DIR/nvm.sh&amp;#34; ] &amp;amp;&amp;amp; \. &amp;#34;$NVM_DIR/nvm.sh&amp;#34;&#xA;[ -s &amp;#34;$NVM_DIR/bash_completion&amp;#34; ] &amp;amp;&amp;amp; \. &amp;#34;$NVM_DIR/bash_completion&amp;#34;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then install Node.js: &lt;code&gt;nvm install --lts&lt;/code&gt; and set as default &lt;code&gt;nvm alias default node&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;然后安装Node.js：&lt;code&gt;nvm install --lts&lt;/code&gt;并设为默认&lt;code&gt;nvm alias default node&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Then go to &lt;code&gt;https://github.com/gohugoio/hugo/releases&lt;/code&gt; to find the latest version and download:&lt;/p&gt;&#xA;&lt;p&gt;然后去&lt;code&gt;https://github.com/gohugoio/hugo/releases&lt;/code&gt;找到最新的版本号，下载&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;wget https://github.com/gohugoio/hugo/releases/download/v0.168.0/hugo_extended_0.168.0_linux-amd64.deb  &#xA;sudo dpkg -i hugo_extended_0.168.0_linux-amd64.deb&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you installed the wrong one, use &lt;code&gt;which -a hugo&lt;/code&gt; to check how many directories appear. If a wrong directory from a previous conda install shows up (let me see which AI lied to me&amp;hellip;), just &lt;code&gt;rm&lt;/code&gt; it.&lt;/p&gt;&#xA;&lt;p&gt;如果说安装错了可以用which -a hugo来看有几个目录，如果出现之前conda下载错误的目录（让我看看是哪个AI在坑我……），直接rm就可以&lt;/p&gt;&#xA;&lt;h4 id=&#34;hugo-configuration&#34;&gt;Hugo Configuration&#xA;&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;Step 1: Set up local storage&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;第一步：建立本地存储区域&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mkdir -p ~/blog &amp;amp;&amp;amp; cd ~/blog&#xA;hugo new site verifybench-blog&#xA;cd verifybench-blog&#xA;git init&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Step 2: Install a theme.&lt;/strong&gt; Browse &lt;code&gt;https://themes.gohugo.io/&lt;/code&gt; and pick one based on your language and interface needs.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;第二步：安装主题&lt;/strong&gt;，这里可以上&lt;code&gt;https://themes.gohugo.io/&lt;/code&gt;挑选一下，根据自己的语言和界面需求&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;git submodule add https://github.com/adityatelange/hugo-PaperMod themes/PaperMod  &#xA;echo &amp;#34;theme = &amp;#39;PaperMod&amp;#39;&amp;#34; &amp;gt;&amp;gt; hugo.toml&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;PaperMod is simple but sufficient for publishing a Hello World post. Switch themes later.&lt;/p&gt;&#xA;&lt;p&gt;PaperMod这个主题比较简单，但发布 Hello World! 这一条来说足够了，后续再说换主题的事情。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Step 3: Write content.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;hugo new content posts/hello-world.md&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;第三步：编辑内容&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;hugo new content posts/hello-world.md&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Create the document. I installed the maketext editor — run &lt;code&gt;maketext content/posts/hello-world.md&lt;/code&gt; to see the contents. Change draft to false to see it on the published site (otherwise only visible in local preview). Type your article content below the &lt;code&gt;+++&lt;/code&gt; at the end.&lt;/p&gt;&#xA;&lt;p&gt;创建文档，我安装了maketext编辑器，输入&lt;code&gt;maketext content/posts/hello-world.md&lt;/code&gt;，就会看到里面的内容，draft改为false才能在发布的网站上看到，否则只能在本地预览看，在最后一行的+++下面输入自己的文章内容&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Step 4: Local preview and publish.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;After &lt;code&gt;hugo server -D&lt;/code&gt; previews successfully, run &lt;code&gt;hugo&lt;/code&gt; to build and publish. First-time publish needs Cloudflare authorization.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;第四步：本地预览和发布&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;hugo server -D&lt;/code&gt;预览顺利之后就可以构建&lt;code&gt;hugo&lt;/code&gt;和发布了，首次发布需要和Cloudflare授权。&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;npx wrangler login  &#xA;npx wrangler pages deploy ./public --project-name=verifybench&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Note: the project name here must match the test project name above. Otherwise you need to unbind the previous domain-project mapping first and redo the DNS steps.&lt;/p&gt;&#xA;&lt;p&gt;注意这里的项目和上面测试的项目名称保持一致，否则需要先解绑前面的域名-项目映射关系，再重新走DNS的流程。&lt;/p&gt;&#xA;&lt;p&gt;Now visit verifybench.top or &lt;a class=&#34;link&#34; href=&#34;https://www.verifybench.top&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;www.verifybench.top&lt;/a&gt; and you should see the hello world title.&lt;/p&gt;&#xA;&lt;p&gt;这时再登陆verifybench.top或者www.verifybench.top就能看到hello world的标题了&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Step 5: Change the theme.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Re-run the theme installation git step to download your desired theme, then edit &lt;code&gt;theme=&lt;/code&gt; in hugo.toml to your theme name.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;第五步：修改主题&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;重新执行安装主题的git一步，把需要的主题下载下来，之后编辑hugo.toml中的theme=自己的主题名称即可。&lt;/p&gt;&#xA;&lt;p&gt;I later used &lt;code&gt;theme = &#39;hugo-theme-stack&#39;&lt;/code&gt;. Unlike PaperMod, Stack has a homepage by default rather than jumping straight to the article list. You can adjust this by going to &lt;code&gt;themes/hugo-theme-stack/config/_default&lt;/code&gt;, editing &lt;code&gt;params.toml&lt;/code&gt;, and setting &lt;code&gt;mainSections = [&amp;quot;posts&amp;quot;]&lt;/code&gt; on the first line.&lt;/p&gt;&#xA;&lt;p&gt;我后面使用的是theme = &amp;lsquo;hugo-theme-stack&amp;rsquo;，对于stack这个主题来说，和PaperMod不同的是，它默认有一个主页，而不是直接进入文章列表栏，因此可以进行一些更改，进入themes/hugo-theme-stack/config/_default中，编辑params.toml文件，第一行的mainSections = [&amp;ldquo;posts&amp;rdquo;]即可&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Step 6: Maintenance.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;第六步：维护&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cd ~/blog/verifybench-blog  &#xA;#新建文章（frontmatter 自动生成，记得把 draft = true 改成 false）  &#xA;hugo new content posts/文章名.md  &#xA;#写内容（任意编辑器），然后本地预览  &#xA;hugo server -D  &#xA;#打开 localhost:1313 看效果，Ctrl+C 退出  &#xA;#存档（后悔药 + 备份，先 commit 再发布）  &#xA;git add -A &amp;amp;&amp;amp; git commit -m &amp;#34;文章名&amp;#34;  &#xA;hugo &amp;amp;&amp;amp; npx wrangler pages deploy ./public --project-name=verifybench&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;closing&#34;&gt;Closing&#xA;&lt;/h2&gt;&lt;p&gt;Feel free to explore further. This site welcomes submissions, questions, and paid collaborations. To get in touch, email &lt;a class=&#34;link&#34; href=&#34;mailto:18613817312@sina.cn&#34; &gt;18613817312@sina.cn&lt;/a&gt; and please state your purpose.&lt;/p&gt;&#xA;&lt;p&gt;其他更多的操作大家可以尽情摸索，本站欢迎《分享投稿》、《咨询问题》、《付费交易》，如想要联系可以发邮件给18613817312@sina.cn，请表明来意。&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
