Ubuntu 24.04 发布快一年,新安装的系统开始采用这个版本。发现这个新 LTS 的软件源配置文件变更为 DEB822 格式。默认源的路径为 /etc/apt/sources.list.d/ubuntu.sources
。
清华源对这个的支持最完善,通过勾选还可以直接生成对应的配置文件。
沉舟侧畔千帆过
Ubuntu 24.04 发布快一年,新安装的系统开始采用这个版本。发现这个新 LTS 的软件源配置文件变更为 DEB822 格式。默认源的路径为 /etc/apt/sources.list.d/ubuntu.sources
。
清华源对这个的支持最完善,通过勾选还可以直接生成对应的配置文件。
git 提交提示 error: gpg failed to sign the data
,发现 GPG 密钥过期。上次签发场景还历历在目,一晃几年就过去了。
本机 gpg 密钥相关的数据都在 ~/.gnupg
目录下,这次续期之后,可以备份这个目录,以后换电脑或者重装系统,之前的密钥数据都可以恢复。
续期流程如下:
终端执行
1 | gpg --list-keys |
列出的密钥列表中,ID后 8 位可以当成简化版密钥 ID,供后续使用。这里是 B0AF5E1C
1 | /root/.gnupg/pubring.kbx |
进入 gpg 编辑模式
1 | gpg --edit-key B0AF5E1C |
输入 expire
命令,选择新的过期时间,这里再续 5 年
1 | gpg> expire |
续期成功后,退出编辑模式。在查看密钥列表,可以看到密钥过期时间已经更新。备份一下数据,这 5 年这个密钥可以继续安心的签名。
家里网络从联通更换到了移动,移动没有公网 IPv4 但是有公网 IPv6。联通时代搞定了 IPv4 之后停止了探索,这次目标搞定 IPv6。
IPv6 的知识来自于网络资料和 IPv6 和 IPv4 的主要区别?,配置过程主要参考 X86 软路由配置 IPv6 踩坑小记。
目前的网络环境为:
移动光猫(桥接)
——> 小服务器(PPPoE 拨号及网关)
——> 其他设备(有线接入的台式机、无线AP的路由器)
小服务器负责 PPPoE 拨号,及使用 Dnsmasq 处理 IPv4 的 DHCP 和 DNS。其中 WAN 口接移动光猫,两个 LAN 口分别接台式机和无线路由器。无线路由器配置成 AP 模式作为一个有无线功能的交换机用。
IPv6 和 IPv4 区别很多,主要点是:
fe80::
这类保留网段,其他都能当公网用SLAAC
应该是最好的查了一圈资料,按照现在的网络拓扑结构,实现目标需要完成的步骤是:
在 /etc/sysctl.conf
添加上:
1 | net.ipv6.conf.all.forwarding=2 |
上述三段分别为开启转发、接受 RA 和支持临时地址
pppoeconf
启用 IPv6在 /etc/ppp/options
添加上
1 | +ipv6 |
上述为在全局配置启用,也可以在拨号的配置文件 /etc/ppp/peers/dsl-provider
内添加。
给内网设备也分配对应的 IPv6 地址使用 Prefix delegation(前缀代理),简称 PD。简单来说就是我们向我们的上级路由发送 PD 请求,上级路由会分给我们一个前缀长度小于等于64的网段,然后我们就能将个网段划分成一个或者一些 /64 的网段接着向局域网内的设备分配,此时局域网内的设备的上级路由就是我们的网关。
为了实现这个功能,我们需要使用 wide-dhcpv6-client
。
安装命令如下,因为使用 pppoeconf
拨号,所以安装 wide-dhcpv6-client
的时候要选择 ppp0
网卡作为申请 PD 的网卡
apt install wide-dhcpv6-client
如果开启了防火墙,需要开放 dhcpv6-client 服务对应的端口 546
。我使用的 ufw,命令如下:
ufw allow dhcpv6-client
编辑 /etc/wide-dhcpv6/dhcp6c.conf
,增加
1 | interface ppp0 { |
设置之后重启服务,检查 br 网卡是否分配到 Global 的 IPv6 地址
service wide-dhcpv6-client restart
最后需要向局域网设备发送 RA ,使用 SLAAC 来分配IP地址,这里我们使用了 Dnsmasq。在 Dnsmasq 的配置文件里加上:
1 | enable-ra |
重启服务使配置生效
service dnsmasq restart
完成配置后,访问 https://ipw.cn/ipv6/ 或者 https://test-ipv6.com/ 测试 IPv6 连接情况
现有一块移动硬盘通过 USB 接入小主机。目标:实现这个盘自动加密挂载到 Ubuntu,供其他服务使用。
工具有 fdisk
和 parted
,以往主要用 fdisk
,所以这次用 parted
,同时也尝试一下新的文件系统。
首先确定磁盘的信息。
parted -l
可以看到如下内容
1 | Model: WD My Passport 0748 (scsi) |
/dev/sda
这个设备就是我们的移动硬盘了。使用 parted
选择这个磁盘,开始操作。
parted /dev/sda
全新使用,磁盘上没有数据,可以随意修改。因为容量比较大,使用新的分区表类型,调整磁盘分区表到 gpt
。
(parted) mklabel gpt
个人习惯把整个磁盘作为一个分区。
(parted) mkpart primary 0% 100%
parted
的操作就完成了。退出前可以用如下命令检查效果。
(parted) print
这样就建立好了磁盘分区。
加密部分主要参考Linux「磁盘加密」完全指南,依赖系统软件 cryptsetup。
操作系统启动时候涉及磁盘挂载的顺序为:
/etc/crypttab
解密被加密的设备/etc/fstab
挂载磁盘到目录所以要实现自动挂载加密盘的思路就是:
/etc/crypttab
自动解密加密磁盘/etc/fstab
自动挂载解密盘查找资料过程中发现前几年 Linux 创建加密盘还比较麻烦,好在现在有 cryptsetup,方便简单了很多。确定思路就开始做。
用密码不太友好,短了不安全,长了记忆成本高。使用密钥文件来进行加密解密,再妥善管理备份密钥文件。
通过 dd
命令使用随机数生成一个 4KB 的密钥文件,保存到 /etc
目录下:
dd if=/dev/urandom of=/etc/cryptfs.key bs=1k count=4
使用这个密钥,加密磁盘:
cryptsetup luksFormat /dev/sda1 /etc/cryptfs.key
1 | WARNING! |
根据提示输入大写的 YES
确认操作。这里是空磁盘,创建非常快。创建完成之后,可以使用 cryptsetup open
打开加密磁盘,解密的设备位于 /dev/mapper
目录下。
cryptsetup open –key-file=/etc/cryptfs.key /dev/sda1 sda1
现在加密分区就被挂载到了 /dev/mapper/sda1
,使用 mkfs
格式化分区,通过补全发现 Ubuntu 现在支持的分区如下:
1 | mkfs mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.ntfs mkfs.xfs |
平时使用 ext4
,这次尝试以下 btrfs
。直接使用对应文件系统的命令,需要磁盘分区地址作为参数:
mkfs.btrfs /dev/mapper/sda1
下面配置启动时候的默认解密,编辑 /etc/crypttab
,增加如下内容
1 | # <target name> <source device> <key file> <options> |
<target name>
的部分,会作为 /dev/mapper
目录下映射出来的设备名称。设置完解密部分后,再将解密设备进行挂载。
<source device>
是挂载的设备,简单的可以直接用 /dev/sda1
,但是这个在系统重启或者插入其他的磁盘的时候,可能发生变动。可以改成 uuid 的方式,更加保险。执行如下命令获取硬盘 uuid
sudo blkid
这个命令会显示当前全部的设备,找到我们这块磁盘的部分。
1 | /dev/sda1: UUID="89c83d74-6f09-4210-90a1-5718d680b9dd" TYPE="crypto_LUKS" PARTLABEL="primary" PARTUUID="718e439b-f52f-427c-9571-999784104ef6" |
然后就可以使用这个 UUID 来更新 /etc/crypttab
文件,下次就会基于 UUID 来处理设备,只要是这块硬盘,换 USB 插口也不会有问题。
1 | # <target name> <source device> <key file> <options> |
搞定了解密部分,剩下的就是编辑 /etc/fstab
自动把解密后的设备挂载到系统目录,供软件正常使用。增加如下内容
1 | # <file system> <mount point> <type> <options> <dump> <pass> |
完成这些操作,系统启动的时候可以自动解密,然后再将解密后的设备挂载到 /mnt/sda1
,任务完成。
未加密的情况下,机械硬盘某些扇区损坏,只会丢失这部分数据。加密的情况下,如果某些损坏的扇区刚好是 LUKS header 的数据,那会因为 LUKS 损坏而无法解密,造成整块磁盘的数据都不可用。
所以这个唯一的入口数据,需要做好必要的备份。参考 How to backup and restore LUKS header on Linux,主要使用 luksHeaderBackup。设备使用 /dev/disk/by-uuid/
下拼接 UUID 的定位。
cryptsetup luksHeaderBackup /dev/disk/by-uuid/89c83d74-6f09-4210-90a1-5718d680b9dd –header-backup-file /mnt/backup.bin
这个文件备份到云上或者安全的位置,完成备份。
辞旧迎新,新年可期,兔年大吉!总结 2022,展望 2023。
工作上的一些技术细节不赘述,整体上今年在开发环境
和计算机网络
这两块折腾的很开心。
我是 Linux 党,但是因为开会需求,目前主系统是 Windows。之前使用 IDE 直接连接 WSL 做开发,近似 Linux 体验。缺点是 IDE 是以网络方式连接 WSL 内的文件系统,构建缓存索引的操作都非常慢且大量占用系统资源,每次切换分支带来文件变动,IDE 都需要大量时间来更新索引和缓存。
年初开始用 VMWare 虚拟机,在虚拟机内再装 IDE 然后进行开发。我机器配置不低,这样开发也还算顺畅。缺点也有:
上面两个缺点属于可接受的范围,所以今年主要是这么做的。
最近 JetBrains Gateway 开始 beta。集中式的远程开发在工具方面终于开始就绪,年末进行了切换。
Visual Studio Code
也支持类似的功能
现在我的开发方式为本机的 IDE
连接 本机 WSL / 远端服务器(有 IDE 引擎 + git 仓库)
。目前远端为本机的 WSL,年后打算自己在家组一台服务器作为远端,把本机的作为备份。正常有网的情况都能连接服务器进行开发。服务器计算能力、网络环境都好于笔记本,这样的开发体验应该会不错。
这个方式目前的缺点是配置无法正常同步,并且部分插件无法在 Gateway
里面使用。官方有这个相关的 Issue,清楚这个问题,但是目前没有支持的计划。这类远端开发架构的产品刚推出,我理解 JetBrains
目前肯定有很多更加重要的问题需要先解决。希望他们工作顺利,之后有资源来完善这块,让我之后有更加好的体验。
今年对计算机网络这块理解也更加深入,细分成 实例
和 抽象
两块。
实例指组成计算机网络的各个独立设备、配件的概念。2021年末自己组了主机,当时诉求还只是为了让显卡带的动 4K 屏幕。今年随着配件降价,和想帮同事装机,看着各种介绍科普视频,对各个配件的了解反而比去年自己装机的时候有了大的进步。总结如下:
路由器、NAS 和其他树莓派等小型嵌入式设备大同小异也都包含在这个里面,基本组成也都是这些。
表现是有向垃圾佬
转变的趋势,闲暇时间会想淘二手低成本组装一个高性能、稳定的 软路由
/ 服务器
/ NAS
等等等等。毕竟几十块钱的双路服务器和云服务上开出的实例相比,太便宜了。好在工作上需要测试数据库,需要一些常开的低成本机器,新的一年可以考虑组几台节约成本。还有目前主要玩的都是 x86 指令集,未来服务信创需要一些 arm 的机器(就是不想用 mac,不想用云厂商的 arm),新的一年有机会也尝试一下。
今年业务上部分服务开始用 k8s (这东西好归好,重也是真重),服务编排比单节点的 docker-compose
复杂很多,对服务之间的组网方式有了更加深入的理解。今年也服务了更多的客户,了解了更多的网络管理方式。根据异常表现在抽象的网络拓扑结构中定位问题的能力肯定也比一年有提高。
这块比较有成就感的是使用某 v 开头的软件做了一个自动分发流量的软路由,无感知科学上课。这类工具很棒的点是有详细的配置文档。V4 版本的配置文档我仔细的看了一遍,在看的过程中,可以根据各个配置项的介绍,反推到计算机网络中各个层级、各个位置对流量的处理方式。这种方式我感觉可以帮助人很顺利、有实感的理解抽象的计算机网络,推荐给大家。
还有个今年实际动手操作的,内网穿透,用的 frp。以前了解过花生壳,但是没上手过。现在有服务器有公网IP,用开源方案解决更安心。
2023 年有个小目标,搞定自己的私有化存储,把备份的数据从几块移动硬盘转移到这个里面。这里现在的初步想法是:
分布式文件存储系统之前有了解,但是没实践。今年有空研究一下 & 动手搭建出来。好了之后配合内网穿透,各种玩法都能做出来。
2022 年因为疫情加上大会,整体是求稳。没有激进政策,在别人都是激进政策的情况下,就会显得保守。开完经济会议后,最近这一个月的政策变化的又有点大,一下子从冬天进入了夏天。应该对 2023 年保持乐观预期。大环境总体趋势是容易赚的钱赚的差不多了,需要赚辛苦钱。几个大厂都在降本增效,长期来看,我觉得是个好事情。
很直接的一个问题,一个技术,怎么样应用可以快速变现?我个人把技术应用的方向简单的分为三类(变现速度从快到慢):
用切蛋糕来举例,上述应用分别对应:
一个中立的技术,比如区块链。可以发行“虚拟货币”构造旁氏类快速积累财富;也可以利用不可篡改的特性,开发电子合同解决多方的信任问题,降低交易成本。前者来钱非常快,但是不创造任何社会价值,甚至有非常大的外负性。后者商业模式都不确定,成功了可以降低商业成本,但是即使有价值也不一定有盈利。如果没有外部因素介入,一定是劣币驱逐良币,更多的人基于现实因素考虑选择短期内收益更高的方式。我自己不会去碰第一类,第二类能接受但是感觉社会价值不大,第三类路很难,个人的收益也不一定最大,但是对社会整体式有意义的。不好的经济环境可以有效的挤泡泡,淘汰掉第一类的应用,沉淀下能为整体创造价值的应用。
2022 年的整体环境就在挤泡泡,并且大方向慢慢从做蛋糕到分蛋糕转变,强调公平的分配。某些行业特殊的超额收益一定会慢慢的回归正常,这个需要自己调整好心态。毕竟整个社会更加公平,对大部分个体而言,一定是好事情。
我不会给朋友任何股票买卖建议,毕竟赚了也不分我钱,亏了就要埋怨我
以下仅供参考,不提供任何投资建议,朋友们需要独立思考然后做出自己的投资决策
我们的 A 股市场一般是 3-5 年一个小周期,可以参考这条微博,引用如下:
1 | 大家回想了一下,最近几年的牛熊顶底: |
去年大部分时间是个下坡路,年末 2 个月开始反弹,可以期待现在是一个小周期的上升方向。
欧美打工人为啥 WLB,我们为啥 996。因为他们有更多的高端产业,能够创造更多的产业附加值,溢出流到个体上,就有更好的福利。所以作为中国打工人,需要关注国家整体的产业升级情况。虽然他不直接影响我们的工作,但他影响我们基础生活水平的下限。
首先提一本书,余盛的《芯片战争》,被推荐了但是还没看,今年会看完。
芯片设计感觉有长足进步。龙芯 2022 年的几款产品看起来都不错,3A5000 系列个人应用应该已经到 Zen1 的水平,这个其实够用了。现在混乱的点是指令集太多,国内信创 x86、ARM、RISC-V、MIPS 和 LoongArch,几个指令集,导致研发力量分散,形成生态也慢。好处是一定会有激烈的竞争,整下来的一定是相对有竞争优势的。未来应该会集中到一两个里面,个人比较看好 RISC-V 和 LoongArch,一个作为社区主导的开放架构,一个作为商业公司主导的开放架构。x86 本身就是要被替代的,MIPS 已经死了。现在 ARM 最为主流,但是他后面还是商业公司主导,自主可控性质上感觉差点意思。
芯片制造应该是遇到困难了,毕竟制造业得一步步踩坑,不像信息产业。去年关键技术上没什么好的消息。值得一提的是投资这个的大基金
反腐,一锅端了一群人。希望扫清垃圾之后认清现实,好好努力,早日实现突破。
去年长江存储弯道超车,已经率先量产了使用 XTacking 3.0 技术 232 层堆叠的存储芯片。我已经买了两块致态的硬盘以示支持。希望未来长存在存储芯片领域,可以有更大的市场占有率。
我不买车,但是不妨碍我看车。去年新能源市场,比亚迪已经暴捶其他主机厂。技术积累厚积薄发。年末还发布了仰望,仰望这车是真牛逼(我贫瘠的语言只会说这两个字),易四方这种精准的四轮独立控制技术,和互联网厂商造车是不同的技术应用思路。现在的“智能”是联通各个系统,思路还是互联网打通系统,提高信息流转这一套,相对容易实现。信息化精准控制各个部件,类比下来就是改造基础物理条件了,需要长期的测试和技术积累,这是真正的技术壁垒。希望以后我需要买车的时候,要么有钱买得起仰望,要么技术进步,这些功能已经下放到普通款。
父上如果今年想换车,怂恿买千山翠,不然就等 2024 年新款。
据说比亚迪去年 3W 校招指标,去年应届毕业生 1000W,仅比亚迪一家,贡献了全国 1/333 的校招。在这种裁员缩招的大环境下,应该更能感受占据高端产业后,对个人的发展和工作有哪些影响。
流浪地球2
最近把自己和公司的 Web 服务器都从 Nginx 切换成了 Caddy,主要原因是 HTTPS 证书申请太麻烦。之前的 Nginx 如果使用 Let’s Encrypt 的证书,代理程序会自动修改网站的配置文件,不太方便通过 git 来管理这些配置。刚好更换 Caddy 一起解决了这些问题。几年前就看过 Caddy 的相关介绍,但是没有真正使用。现在最新的 Caddy 已经到 2.0 版本,这次实际使用体验下来,Caddy 吸引我的几个功能点如下:
Caddyfile 是 Caddy 的配置文件,官方文档定义是人类方便使用的一种配置文件(这句话让我想到以前的 Toml 😊),我赞同这个点。Caddyfile 确实比 JSON 有意思多了!官方有个简单的对比表格 JSON vs. Caddyfile,我复制到下面:
JSON | Caddyfile |
---|---|
Easy to generate | Easy to craft by hand |
Easily programmable | Awkward to automate |
Extremely expressive | Moderately expressive |
Full range of Caddy functionality | Most of Caddy functionality |
Allows config traversal | Cannot traverse within Caddyfile |
Partial config changes | Whole config changes only |
Can be exported | Cannot be exported |
Compatible with all API endpoints | Compatible with some API endpoints |
Documentation generated automatically | Documentation is hand-written |
Ubiquitous | Niche |
More efficient | More computational |
Kind of boring | Kind of fun |
自己配置过程中,主要按照官网的图例(如下)进行修改。各个部分参照着进行修改,可以很快地完成配置。
不同于 Nginx 需要拆分很多个文件,使用 Caddy 将一个站点的全部配置放在一个 Caddyfile 内。得益于 Caddyfile 精简的结构和强大的表达能力,Caddyfile 可以由很少的内容表示复杂的配置!一个 PR 将成百上千行的 Nginx 配置替换成几十行 Caddyfile,感觉超级棒!
这个站点的配置如下:
1 | ldsink.com { |
Caddy 也可以很方便的代理 WebSocket 的流量,在某些时候很有用,如下:
1 | @websockets { |
可能因为 Caddy 是使用 Go 开发,Caddyfile 保留了一些 Go 的特点,他的缩进使用 Tab,不是我们常用 Python 的 4 个空格。修改完配置文件以后,可以使用 Caddy 自带的 fmt 命令加上 --overwrite
格式化并覆盖配置文件(写这个文章前几天还是 -overwrite
,然后更新了,此时就是 --
了)。进入配置文件所在目录,执行如下命令:
caddy fmt –overwrite
Caddy 的一大特点就是自动 HTTPS,默认的配置都是 HTTPS 的,只需要使用 80 和 443 端口就可以自动在 Let’s Encrypt 或者 ZeroSSL 签发证书并正确配置。Caddy 除了自动搞定开始的签发和配置,还可以在证书过期前自动进行续签。对于我们这种小站而言,只要 DNS 设置正确,就再也不用担心各种证书问题,Caddy 都能帮忙自动搞定。
Caddy 还支持修改 ACME 设置更改 SSL 证书的提供商,不过这个属于高级用法,我没用过,有需要的可以自己翻文档。这里介绍一下怎么通过插件把 Caddy 和 DNSPod 结合,自动签发通配符证书。
首先需要安装一个第三方模块,让 Caddy 可以调用 DNSPod 的接口。
caddy add-package github.com/caddy-dns/dnspod
然后需要去 DNSPod 申请一个 Token 供 Caddy 使用,链接如下:
https://console.dnspod.cn/account/token/token
申请好 Token 后,需要添加到 Caddyfile 内。可以结合模块的介绍,填入对应的配置。
1 | # 这里我做成了一个 snippet,方便重复使用 |
最后重新加载配置,自动的通配符证书应该就生效了。
caddy reload
这里特别夸一下,Caddy 支持不停机热更新。如果新的配置文件有错误,Caddy 会自动回滚到上一个有效的配置,保证服务持续可用。
前面夸了很多,Caddy 确实很好,但也不是十全十美,他也有一些小问题,这里也说明一下。使用过程中注意和规避掉这些缺点,Caddy 就可以在生产环境中替换 Nginx 使用。
首先明确一点,Caddy 本体就是个独立的可执行二进制文件。想要集成任何模块,做的事情其实是 Caddy 加上模块的源代码一起重新编译出一个新的二进制文件。这种方式让 Caddy 变得简单和轻量,某种意义上也带来了一些麻烦。
我最开始使用 Ubuntu 的包管理方式安装 Caddy,这种方式有个严重的问题:之后所有的更新(apt update && apt upgrade -y
),只会更新成不带第三方插件版本的最新的 Caddy。我们使用 caddy add-package
命令安装的任何第三方扩展,更新后都会丢失,例如上面的 DNSPod 模块。
Tips: 查看安装的模块可以使用命令
caddy list-modules
想要在更新成携带第三方模块版本的 Caddy,需要使用自带的升级命令:
caddy upgrade
我现在的做法是,通过 apt 安装完 Caddy 后,马上去 /etc/apt/sources.list.d
内删除源。只通过 apt 安装,后续的更新都走自带的升级命令。这样做,可以保持第三方模块存在。
不过这样做也有一个坑,需要注意:caddy 自带的更新,会将现在的可执行文件直接备份,然后下载新的文件到对面的目录。如果这个时候网络中断导致更新没有完成,那么 caddy 文件会损坏,需要手动把备份文件恢复。否则如果此时遇到 caddy 进程重启,新的 caddy 将无法启动。
更新时候的日志信息如下,遇到问题恢复也简单,把 .tmp
后缀的备份文件重新恢复成原始文件就好。
mv /usr/bin/caddy.tmp /usr/bin/caddy
1 | { |
MaxCompute的常见报错信息编号有规范定义,格式为:异常编号:通用描述 - 上下文相关说明
。其中SQL、MapReduce、Tunnel的错误信息是不一样的。更多错误信息,请参见错误码概述。
基本都是 Java 生态,提供 Connector,使用 JDBC 连接。Python 提供了 SDK,需要开发。
连接页面,是否需要根据不同的数据源的形式,实现不同的标签说明?
尽信书,不如无书。 —— 孟子
一个人的命运啊,当然要靠自我奋斗,但是也要考虑到历史的行程。 —— 长者
批判的看管理学/成功学书籍,思考内容里面举例和结果之间的因果关系是否成立。找到真正的关键因素。
结果:实现从邮政递送DVD到网络流媒体播放的转型;
历史行程:
自我奋斗:
结果:从网络播放旧内容到通过外部制片公司创作新内容,如《纸牌屋》;
历史行程:
自我奋斗:
核心护城河:为用户提供优质内容。
五一前夕,我花了点时间使用扩展 Bookmarks Organizer 整理了十年间在浏览器内积累的近千个书签。根据网址的变化,记录一些个人对趋势的观察。
最为明显的特征是 HTTPS 全面普及,几乎没有 HTTP 的网页。收藏夹一些政府部门,甚至包括银行官网(非个人网银页面),传统意义上比较顽固的页面都进行了更新,部署了 HTTPS。
这块主要是四个变化方向:
celeryproject.org
=> celeryq.dev
、tylermcginnis.com
=> ui.dev
Github.com
。这个有很多例子,就不举例了www.domain.com/(blog/bbs/doc)
直接更换成二级域名的方式 (blog/bbs/doc).domain.com
/articles/2022/04/30/three-passions
会直接变成 /three-passions
一部分国内网站,曾经的顶级域名优先使用 .com,现在切换成了 .cn。这部分也分为两类:
moegirl.org
=> moegirl.org.cn
以前政府网站质量一言难尽,现在感觉重视起来了。域名,内容和网站本身安全性等各个方面都有了很多提升。现在厅级以下应该不让独立建站,挂靠上级网站下对应的模块。以前长沙市长沙县泉塘街道的 url.gov.cn
这样有意思的域名以后应该难再见到了。
法院、工商、财政相关的信息获取难度比以前大大降低,而且看得出有些部门审美是在线的。
全国社会组织查询
储蓄国债发行
社会环境和商业模式变化,很多个人站点因为各种原因都消失了。
很多好的产品随着时代落幕,也有更多好的产品变得更加成熟。一些产品或者服务被收购,网址更新成集团网址。这里提两个和我的主业没关系的网站,以前偏社区,现在正式商业化运作,希望他们未来更加美好。
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i
hexo-generator-json-content
--save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true
一个人的命运啊,当然要靠自我奋斗,但是也要考虑到历史的行程。
很惭愧,就做了一点微小的工作,谢谢大家。