家里网络从联通更换到了移动,移动没有公网 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 连接情况
]]>工具有 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
这个文件备份到云上或者安全的位置,完成备份。
]]>工作上的一些技术细节不赘述,整体上今年在开发环境
和计算机网络
这两块折腾的很开心。
我是 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
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到网络流媒体播放的转型;
历史行程:
自我奋斗:
结果:从网络播放旧内容到通过外部制片公司创作新内容,如《纸牌屋》;
历史行程:
自我奋斗:
核心护城河:为用户提供优质内容。
]]>最为明显的特征是 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
这样有意思的域名以后应该难再见到了。
法院、工商、财政相关的信息获取难度比以前大大降低,而且看得出有些部门审美是在线的。
全国社会组织查询
储蓄国债发行
社会环境和商业模式变化,很多个人站点因为各种原因都消失了。
很多好的产品随着时代落幕,也有更多好的产品变得更加成熟。一些产品或者服务被收购,网址更新成集团网址。这里提两个和我的主业没关系的网站,以前偏社区,现在正式商业化运作,希望他们未来更加美好。
产品设计上:
除开产品,还有不知道 G 点在哪里的小管家。
稍微一盘点,老实说,如此不把用户当人看的产品,我还在使用,真佩服自己的忍耐力。可能知乎在早期确实给我留下了太好的印象,当时从上面很多专业大佬会分享知识,学习到了很多。但是现在,只能呵呵。
因为是老用户,还是和一些朋友互相关注,直接注销账号感觉有些可惜。账号留着,但是估计不会再使用,找了一些方法,尽可能的减少感到恶心的地方。
进入 APP,我的
-> 最近浏览
,点击右上角三个点图标的设置,可以 关闭最近浏览
。
不知道是哪个版本引入的功能,可能有点赞或者评论就会自动关注问题,再配合 APP 刻意设计的误触式点赞,我发现自己多了千余个关注的问题。再次 bibibi……
参考知乎上小荷才在问题如何批量取消关注的问题?的回答,可以使用如下方式:
F12
打开浏览器控制台,切换到控制台
部分1 | function unfollow_all() { |
个人中心的点赞也无法隐藏。我不想去深究这么设计的原因是为了追求更多的用户数据,还是知乎产品经理的大脑发育有部分缺陷。批量取消关注的问题提供了一个思路,自己动手写了个JS函数,模拟点击取消投票。
步骤如下:
我的主页
https://www.zhihu.com/people/用户ID/F12
打开浏览器控制台,切换到控制台
部分1 | let neutralCount = 0 |
新一代效率工具平台, https://u.tools/。
核心功能:
离线文档浏览,https://zealdocs.org/。
国内最好的同步盘,https://www.jianguoyun.com/。
同步盘和网盘的区别:
密码管理工具,https://keepassxc.org/。
一开始 KeePass,再 KeePassX,最终 KeePassXC。
一站式办公服务平台,https://www.wps.cn/。
优点:
向日葵:远程控制软件,https://sunlogin.oray.com/。
花生壳:内网穿透软件,https://hsk.oray.com/。
脑图、流程图类工具
开源免费的云同步网盘加密工具,https://cryptomator.org/。
务必使用国际版
https://www.mozilla.org/zh-CN/firefox/browsers/
Free. Built on open source. Runs everywhere.
使用历史:Notepad++
-> Sublime Text
-> Atom
-> Visual Studio Code
胸怀千秋伟业,恰是百年风华。
伟大、光荣、正确的中国共产党万岁!
伟大、光荣、英雄的中国人民万岁!
]]>/etc/init.d
或者 /etc/rc.d/
。 这里介绍一个简单方式,通过 crontab
来实现这个目的。执行
crontab -e
增加如下内容,其中 /path/to/your/script.sh
替换成需要执行的命令或者脚本。
1 | @reboot /path/to/your/script.sh |
crontab
一般用于定时执行任务,但是它还提供了 @reboot
用于启动之后执行。 推荐一个非常好用的网站 crontab.guru ,可以用来检测命令,预测下一次任务的启动时间。
sudo
命令进行提权到 root
后才可以顺利执行。默认这一步操作是需要输入密码的,可以通过设置免除密码。执行如下命令,获得当前用户的用户名。
echo $USER
配置文件位于 /etc/sudoers
,但是注意,千万不要直接修改这个文件! 我见过太多直接修改这个文件造成系统无法启动的例子了。 正确的方式是使用 visudo
命令修改。执行
sudo visudo
按下 Shift+g
切换到文件尾部,按下 o
新增一行, 将下面这一行添加到文件尾部($USER
替换成之前获取到的用户名)。 Shift+z+z
保存并退出。
1 | USER ALL=(ALL) NOPASSWD: ALL |
注销或者重启之后,再次使用 sudo
命令就不需要输入密码了。
sudo
本身是个危险操作,执行之后会使用最高的 root
权限执行命令。很多发行版第一次执行都会给出提示,比如 deepin
会有如下内容
1 | 我们信任您已经从系统管理员那里了解了日常注意事项。 |
同时用户目录会生成 .sudo_as_admin_successful
文件,表示已经给出过提示。
我非常喜欢这三点提示。
看到一则令人开心的消息Firefox – we’re finally getting HW acceleration on Linux。目前 Firefox 在 Linux 下并不支持硬件加速,导致其在B站播放视频非常容易卡顿。我目前安装了一个 Chrome 专门用于看B站视频。期待 Firefox 早日实现全部功能,在 Linux 下也拥有流畅的效果。
可以在 about:support
内查看目前使用的图像合成引擎,我这里 Firefox Developer Edition 85.0b7 还是 OpenGL
,希望早日用上 WebRender
。
系统里面,积累起来的 SSH 密钥已经包含了 rsa
、dsa
、ecdsa
和 ed25519
四对。基于 “同类型的保留一种,安全性高优先” 的原则进行清理。已知:
rsa
和 dsa
基于大数因数分解。ecdsa
和 ed25519
基于椭圆曲线离散对数问题。rsa
长度 4096 位之后目前可以视为安全。dsa
已被认为不安全。ecdsa
政治上:算法选择由 NIST 设定;技术上:过于复杂以至于无法完善的检查。因此也视为不安全。ed25519
安全性最高,性能最好。但是需要比较新的版本(OpenSSH 6.5+)才支持。最后保留4096位的rsa
密钥和ed25519
密钥。在允许的情况下优先使用ed25519
密钥。
这是一个题外话。前几天同事注释把密钥写成了秘钥,我发现了这个错别字。改正之后,我们对这个字的含义产生了兴趣。因为“秘密”这个词表示隐秘,两个单字应该都有近似的含义,那为什么是“密钥”而不是“秘钥”。“秘”和“密”的区别是什么?
一番查证,归纳出了如下区别:
秘 | 密 |
---|---|
客观,被动 | 主观,主动 |
内容本身隐蔽,强调的是不易知 | 需要去隐蔽内容,强调的是不让知 |
神鬼之事、高深莫测、罕闻稀见 | 人为之事、故意遮掩、严加控制 |
例词:秘本、秘方、秘史、秘闻、秘笈 | 例词:密封、密谈、密约、保密、泄密、解密、绝密、机密 |
汉语博大精深。
默认的终端变回了 bash,并且用的是 debian 默认的 gnome 终端,可以在应用商店安装老版本的 deepin-terminal。
sudo visudo
$USER ALL=(ALL) NOPASSWD: ALL
$USER
替换成当前用户名
sudo update-alternatives –config editor
一些配置文件从旧系统复制到新系统,包括
sudo apt install sogoupinyin -y
这个东西看用途是一个可视化的防火墙,为普通用户提供网络管理功能。
但是,对于开发者来说,这东西极其糟糕,建议卸载。主要问题是这东西会限制一些服务的端口监听,调试需要使用的一些代理都会被限制。
命令行卸载:
sudo apt remove -y deepin-defender
删除配置文件:
rm ~/.deepin-defender
重启之后恢复正常
目前应用商店没有上架,我使用源代码方式编译安装。安装完成之后还需要多装一个 Notify,之后重启电脑,可以正常使用。
]]>sudo apt install gir1.2-notify-0.7
编辑 /etc/sysctl.conf
文件,调整 fs.file-max
参数值。
fs.file-max = 200000
验证方式:
cat /proc/sys/fs/file-max
编辑 /etc/security/limits.conf
,增加以下内容
1 | * soft nproc 65535 |
验证方式:
ulimit -n
编辑 /etc/sysctl.conf
文件,调整 net.ipv4.ip_local_port_range
参数值。
net.ipv4.ip_local_port_range = 1024 65000
验证方式:
cat /proc/sys/net/ipv4/ip_local_port_range
auto
。worker_processes
*worker_connections
即为总并发数,根据实际情况调整。ulimit -n
。相关介绍: HTTP Keepalive Connections and Web Performance
记录日志会消耗 CPU 和 I/O 资源。
server_tokens off;
docker-compose
配置三块。install-XXX
、set-XXX
Shebang
均使用 #!/usr/bin/env bash
提高兼容性docker-compose
配置简单更新了一下镜像版本。
其他的遇到了一个有意思的问题,如何在 Jenkins 的容器内继续使用 Docker。参考 Using docker in a dockerized Jenkins container 更新编排文件。
]]>