Tmux 使用笔记

Tmux 是一个终端复用器(terminal multiplexer),用起来就离不开。网上有很多 Tmux 使用指南,但是用下来发现还是自己整理一遍才能真正的记住,于是有了这篇文章,本文意在整理 tmux 最常用操作,详细的操作指南请移步 「tmux(1) manual page」。

基本概念

tmux采用C/S模型构建,输入tmux命令就相当于开启了一个服务器,此时将 新建一个会话(session),会话中默认新建一个窗口(window),窗口中默认新建一个面板 (pane)

  • 一个 tmux session 可以包含多个 windowwindow 默认充满 session
  • 一个 window 又可以包含多个 pane ,且都处于同一界面下。

常用操作

以下按照 Ctrl 和 Alt 的简写记录,周知。 C -> Ctrl A -> Alt

  • 新建和断开
tmux               # 新建一个无名称的会话
tmux new -s demo   # 新建一个名称为demo的会话
tmux detach        # 断开当前会话,会话在后台运行

tmux a             # 默认进入第一个会话
tmux a -t <>       # 进入之前的会话

tmux kill-session -t demo # 关闭demo会话
tmux ls                   # 查看所有会话

C-b d    # 断开当前会话
C-b C-Z  # 挂起当前会话

C-b c    # 新建 window
C-b &    # 关闭当前窗口(关闭前需输入y or n确认)

C-b "    # 下侧新建面板
C-b %    # 右侧新建面板
C-b x    # 关闭当前面板(关闭前需输入y or n确认)
  • 切换会话
C-b 0~9  # 切换到指定 window
C-b p    # 切换到上一 window
C-b n    # 切换到下一 window
C-b f    # 快速定位到 window(输入关键字匹配窗口名称)

C-b s    # 显示 session 列表,用于选择并切换
C-b w    # 显示 windows 列表,用于且切换窗口
C-b q    # 显示 pane 编号,在编号消失前输入对应的数字可切换面板

C-b ←↑→↓ # 移动光标切换 pane
C-b ;    # 切换到上一 pane
C-b o    # 切换到下一 pane
  • 调整布局
C-b !          # 将当前 pane 拆分为一个独立 window
C-b z          # 最大化当前面板,重复一次恢复正常(v1.8版本新增)
C-b {          # 向前置换当前面板
C-b }          # 向后置换当前面板
C-b C-o        # 顺时针旋转当前窗口中的所有面板
C-b A-o        # 逆时针旋转当前窗口中的所有面板
C-b space      # 在自带的面板布局中循环切换
C-b A + ←↑→↓   # 以5个单元格为单位调整当前面板边缘
C-b C + ←↑→↓   # 以1个单元格为单位调整当前面板边缘(Mac下被系统快捷键覆盖)

参考文献

正则表达式元字符

在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。

下面列出 iBM 帮助文档列出的 perl 正则表达式元字符

元字符 描述
\ 将下一个字符标记为特殊字符或字面值。例如, n 匹配字符 n ,而 \n 匹配 换行符。序列 \ 匹配 \,而 ( 匹配 ( 。
^ 匹配输入的开始部分。
$ 匹配输入的结束部分。
* 零次 或 更多次 匹配前面的字符。例如, zo* 匹配 z 或 zoo 。
+ 一次 或 更多次 匹配前面的字符。例如, zo+ 匹配 zoo ,但是 不匹配 z 。
? 零次 或 一次 匹配前面的字符。例如, a?ve? 匹配 never 中的 ve 。
. 匹配任何 单个字符,但换行符除外。
(pattern) 匹配模式并记住匹配项。通过使用以下代码,匹配的子串可以检索自生成的匹配项集合: Item [0]…[n] 。要匹配圆括号字符 ( ) ,请使用 ( 或 ) 。
x\|y 匹配 x 或 y 。 例如, z|wood 匹配 z 或 wood 。 (z|w)oo 匹配 zoo 或 wood 。
{n} n 是一个非负整数。精确匹配 n 次。例如, o{2} 不匹配 Bob 中的 o,但是匹配 foooood 中的 前两个 o 。
{n,} 在此表达式中, n 是一个非负整数。至少 n 次匹配前面的字符。例如, o{2,} 不匹配 Bob 中的 o ,但是匹配 foooood 中的所有 o 。 o{1,} 表达式等效于 o+ , o{0,} 等效于 o* 。
{n,m} m 和 n 变量是非负整数。至少 n 次且至多 m 次匹配前面的字符。例如, o{1,3} 匹配 fooooood 中的 前三个 o 。 o{0,1} 表达式等效于 o? 。
[xyz] 一个字符集。匹配任意一个包含的字符。例如, [abc] 匹配 plain 中的 a 。
[^xyz] 一个否定字符集。匹配任何未包含的字符。例如, [^abc] 匹配 plain 中的 p 。
[a-z] 字符范围。匹配指定范围中的任何字符。例如, [a-z] 匹配英语字母中的任何小写的字母字符。
[^m-z] 一个否定字符范围。匹配未在指定范围中的任何字符。例如, [m-z] 匹配未在范围 m 到 z 之间的任何字符。
\A 仅匹配字符串的开头。
\b 匹配 某个单词 边界,即,某个单词和空格之间的位置。例如, er\b 匹配 never 中的 er ,但是不匹配 verb 中的 er 。
\B 匹配 非单词 边界。 ea*r\B 表达式匹配 never early 中的 ear 。
\d 匹配数字字符。
\D 匹配非数字字符。
\f 匹配换页字符。
\n 匹配换行符。
\r 匹配回车字符。
\s 匹配任何空格,包括空白、制表符、换页字符等等。
\S 匹配任何 非空格 字符。
\t 匹配 跳进 字符。
\v 匹配 垂直跳进字符。
\w 匹配任何 单词字符,包括下划线。此表达式等效于 [A-Za-z0-9_] 。
\W 匹配任何 非单词字符。此表达式等效于 [^A-Za-z0-9__] 。
\z 仅匹配字符串的结尾。
\Z 仅匹配字符串的结尾,或者结尾的换行符之前。

参考文献

Cloud-init 概述及 PVE 下创建步骤说明

Cloud-init 是一个程序,它在启动时在客户机上运行,是用于 跨平台云实例初始化 的行业标准多分发方法。它支持所有主要的 公共云提供商、私有云基础设施的供应系统和裸机安装

云实例将由磁盘映像和实例数据初始化:

  • 云元数据
  • 用户数据(可选)
  • 供应商数据(可选)

Cloud-init 将识别在引导期间运行的云,从云中读取任何提供的 元数据,并相应地初始化系统。这可能涉及到设置网络、存储设备、配置 SSH 访问密钥和其他各种系统配置。之后,cloud-init 还将解析和处理传递给实例的任何可选用户或供应商数据。

Proxmox VE Cloud-Init 支持

Proxmox VE 支持 Cloud-init ,使用 Cloud-Init,就可以在管理程序端配置网络设备和 ssh 密钥。当 VM 第一次启动时,VM 中的 Cloud-Init 软件将应用这些设置。

Step 1: 准备 Cloud-Init 模板

许多发行版本已经提供了即时可用的 Cloud-Init 映像(作为 .qcow2 文件) ,所以你也可以直接下载和导入这样的镜像。在下面的例子中,我们将使用 Ubuntu https://cloud-images.Ubuntu.com 中心提供的云映像。

# 下载镜像
wget https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img

# 创建新的虚拟机
qm create 9000 --memory 2048 --net0 virtio,bridge=vmbr0

# 将下载好的磁盘镜像导入 local-lvm 存储
qm importdisk 9000 bionic-server-cloudimg-amd64.img local-lvm

# 最后将新的磁盘加载到虚拟机上作为 scsi 设备
qm set 9000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-9000-disk-1

Ubuntu Cloud-Init 映像需要 SCSI 驱动器的 virtio-SCSI-pci 控制器类型。

注:经过实测,除了 importdisk 步骤外,其余步骤均可在 PVE 的 web 面板上完成,建议终端操作并观察 web 变化后,再尝试纯 web 界面操作。

添加 Cloud-Init CD-ROM 驱动器

下一步是配置 CD-ROM 驱动器,用于将 Cloud-Init 数据传递给 VM。

qm set 9000 --ide2 local-lvm:cloudinit

要能够直接从 Cloud-Init 映像引导,需要将引导磁盘参数设置为 scsi0 ,并将 BIOS 限制为仅从磁盘引导。这将加速引导,因为 VM BIOS 会跳过可引导 CD-ROM 的测试。

qm set 9000 --boot c --bootdisk scsi0

还要配置一个串行控制台并将其用作显示器。许多 Cloud-Init 映像都依赖于此,因为这是 OpenStack 映像的一个需求。

qm set 9000 --serial0 socket --vga serial0

在最后一个步骤中,将 VM 转换为模板会很有帮助。然后,您可以从这个模板快速创建链接克隆。从 VM 模板进行部署要比创建完整的克隆(副本)快得多。

qm template 9000

Step 2: 部署 Cloud-Init 模板

您可以通过克隆轻松地部署这样的模板:

qm clone 9000 123 --name ubuntu2

然后配置用于身份验证的 SSH 公钥,并配置 IP 设置(可选):

qm set 123 --sshkey ~/.ssh/id_rsa.pub
qm set 123 --ipconfig0 ip=10.0.10.123/24,gw=10.0.10.1

此外还可以配置 DNS 域等,更多配置项请查看 PVE 官网 Cloud-Init Support

之后启动虚拟机,即可验证之前的配置是否生效。

参考文献

一个 Notion 一站式记账复盘看板系统 | BJ-PFD 正式发布

今天发生了不少事情,孟晚舟历经千余天终于归国,探访了某通信城,再次回味某一本哈利波特,后被堵在 Apple Store 外面,滑了两下 Pixel 3,汇总了下旧红包,继续设计另一个 full-stack 作品,以及继续努力工作。

而这篇文章,我就是想说,我的个人开发项目 BJ-PFD 携完整文档来跟大家见面啦!

https://imagehost-cdn.frytea.com/images/2021/09/25/2021-09-25-11.26.4728c378eb1d0358d7.png

前阵子用 Notion 制作了一整套 Bullet Journal 模版,记账、查账、复盘、回忆在这里都能搞定啦,自从发现了这个好物我几乎每天都会用它进行复盘和记账,每月结束时我也可以很方便的进行每月的复盘总结。我的生活就在这不知不觉间变得更有价值,幸福感和价值感也越来越强。

https://imagehost-cdn.frytea.com/images/2021/09/25/2021-09-25-11.27.49d4699c755bdaca81.png

做了这套系统后,最主要解决我个人的就是财务问题了。刚毕业时待遇不高,为了避免产生财务危机,每一笔支出都要有设计有目的的流出。等到有一些积累了,就需要分门别类的去让自己的财产发挥更大的价值,结合目标管理、愿望清单等功能,可以避免许多不必要的消费,让来之不易的血汗钱用在刀刃上。

https://imagehost-cdn.frytea.com/images/2021/09/25/2021-09-25-11.30.51645af1df2e1e64f0.png

除了这些,这套「系统」还提供了许多日常可以用到的小功能,都是从个人实用主义出发,目的是提升个人价值感和幸福感

https://imagehost-cdn.frytea.com/images/2021/09/25/2021-09-25-11.32.0200b9925db1a895ce.png

还有更多内容,可以去文档中慢慢探索哟,在「文档」页,可以看「快速预览」查看整个项目效果,可以看「快速入门」快速的将这个模版私有化,更详细的内容等你有兴趣了慢慢探索。

要问文档在哪里找呢?

https://imagehost-cdn.frytea.com/images/2021/09/25/2021-09-25-11.34.09213ecdeefee0efb9.png

项目主页有一个大大的按钮,点一下就可以了。

希望这个项目也能带给你一些启发和收获,希望对你有用。最后附上项目链接,欢迎访问。

? BJ-PFD 项目入口:https://bjpfd.frytea.com

系列文章

原生 clash linux 环境配置方法

环境

  • Ubuntu Desktop 20.04 理论适用大部分 Linux 发行版
  • Dreamacro / clash

方法

步骤一:配置 clash 执行程序

首先从 clash 的github仓拉取稳定版二进制可执行文件

wget https://github.com/Dreamacro/clash/releases/download/v1.7.1/clash-linux-amd64-v1.7.1.gz
gzip -d clash-linux-amd64-v1.7.1.gz
sudo mv clash-linux-amd64-v1.7.1 /usr/bin/clash
sudo chmod +x /usr/bin/clash
clash -v

# 为 clash 添加绑定低位端口的权限,这样运行clash的时候无需root权限
sudo setcap cap_net_bind_service=+ep /usr/bin/clash

步骤二:配置 clash

此时执行 clash ,不会有任何效果,仅仅提供一个 默认端口监听:

clash

编辑clash配置文件 /.config/clash/config.yaml

可以将您线路提供的配置文件直接覆盖到这里,这里不涉及配置文件的编写方法。

步骤三:配置 clash 服务自启

sudo touch /etc/systemd/system/clash.service
sudo vim /etc/systemd/system/clash.service

实例服务配置如下:

[Unit]
Description=clash daemon

[Service]
Type=simple
User=
<YOURNAME>
ExecStart=/usr/bin/clash -d /home/YOURNAME>/.config/clash/
Restart=on-failure

[Install]
WantedBy=multi-user.target

之后配置服务自启动

systemctl enable clash
systemctl start clash

参考文献

Docker 内部安装 postfix

今天写 Dockerfile 定制 Docker 镜像需要在内部安装 postfix ,但是其默认安装后会弹出配置界面,DOcker 构建过程是无法进行交互的,结果就是卡在该界面无法继续:

https://imagehost-cdn.frytea.com/images/2021/09/18/_1631946203798041f1bce8fb47a294.png

搜寻一圈发现一个github仓库(cisagov/postfix-docker)中打包镜像时也包含了 postfix,在这里找到了解决办法,很简单:

FROM perl:5.28-buster

RUN apt-get update && \
        DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
            postfix \
    && apt-get clean all

主要是这里:

  • DEBIAN_FRONTEND=noninteractive :告知操作系统直接运行命令,而无需向用户请求输入(所有操作都是非交互式的)

构建OK,解决。

参考文献

自动递归下载依赖 deb 包 bash 脚本

说明

  • 脚本自动递归下载给定包列表deb包及其依赖包,深度3层;
  • 若指定参数则下载给定的包及其依赖包(目前仅支持指定1个包,不支持多包);
  • 若无参数则默认下载列表中给出的包机器依赖包;
  • 下载到当前目录;
  • 请提前配置好源。
#!/bin/bash

logfile=./auto_deps_log
# 需要获取其所依赖包的包
# 或者用$1,从命令行输入库名字
libs="gdisk logrotate pciutils systemd lvm2 udev logrotate libfuse2 iptables libnetfilter-conntrack3 libnfnetlink0 libusb-1.0-0 cpio xfsprogs libprotobuf-c1 liblmdb0"
ret=""

function getDepends()
{
   echo "fileName is" $1>>$logfile
   # use tr to del < >
   ret=`apt-cache depends $1|grep Depends |cut -d: -f2 |tr -d "<>"`
   echo $ret|tee  -a $logfile
}

if [ ! -n "$*" ] ;then
    echo "you have not input a word! get list: $libs"
else
    echo "the list you input is $*"
    libs=$1
fi
echo "get $libs"

# download libs dependen. deep in 3
i=0
while [ $i -lt 3 ] ;
do
    let i++
    echo $i
    # download libs
    newlist=" "
    for j in $libs
    do
        added="$(getDepends $j)"
        newlist="$newlist $added"
        apt-get download $added $j
    done

    libs=$newlist
done

参考文献

Bullet Journal for Notion 之个人财务架构 | 好的设计胜千言

前些日子发布的 Bullet Journal 模版及其附属看板程序 BJ-PFD 得到许多朋友的关注,看到大家的留言我很开心。根据之前发布的教程,在您的 Notion 中应该有了一个比较完备的 Bullet Journa 复盘模版,并且可以使用 BJ-PFD 看到统计的个人财物报表了。

光有这些可能还不够,如果不了解这背后的设计思想,可能会很难讲着整个系统用起来。反之不仅可以很好的使用这些工具管理您的个人财物,还可以根据自己的需要定制功能。怎么样?跟我一起来看看这背后的数据设计思路吧!

https://imagehost-cdn.frytea.com/images/2021/09/13/BJ-PFD-5a9d7d437596fc7f.png

以上是 Bullet Journal 这套模版的数据关系图,是不是看着已经头晕了?没关系,这之间的关系并不重要,下面我从实际的功能角度来介绍下这些数据是如何协同工作实现一系列实用功能的。

这套 Bullet Journal 在个人财务管理方面主要提供这些功能:

  • 日常记账及统计视图
  • 月度预算及实时追踪
  • 理财买卖及收益管理

今天就按照这个顺序,介绍一下日常情况下这些功能怎么用起来。

提前说请一个约束条件,下面的所有操作均可以在 Bullet Journal 中当前月的看板中完成,就像下面这样:

https://imagehost-cdn.frytea.com/images/2021/09/13/2021-09-13-9.57.56699f4cc947742fe2.png

月度预算及实时追踪

我一般会在月初或是前一个月月末进行来做一个月的预算。创建新月份的看板可以使用这个 new 按钮或是直接拷贝上个月的页面即可。

https://imagehost-cdn.frytea.com/images/2021/09/13/2021-09-13-10.00.445d91730a1bfe9368.png

进行预算主要有两步,首先找到当月中的预算区块,将当月所有的花销预算列在这里。

https://imagehost-cdn.frytea.com/images/2021/09/13/2021-09-13-10.02.09f07838d302cfa8ac.png

算出总额后,找到上面的 Finance Plan ,新建一个当月的预算条目,将总额填入其中的 预算 字段中。

https://imagehost-cdn.frytea.com/images/2021/09/13/2021-09-13-10.06.58ba9f7a0700f24e16.png

此外该表格中还有几点需要注意:

  • 年月:必须按照 year-month 的格式,比如 2021年8月填 2021-8 ,2020年12月填 2020-12 。因为计算当月花销时会匹配该名称,匹配到才会算作当月的消费,因此必须严格符合。
  • 日期:必须填写当月的时间,比如 2021年8月可以选择 2021年8月中的任何一天。因为后面会根据该字段提取年和月。
  • 需要设置一个筛选器,根绝年和月筛选出当月的预算账户,比如 2021年8月份的筛选器这样配置:

https://imagehost-cdn.frytea.com/images/2021/09/13/2021-09-13-10.26.549da0f9d1cd2706d3.png

按照以上要求填写完毕后,后面再日常记账后,总额就会算到这里的 实际花销 中,将使用率和当月进度对比,即可完成预算实时监控。

日常记账及统计视图

有了预算,如何去记录当月的各种开销呢?下面就一起来看看。

https://imagehost-cdn.frytea.com/images/2021/09/13/2021-09-13-10.27.37e0067c90a979c072.png

首先在账本区块中设定一个过滤器,过滤出当月的花销,之后向该数据库记录数据即可。可以按需填写账户、日期、备注、用途等信息,此外需指定预算账户为当月的预算账户。

在填写这些信息时还有一个小技巧,我平常花销全部使用信用卡,之后我创建了一个新的视图专门过滤出信用账户,增加新条目时会自动帮我将账户、预算账户等信息填好,可以快速记账。

https://imagehost-cdn.frytea.com/images/2021/09/13/2021-09-13-10.30.53a6047d0a1057d413.png

您也可以按照自己的需要添加合适的视图,方便统计和记账,比如我自己用的账单就有这么多视图。

https://imagehost-cdn.frytea.com/images/2021/09/13/2021-09-13-10.33.16c368a853d9ed2ff5.png

理财买卖及收益管理

预算、收支都记好了,现在越来越多的人们开始关注理财,投入理财产品的资金是不能够被灵活支取的,如果将这部分钱都放在账户中显示出来可能会造成自己还有很多可用资金的假象。

为了更好的管理个人理财,模版提供了专门的理财管理,包括了理财账户和理财账本。

在理财账户这里您可以添加自己购入的各种基金或是理财产品,并指定一个账户。未来投入的钱会在账户统计时直接扣除。

https://imagehost-cdn.frytea.com/images/2021/09/13/2021-09-13-10.36.25d0d7e9d347103d8c.png

设定好理财账户后,就可以在投资账本这里记录买入卖出了。

https://imagehost-cdn.frytea.com/images/2021/09/13/2021-09-13-10.38.28c274e9e21c805fd8.png

需要注意的是,再填写金额时按照实际金额填写即可,加入买入1000,卖出时转了1000,就写卖出2000,之后在投资账户填写利润1000,之后在总额哪里会进行相应的计算。

总结

至此,简单的个人财物记账方法介绍完毕,若有介绍不详细的地方可以留言提问。本文主要介绍一些思路和方法,理解了就好使用了,如果哪里有疑问欢迎提问。

Bullet Journal for Notion 之快速入门

前些日子我的 BJ for Notion 辅助看板工具 —— BJ-PFD,专注于个人财务看板的小工具正式发布啦。再公布了预览之后得到许多热心网友的关注,我也真心的希望这个小工具能带给更多人价值。于是今天就带来了这篇《Bullet Journal for Notion 之快速入门》,目的在于快速配置,从注册 Notion 开始,带您快速看到效果。

获取 Notion 模版

BJ-PFD 的数据来源于我一年前就在制作并使用的一个 Notion Bullet Journal 模版,要想用起来这个小工具,首先就要获取我这份模版。

第一步:注册 Notion (有账号请跳过)

如果您此时还没有注册 Notion ,需要先注册一个 Notion 账号,前阵子 Notion 拿到了一笔不小的融资,现在对个人免费版已经没有区块和页面数量的限制,可以放心使用。

https://imagehost-cdn.frytea.com/images/2021/09/11/2021-09-11-3.18.584aacc5f18bf1c416.png

顺便一提,Notion 提供数据导出功能,可以轻松的将页面以 Markdown 格式导出,将数据库(表格)以 *.csv 格式导出。

注册账号很简答,只需 打开 Notion 官网,在这里输入您的邮箱:

https://imagehost-cdn.frytea.com/images/2021/09/11/2021-09-11-3.20.40ea053c87bd49cc6e.png

之后选择 Sign up 即可,之后您的邮箱会收到一封邮件,其中包含一个多段分割的验证码,回到一之前的页面输入这个验证码即可登陆。

https://imagehost-cdn.frytea.com/images/2021/09/11/2021-09-11-3.23.08315bd1c416b29428.png

如果您是新账号,进入 Notion 后会看到一个演示页面,至此,Notion 账号准备完毕。

https://imagehost-cdn.frytea.com/images/2021/09/11/2021-09-11-3.23.08315bd1c416b29428.png

今后想要登陆,一样的步骤,使用邮箱验证码即可,如果想要开启密码登录,在设置界面中设置密码即可。

第二步:获取模版

我已将制作好的 Bullet Journal 模版分享出来,并开启了克隆权限,您只需点击我的页面链接

Bullet Journal V1.0.0 模版链接:https://frytea-share.notion.site/Bullet-Journal-V1-0-0-c4dd075cdc2340129eb198daa48ebf5b

https://imagehost-cdn.frytea.com/images/2021/09/11/2021-09-11-3.34.04d5e2803319b3253b.png

打开您就可以看到这份模版啦,其中包括了存储各种内容的数据库,以及各种看板等,左上角就是使用频率最高的月度看板啦。

如何将该模版添加到您的 Notion 中呢?

https://imagehost-cdn.frytea.com/images/2021/09/11/2021-09-11-3.35.29095031aba185506b.png

方法很简单,看到右上角的 Duplicate 了吗?点击它,稍等片刻,即可在您的 Notion 工作区中找到这个模版啦。

https://imagehost-cdn.frytea.com/images/2021/09/11/2021-09-11-3.38.309c3570b7b0b12227.png

关于这个模版的使用方法,后面会慢慢介绍,请期待后面的详细使用指南。

请注意,该模版中的大部分内容您可以按照自己的喜好去定制,但需注意的是:ALL DB 中的数据库不可随意删除,其中的字段也不可以随意更名、删除!您可以增加自己需要的字段,或是将不想看到的字段隐藏。若任意删改数据库和字段将会导致您的模版无法驱动 BJ-PFD。

至此,您已经在自己的 Notion 账户中获取到这份模版,接下来就用这里的数据来填充一些 BJ-PFD 辅助看板工具吧。

配置 BJ-PFD

获取到了模版,接下来就来配置一下 BJ-PFD 把,按照这个流程走下来,您可以立刻看到最终效果。

第一步:注册 BJ-PFD

打开 BJ-PFD,点击 Get Started

BJ-PFD:https://bjpfd.frytea.com

如果您有账号可以直接登陆,没有账号请先注册,设置用户认证系统的原因见上一篇《概览》,在此不再赘述,相关数据均以加密的方式存储在云端,可以放心使用。

https://imagehost-cdn.frytea.com/images/2021/09/11/2021-09-11-3.46.4990a4f7f6ae62fcbb.png

如果没有账号,点击其中的 Sign Up:

https://imagehost-cdn.frytea.com/images/2021/09/11/2021-09-11-3.47.46834d2ee3ea4180df.png

填入相关信息注册即可,成功后会自动跳转到工具首页。

请记好您的密码,由于本人时间精力有限,暂不提供密码修改和找回功能。

第二步:填入配置参数

如果没有配置,打开界面所有组件都是空白的,同时设置界面会自动弹出。如果没有自动弹出,可以在右上角找到它。

https://imagehost-cdn.frytea.com/images/2021/09/11/2021-09-11-4.23.36775843e90423d0b6.png

接下来就来介绍如何填写这些参数。

  • Notion Token

BJ-PFD 是基于 Notion 公开 API 实现的,因此要想让 BJ-PFD 读取您账本中的数据并可视化,需要配置一个权限。

首先需要创建一个 integration ,在您 BJ 模版所在的工作空间,按照图示的顺序打开 integration 的管理面板。

https://imagehost-cdn.frytea.com/images/2021/09/11/2021-09-11-4.26.20a59e9295ed9227c3.png

点击最中间的 Create new integration 。

https://imagehost-cdn.frytea.com/images/2021/09/11/2021-09-11-4.29.346746050488b6912c.png

填写一下名称,点击 Submit 即可。

https://imagehost-cdn.frytea.com/images/2021/09/11/2021-09-11-4.30.213d41d39156036287.png

之后在这里将生成的 Token 拷出来,如果为隐藏状态,点击一下 Show。

https://imagehost-cdn.frytea.com/images/2021/09/11/2021-09-11-4.31.47-1c786a5b79b6f0f99.png

这就获取到了 Notion Token,回去填到 BJ-PFD 对应表格中即可。

都这里还没完,该 integration 还没有权限访问您的 Bullet Journal,还需要给它一个权限。

https://imagehost-cdn.frytea.com/images/2021/09/11/2021-09-11-4.34.368c92d5a82e66a8f5.png

再次回到您的 Bullet Journal 页面,点击右上角的 Share ,选择 Invite ,选中您刚刚创建的 integration 之后 invite即可,此时再点击 Share 可以看到您创建的 integration 就有了访问您 Bullet Journal 的权限。BJ-PFD就是通过这个来访问您的数据并可视化的。

https://imagehost-cdn.frytea.com/images/2021/09/11/2021-09-11-4.38.0847ccae4349ae0492.png

到这里 Token 配置完毕了,还需要指定一下特定的几个数据库 ID。

  • Notion 「BJPFD-账本-DB」 ID

回到您的 Bullet Journal 主界面,找到 BJPFD-账本-DB 这个项目,右键拷贝链接。

https://imagehost-cdn.frytea.com/images/2021/09/11/2021-09-11-4.39.457642aadd88886a36.png

在主界面选中可以,也可以在左侧快速导航中拷贝。

拷出来的链接可以放在任意一个文本编辑框中,其结构大概是这样:

https://www.notion.so/xxxxxxxxxxxxxxxxxxx?v=yyyyyyyyyyyyyyyyyy

您需要拷贝其中 xxxxxxxxxxxxxxxxxxx 的部分,这就是该数据库的 ID 了,将它拷入 BJ-PFD 中 Notion 「BJPFD-账本-DB」 ID 中即可。

剩下的 Notion 「BJPFD-账户-DB」 ID、Notion 「BJPFD-投资账本-DB」 ID、Notion 「BJPFD-投资账户-DB」 ID、Notion 「BJPFD-预算-DB」 ID 按照类似的方法配置即可,需要将对应 DB 的ID拷入,最后点击 Save。窗口会自动刷新,从您配置的 Notion 数据库中获取数据。

待加载完毕,就可以看到数据啦!

https://imagehost-cdn.frytea.com/images/2021/09/11/2021-09-11-4.46.4589553b3ba17f16e4.png

这些图表和 Bullet Journal 中是如何对应的,这还需要您一点点来探索。

至此,Bullet Journal 和 BJ-PFD 的快速部署就完成啦,至于这个模版如何使用,我会整理另外的文档详细说明,尽请期待!