2024-01-11 08:00:00
最近把这个博客以及其他静态网站都迁移到了 Cloudflare Pages,除了速度相比服务器托管(亚洲的服务器)有所下降之外,其他的都是优点,本文就来做一下记录。
GitHub Pages 是一个由 GitHub 提供的服务,允许用户将自己的网页直接托管在 GitHub 上。GitHub Pages 非常适合托管静态网站,如个人、项目或组织的主页。GitHub Pages 可以直接从 GitHub 仓库中的文件生成网页。GitHub Pages 为公开的仓库提供免费的静态网页托管服务,GitHub Pro 或者 GitHub Enterprise 还支持私有仓库。除了提供一个默认的域名(例如 username.github.io),GitHub Pages 还允许用户绑定自定义域名。
Cloudflare Pages 是 Cloudflare 推出的一项服务,专门用于构建、部署和托管静态网站和 JAMstack 应用程序。Cloudflare Pages 提供了一种快速且易于使用的方式来发布网站,同时利用了 Cloudflare 的全球网络来确保高性能和安全性。
Cloudflare Pages 可快速部署静态网站,只需将代码库连接到 Cloudflare Pages,就可以自动构建和部署站点。Cloudflare Pages 提供无限制的部署次数和版本历史,方便回滚至先前的版本。Cloudflare Pages 集成了持续集成和持续部署(CI/CD),每次提交到代码仓库时,Cloudflare Pages 都会自动构建和发布最新版本的网站。
网站内容通过 Cloudflare 的全球内容分发网络(CDN)进行分发,确保了加载速度和响应时间的优化。Cloudflare Pages 自动为所有部署的网站提供免费的SSL证书,确保安全的 HTTPS 连接。Cloudflare Pages 支持绑定自定义域名,并通过 Cloudflare 提供的 DNS 服务进行管理。Cloudflare Pages 支持多种静态站点生成器和前端框架,如 React、Vue、Angular、Hugo、Jekyll 等。
要把静态网站迁移到 Cloudflare Pages,其实非常简单,只需要以下几步:
完成以上步骤后,访问 yourdomain.pages.dev 就可以查看效果,如果确认无误,可以绑定自定义域名,成功后就可以把服务器上的 Nginx 配置删掉并重启。假设你的域名是 yourdomain.com,还想通过 www.yourdomain.com 访问,那么在 Cloudflare Pages 页面还需要设置一条 www.yourdomain.com 的记录,设置好后会自动添加一条 CNAME 的记录。
Cloudflare Pages 默认使用的软件都是比较新的,如果 Build 失败,可以调整下版本,具体方法可以设置环境变量,具体的教程可以点击 此处。
此外还有一点,建议设置 _headers,设置方法可以点击 此处。
GitHub Pages 有的优点 Cloudflare Pages 全有,而且产品体验更好。如果使用服务器托管,虽然有 Webhook 等方法实现 GitHub 提交后,服务器自动编译发布,但使用体验还是没有 Cloudflare Pages 那么好。如果你也有静态页面托管的需求并且不那么在意访问速度,可以考虑使用免费的 Cloudflare Pages,省下来的钱可以给 ChatGPT Plus 充值。
2023-12-05 08:00:00
本篇文章已置顶。
为了方便读者检索「二〇四〇」文章,笔者做了这个目录。
「二〇四〇」目前有多个系列文章,包含「海外资产配置」、「资金周转方案」、「加密货币多签」、「加密热点追踪」、「数字游民经验分享」,后面还会开设更多的系列,并且保持持续更新。
除了系列文章,「二〇四〇」还有一些其他分类,详情可以查看这个目录。
如有任何问题,欢迎来信,邮箱:[email protected]。
2023-09-12 08:00:00
见信好,告诉大家一个好消息。
「二〇四〇」支持了法币订阅,支付方式包含信用卡(Visa、Mastercard、JCP、银联)、Apple Pay、Google Pay、PayPal、微信和支付宝,可以说涵盖了主流的支付方式。因为法币支付通道的手续费问题,价格相比加密货币支付略微上调,此外由于 Quail 是一个在日本合规的平台,10% 的消费税也无法避免(后续使用加密货币支付也一样有同等的消费税)。
从 S1E6(公开文章)发表以来,更新了如下的付费文章,相信读者从中有了不少收获。
「二〇四〇」将持续保持稳定的更新频率,欢迎点击「此处」订阅。
2023-07-29 08:00:00
见信好,「二〇四〇」给大家带来一个前所未有的福利。
「二〇四〇」邮件列表从 2023 年 6 月 26 日上线以来,一个月的时间获得了 36 个订阅,其中付费订阅 15 个,占比 41.67%,订阅数虽然不高,但是付费占比还是算高的。
「二〇四〇」至今发布了 4 篇付费文章,在可预见的未来还会继续保持每周一次的频率。我通常会提前准备 2~3 篇文章,以应对因突发事件导致没法更新的情况,所以大家不用担心断更,承诺的事情就要想办法做到。
从读者反馈来看,对内容基本上还是认可的,「二〇四〇」将会持续打造优质内容,希望每一个读者都能从中获益。
从本篇文章发布开始,直到北京时间 2023 年 8 月 31 日 12:00 结束,凡是在这期间年付订阅「二〇四〇」的读者,将会免费获得一个 OneKey Mini 硬件钱包。这里划一下重点,OneKey Mini 在其官网的价格是 $58
,而「二〇四〇」的价格是 $139
,也就是你可以用 $139
的价格,拿到一个 OneKey Mini 硬件钱包,以及每年至少 52 篇文章的优质邮件列表,这笔买卖还是相当划算的。
假如你年付订阅「二〇四〇」后,我会通过邮箱主动联系你,告知 OneKey Mini 兑换码以及兑换教程,你只需要去 OneKey 硬件钱包小程序联系客服兑换即可,无需透露你的任何信息给我,也不用担心供应链攻击。
最后总结下,即刻年付订阅「二〇四〇」,将 OneKey Mini 和一年时效的邮件列表抱回家,订阅链接点击「此处」。这样的机会可能就只有一次,想上车的可以抓紧了。
2023-06-26 08:00:00
本篇文章是邮件列表「二〇四〇」的第一篇文章。
我长期看各种美剧,我觉得用 Season 和 Episode 给剧集命名非常有趣,因为这两个单词组合,就会让你期待 Next Episode、Next Season。直到这部剧的生命力荡然无存,画面将会定格在某个 Season、某个 Episode。
写作非常依赖正向激励,因此我选择付费邮件列表,一方面是筛选用户,另一方面也赚点小钱。这个时代谈赚钱没什么丢人的,我提供服务,你为我的服务买单,这是最简单的商业逻辑。我的邮件列表定价为 $39
每季度,$139
每年,年付可以比季付省 10.9%。你现在可以在 这里 输入邮件即可订阅,但是暂时还不需要你付费,等后续发布付费文章后,就能使用 USDC 订阅了。如果你想提前订阅,可以点击 这里 升级。
我曾经想过无数种在工作之余做点什么的方式,兜兜转转,还是回到了自己最熟悉最擅长的地方。我不善言辞,写作多年,也非常享受写作的过程。人生在世,总得留下点什么,要不然过于苍白。我的更新计划是这样的:每周不少于一篇,每月不少于四篇,不定时发布。既然收费了,我能保证的是,文章的价值一定能够远超你的成本。至于为什么取名「二〇四〇」,这里 有详解。
由于写作内容的敏感性,我选择了经理的作品 Quail。之前也考虑过使用 Substack,但是这个产品不够 Web3。为什么要用「邮件列表」呢?我觉得邮件列表以及 RSS,依然是获取信息最高效的方式,而且更加专注内容本身,对读者都没有什么负担,因为获取信息的方式是主动的,读者对什么时候打开和阅读有完全的决定权,哪天觉得内容太烂了,随时取消订阅。
大家可能觉得邮件订阅是个小生意,但实际不是。以 Substack 为例,Sacra 估计,Substack 的收入将同比增长 58%,到 2022 年达到 1900 万美元,订阅用户数为 3500 万,付费订阅用户数为 200 万,GMV 为 1.45 亿美元,筹集的资金为 8200 万美元。
Substack 相对成熟,但是经理的 Quail 更适合 Web3 从业者进行内容创作。Quail 有以下的特点:
目前 Quail 处于 Closed Beta 阶段,不过招募期已结束,大概会在 2023 年 6 月底开放注册,感兴趣的可以期待下。
有人可能想问了,现在 AIGC 这么成熟,码字还有意义吗?这个问题,我觉得当然是有意义的,AI 技术的兴起,知识可以轻而易举地获得。但是大模型的局限在于,它只能用互联网上的信息进行训练,还有大量的知识或者经验在互联网却并不存在。码字的意义,一方面是分享经验和见解,另一方面是传递有温度的文字(毕竟我是不会用 AI 代替我写作的)。
最后再说一下这个邮件列表的主题,主要围绕加密货币、Web3、AI 和投资,这几个主题就已经有足够的内容可写,希望你我都能从中获取到价值。
2023-06-12 08:00:00
最近看到 @forecho 的文章「我的 ETH 被盗了」,里面提到不小心将私钥上传导致 ETH 被盗,这真是一个悲伤的故事。关于 GitHub 提交代码,如何阻止敏感信息,其实有不少方法。
阻止提交敏感信息,常用的方法是配置文件 + .gitignore
,例如仓库下有配置文件 .env
,那么提交的文件通常是 .env.example
。.env.example
这个文件有完整的变量名,但是没有参数。然后在 .gitignore
写入一行 .env
,这样即使仓库下有 .env
文件,提交的时候也会自动跳过。
这种方法也是最常见的,但是使用这种方法也会有失误的时候。比如创建了 .env
文件,里面有完整的变量名和参数,但是 .gitignore
却忘记过滤 .env
,所有的敏感信息全部提交到 GitHub 了,即使删除了 .env
,提交的内容还存在于 Git 的日志文件。
本文推荐的方法是使用 AWS Labs 推出的 git-secrets,可以从技术手段上杜绝敏感信息的提交。
接下来演示下如何使用(系统是 macOS),首先安装 git-secrets
。
$ git clone https://github.com/awslabs/git-secrets
$ cd git-secrets
$ make install
接下来做全局配置,当然对单个项目做配置也是可以的,考虑到对单个项目配置很容易忘记,这里以全局为例。
$ git config --global --unset init.templatedir
$ mkdir ~/.git-templates/git-secrets
$ git config --global init.templatedir ~/.git-templates/git-secrets
$ git-secrets --install ~/.git-templates/git-secrets
$ git secrets --register-aws --global
$ touch ~/.git-templates/git-secrets/config
~/.git-templates/git-secrets/config
配置文件内容如下:
[secrets]
providers = git secrets --aws-provider
patterns = ^[a-fA-F0-9]{64}$
这里的 patterns 以匹配以太坊私钥作为例子,如果你想过滤更多的敏感信息,可以继续增加 patterns。
接下来就是验证的环节了,要想全局配置生效,我们 clone 代码的时候需要使用 --template
参数(~/.git-templates/git-secrets
目录是默认目录,所以也可以不添加此参数)。
$ git clone $YOUR_REPO_URL --template ~/.git-templates/git-secrets
$ cd $YOUR_REPO
$ touch key.log
key.log
的内容如下:
afdfd9c3d2095ef696594f6cedcae59e72dcd697e2a7521b1578140422a4f890
这里要声明下,这个私钥是在 ethereum-component 找到的,测试时不建议使用自己的私钥。
接下来提交代码,可以看到是无法提交的。
$ git add -A . && git commit -S -m "test add key" && git push origin master
key.log:1:afdfd9c3d2095ef696594f6cedcae59e72dcd697e2a7521b1578140422a4f890
[ERROR] Matched one or more prohibited patterns
Possible mitigations:
- Mark false positives as allowed using: git config --add secrets.allowed ...
- Mark false positives as allowed by adding regular expressions to .gitallowed at repository's root directory
- List your configured patterns: git config --get-all secrets.patterns
- List your configured allowed patterns: git config --get-all secrets.allowed
- List your configured allowed patterns in .gitallowed at repository's root directory
- Use --no-verify if this is a one-time false positive
Everything up-to-date
当然真实的情况这个私钥前面还有一些变量,就需要对 patterns 做一些调整,这里就不赘述了。
除了 .gitignore
和 git-secrets
,如果项目用到了 GitHub Actions,还可以配合 Encrypted Secrets 管理敏感信息,这里就略过了。
对于大部分的场景,.gitignore
和 git-secrets
已经足够使用,可以按需选择。针对公开的互联网(包括 GitHub 公开仓库等)上的敏感信息,有无数的机器人盯着,一旦发现私钥什么的,你的钱可以瞬间转走,这个单位是秒级,所以千万不要掉以轻心。当然了,不要因为自己用的是 GitHub 的私有仓库,敏感信息就可以随便上传。第一,你的私钥仓库在未来有可能开源(开源之前记得使用 git secrets --scan-history
扫一下),第二,GitHub 也存在泄漏的可能。所以在任何场景,都应该重视敏感信息,在开发中养成良好的习惯非常重要。