Hexo
Hexo 是一个博客框架,它把带 YAML Front matter 的 Markdown 文件通过 Node.js 和 Pandoc 渲染成静态的 html 文件。NexT 是针对 Hexo 的主题,可以理解为 CSS。
Github
Pages
用于托管静态网页,就是放在上面就不能动了,没有数据库,更新页面要重新上传。创建一个名为
yourusername.github.io 的仓库,分支为
gh-pages。然后可以访问
yourusername.github.io。之后再创建的名为
sample 且分支为 gh-pages 的仓库,为
yourusername.github.io/sample。
Dynadot
是一个域名注册商,买一个域名。设置 DNS 为 Dynadot DNS。域名记录,A
记录指向 185.199.109.153,AAAA 记录指向
2606:50c0:8001::153。这两个是 Github Pages 的公共
IP,可以通过 ping yourusername.github.io。子域名 www 的
CNAME 记录指向
yourusername.github.io。对应仓库(根仓库)的根目录加一个
CNAME 文件,内容为购买的域名。仓库设置 -> pages ->
Custom domain -> Enforce HTTPS。然后等 Github 检查 DNS,排队从 Let's
Encrypt 获取 SSL 证书。
你可以使用 Whois 来查询这些一键生成的页面背后的操作者是谁。在 Github 查看笔记修改历史。
- 写笔记的源文件,md 格式
- 用 npx hexo g 生成文件到 public 目录
- 用 rsync 把目录移动到另一个仓库,再用 python 敷写目录里的系列文件
- 用 git 推送仓库到 Github
概念
网页:网页文件的后缀一般是.html,超文本标记语言。它是一个文本文件,超的地方在于,比如在两个
标签之间表示一个段落,我们可以给这个标签单独设置样式如字体字号,并和其他段落标签排版。我们也可以点一个按钮后删除一个段落。HTML 有两个兄弟,CSS 管样式和排版,JavaScript 管人机交互和计算。
代码和环境:写代码就是人指挥电脑该如何做事,编程语言介于人话和机器话之间,首先保证人能看懂,还要一个翻译官把它翻译成机器能听懂,这个翻译官称为环境。JavaScript 就是一种编程语言,它的环境可以是浏览器内核,也可以是 Node.js。
浏览器:用浏览器打开网页就像用播放器打开视频,得先把网页从别人的服务器上下载到本地。当然自己也可以当自己的服务器,客户端和服务端占 localhost 的不同端口号。
Markdown:用标记符号给通常的文本做了扩展,如用 ## 表示二级标题,用一个空行表示换行,这样撰写者可以不管排版只写内容。它和 html 都是文本文件,且写它比写 html 文件容易。它还可以内嵌 html 标签。
Hexo:把 Markdown 文件转码成 html 文件,并生成有特定目录结构的文件夹,这个文件夹称为网站。它是 Node.js 环境下的一个软件。
npm:Node.js 环境的包管理器,即应用商店。用它来下载安装 Hexo
git:
签名与身份验证:git push 给远程仓库时,github 会根据发送者提前提交的公钥来生成一个挑战,发送者用私钥对挑战进行签名并发回 github,github 再用公钥验证签名,如果通过,说明确实是这个用户。
操作
更换 npm 镜像源
1 | npm get registry |
安装 nodejs,pandoc,python,bs4,ssh,git
克隆笔记源:
1 | git clone https://github.com/ruofancooh/blog-source.git |
用 ssh 生成一对密钥
1 | ssh-keygen -t ed25519 -C "your_email@example.com" |
把公钥添加到 GitHub Settings → SSH and GPG keys
改 push 的链接:
1 | git remote set-url origin git@github.com:ruofancooh/blog.git |
脚本。
推:
1 | git add . |
公钥和私钥
张三想给李四邮寄一个机密文件,不希望文件的内容被第三者看到。假设他们是之前从来没有见过面的,且只有邮寄这一条路可用于传递信息。于是张三把文件装在了一个盒子里,并上了自己的锁,把上锁后的盒子邮寄给了李四。这就可以保证盒子被截获后,文件依然保密。
问题来了,李四是没有张三那把锁的钥匙的,这意味着如果李四想看文件,还需要把张三把钥匙也邮寄过去。比如我们在网上发送一个带密码的压缩包给对方,如果对方想解压,还需要我们把密码也发送过去。我们应该如何保证密码本身不被截获。
李四想:问题是我打不开你上的锁,那么你可以上我的锁啊。我先把我的锁邮寄给你,你用我的锁把文件加密后邮寄过来,我再用我的钥匙把它打开。这样就可以保证钥匙不会在邮寄过程中泄露。
李四的那把锁叫公钥,锁的钥匙叫私钥。所有人想给李四邮寄文件时,都可以用李四的公钥把文件加密,但加密后的文件只有有私钥的人才能打开。
NexT 主题
1 | body { |
Git
工作区:除.git 目录本身所在的文件夹,当前能直接编辑的所有文件。
暂存区:使用 git add. 把当前所有修改写到.git/index 文件里。
版本库:岁月史书,历史的所有修改记录。
禁用对非 ASCII 字符的转义,让 git status 输出中文字符。
1 | git config --global core.quotepath false |
撤销上一次 commit
- 撤销 commit,保留暂存区修改 git reset --soft HEAD~1
- 撤销 commit,保留工作区修改 git reset HEAD~1
- 彻底撤销 commit 并丢弃所有修改 git reset --hard HEAD~1
- 已推送到远程,安全撤销 git revert HEAD
- 修改上一次 commit 信息 / 补充文件 git commit --amend
从 Git 历史记录中删除已经不在当前工作区的大文件以减少 .git 文件夹的大小
Termux
在安卓手机上模拟 Linux 环境的 app。
hexo 需要 node.js 环境,还要用到 ssh 和 git。根据笔者已有的知识,这些软件在 liunx 或 Windows 命令行下运行成功过。所以如何在手机上运行这些软件?最容易想到的是在手机上找一个命令行环境。
termux 和 linux 的本质区别:
安卓手机的文件系统是 exfat,Linux 的文件系统是 ext4。前者没有权限、符号链接一说。所以如果在