Hexo+Github建立个人博客记录
建立Blog,记录过程所有的配置都是在Fedora 27 Workstation版本下进行,Windows配置环境恶心了我很久所以不做介绍。
Hexo部署环境Hexo运行在Linux环境中的配置及其简单,只需要确认系统中安装了git和Nodejs就好,在Fedora27中已经默认有Git软件包,如果需要安装git使用dnf install -y git就好。目前我们只需要添加nodejs就可以了,准备工作开始~
使用git version 看看是否已经安装了git。
安装Node.jsNode.js的安装只需要两条命令,按照顺序执行就好:
用于系统的更新,基本上等待命令结束就可以,只是保证运行环境的所有软件包都是最新的状态。
[root@localhost test]# dnf update -y
用于安装Nodejs,dnf管理器会自动配置需要的依赖软件,也是等待就好,没有特别的操作。
[root@localhost test]# dnf install -y nodejs
安装Hexo
接下来需要选择一个你想安装的目录,例如:/root/Document/Hexo/test
那么需要确定工作目录并且切换过去
[root@localhost test]# cd /root/Document/Hexo/test
之后所有的操作都会在这个目录或者它的子目录。
[root@localhost test]# npm install hexo -g
安装结束之后,查看是否安装成功,使用:
[root@localhost test]# hexo -v
如输出如下信息则说明安装成功,可以执行下一步。 [root@localhost test]# hexo -v hexo: 3.4.4 hexo-cli: 1.0.4 os: Linux 4.13.13-300.fc27.x86_64 linux x64 http_parser: 2.7.1 node: 8.9.3 v8: 6.1.534.48 uv: 1.16.0 zlib: 1.2.11 ares: 1.10.1-DEV modules: 57 nghttp2: 1.25.0 openssl: 1.0.2m-fips icu: 57.1 unicode: 8.0 cldr: 29.0 tz: 2016
失败解决方案
失败请更换 cnpm 或者 更换淘宝源重试。
如果安装,确认自己在正确的目录下,执行npm install重试
安装 Hexo-server安装Hexo-server主要是作为本地测试使用,通过本地localhost:4000访问来预览,方便调整。
使用如下命令执行安装:
[root@localhost test]npm install hexo-server -g
执行启动hexo-server,确认是否可以正常使用:
[root@localhost test]hexo s OR[root@localhost test]hexo server
输入如下结果则正常启动:
[root@localhost test]# hexo s INFO Start processing INFO Hexo is running at http://localhost:4000/. Press Ctrl+C to stop.
这里服务器已经启动了,使用Ctrl+C停止服务,恢复正常的Shell窗口。
初始化Hexo
这里需要创建新的Blog目录,例如:/root/Document/Hexo/test
在test目录下执行:
[root@localhost test] hexo init
初始化会将Blog所需的文件放入test文件夹中,这个目录就是我们需要推到github上面的东西。也就是整个博客的根目录。
配置Git这部分的内容已经和我们本地的计算机没有什么太大的关系了,我们需要去Github上面注册一个账户,在这个账户里面添加一个新的repo,例如: test.github.io我们在本地建立的site使用git工具,将整个blog发布到对应的软件仓库中,接下来我们需要配置git的信息使用命令配置git的用户名和邮箱:
[root@localhost test] git config --global user.name "yourname"[root@localhost test] git config --global user.email "youremailaddress"
添加SSH认证使用ssh进行与github的通信可以免去我们每次都输入用户名密码的繁琐,因此我们需要为本地的计算机生成一个SSH的KEY。
命令如下:
[root@localhost test] ssh-keygen -t rsa -C "your_email@example.com"
期间会让我们输入密码进行验证,如果这个位置输入密码,今后每次连接到github的时候,都需要输入这个密码才能连接,如果这里我们不输入密码直接回车,今后连接的时候就不需要密码了,推送的内容会直接被推送,之后返回结果。
生成的密钥会直接放在当前用户家目录下的隐藏文件夹里,因此我们把他找出来:
[root@localhost test] cd ~/.ssh
复制id_rsa.pub文件内的所有内容,粘贴到github的添加SSH密钥位置。成功。
连接Github测试连接到Github是否能够成功,使用如下命令:
[root@localhost test] ssh -T git@github.com
如果上一部分生成SSH密钥的时候输入了密码,请在这个命令运行之后按照提示输入密码,返回结果如下:
[root@localhost .ssh]# ssh -T git@github.comHi test! You’ve successfully authenticated, but GitHub does not provide shell access.
我们已经成功的连接上了Github上面的repo,github的配置结束了~
配置Hexo-deployergit可以将我们的blog推送到repo上面去,但是本身我们也可以使用hexo提供的工具来进行blog的更新。
直接编辑hexo的配置文件: _config.yml
[root@localhost test]# vim _config.yml
修改配置文件中的这个部分,如下是最终的修改结果:
77 # Deployment 78 ## Docs: https://hexo.io/docs/deployment.html
79 deploy: 80 type: git 81 repo: git@github.com:test/test.github.io.git 82 branch: master
现在将我们本地的默认站点推送到Github上面去试试吧!
[root@localhost test]# hexo dINFO Deploying: gitINFO Clearing .deploy_git folder…INFO Copying files from public folder…INFO Copying files from extend dirs…[master caa83a9] Site updated: 2017-12-27 18:26:01 1 file changed, 63 insertions(+), 11 deletions(-)To github.com:test/test.github.io.git62dcd56..caa83a9 HEAD -> masterBranch master set up to track remote branch master from git@github.com:test/test.github.io.git.INFO Deploy done: git
输出最后Deploy done,就表示我们的原始页面已经上传成功了~,访问Repo的名字就可以直接看到初始blog的样子了。
后续插件安装的记录:
[root@localhost ~]# cnpm list -g --depth 0
/usr/lib
├── cnpm@6.0.0
├── hexo@3.4.4
├── hexo-cli@1.1.0
├── hexo-generator-archive@0.1.5
├── hexo-generator-category@0.1.3
├── hexo-generator-index@0.2.1
├── hexo-generator-search@2.4.0
├── hexo-generator-tag@0.2.0
├── hexo-render-pug@2.1.0
├── hexo-site@0.0.0
└── npm@6.4.1
Hexo常用命令说明Hexo目录下常用的命令有:
[root@localhost test]# hexo s //启动hexo本地服务进行blog预览
[root@localhost test]# hexo new TITLE //新建文章
[root@localhost test]# hexo clean //清除缓存
[root@localhost test]# hexo g //重新生成站点页面文件
[root@localhost test]# hexo d //推送到github
添加鼠标爆炸点击效果在/themes/yelee/layout/layout.ejs的文件中,文件开始位置加入如下字段:
<head>
<canvas class="fireworks" style="position: fixed;left: 0;top: 0;z-index: 1; pointer-events: none;" ></canvas>
<script type="text/javascript" src="//cdn.bootcss.com/animejs/2.2.0/anime.min.js"></script>
<script type="t ...
Light From Twitter
开一个单独的文档记录一些想要保存 或者 感觉自己需要学习的内容。
听说你们没有女朋友,不好打发时间,玩起来:https://t.co/bFsK2OfHVc
— plantegg (@plantegg) May 5, 2024
我也推荐一个Neso Academy 的操作系统课,目前油管上英文教这门课就这个我觉得教的最好:https://t.co/yQtZdRgYBx https://t.co/vdJYgIRnPd pic.twitter.com/g1QUBjCVQm
— Susan the dice tree (@feltanimalworld) May 26, 2024
这是我最推荐的 CS 专业必看的操作系统课程,由哈工大出品,哈工大的李治军教授主讲。
需要懂一点点的 x86 汇编,看完之后编程水平会突飞猛进。
也可以购买他编写的教材《操作系统原理、实现与实践》。因为是教材,所以很便宜。https://t.co/HoKyedPADk pic.twitter.com/OBgqPBW8qi
— Austin(坚持每周分享✊) (@austinit) May 26, 2024
之前和读者聊到,“现在envoy用来做七层网关,要想达到好用,就差几个关键技术点没解决”。我决定开一个系列,不定期更新,写写 Envoy 目前还做得不够好的地方。https://t.co/xc52r1P4Wi 今天是第一篇,讲讲路由变更粒度。
— Zexuan Luo (@spacewander_lzx) May 26, 2024
还记得 Google 之前搞的用 eBPF 来做 CPU Schedule 的 Customize 么?https://t.co/wW0F5DESoN最近内核的老哥们很认真的在推这个事 https://t.co/plkrY8Y5a7额外推荐一个视频https://t.co/ruenu06Oirhttps://t.co/3Q9lvrISfh
— NadeshikoManju@摇曳露营 S3 放送中 (@Manjusaka_Lee) May 9, 2024
BTW,几年前写过一个排查内核侧,特别是驱动内侧使用的工具…:https://t.co/lRbDGBy0wX
已经用它找出过一大堆现网问题了,比如 nv,intel mlx 驱动分配内存却用任何工具看不出来的地方这个就可以瞬间看到… 缺点是需要重现现场,它需要动态抓取页面分配事件,前天还用这个迅速排查了几个问题…
— silosrc (@silosrc) April 30, 2024
Course on Linux debugging, profiling and tracing training by @bootlincom
Slides: https://t.co/OxmADoTOEHLab exercises: https://t.co/3Irhh332w1Lab material (.tar.xz): https://t.co/psVOfoxSbW#Linux #linuxkernel pic.twitter.com/s9J4ud9nuQ
— 0xor0ne (@0xor0ne) April 25, 2024
又有一本入坑内核开发的好书
《Linux Kernel Programming by Kaiwan N Billimoria》第二版。这本书最大的特点是:新+保姆式上手。
第一版基于内核5.4,第二版6.1,内容很新。(在内核和模块开发资料当中很难得)其次对于第一次涉及这个领域的小伙伴也非常友好,从安装虚拟机到第一次编译内核(续 pic.twitter.com/vXFMzN4MYt
— Hema shushu (@hemashushu) March 20, 2024
发现身边的小伙伴 Git 用的不是很熟练,我推荐了三个教程给他们。第一个是入门练手的:可以通过动画非常直观的了解 git 各种操作背后的原理,如 git tree 是如何生成和合并的。
非常推荐!https://t.co/SKGIAf6McNhttps://t.co/64guGEBMt5
还有两个是…..⬇️⬇️
— Guangzheng Li (@iguangzhengli) June 7, 2023
https://t.co/JQMNcjxskH
发现一个开源的小游戏还挺有趣,可以通过游戏来学习 git~ https://t.co/PNrfhrrMJf pic.twitter.com/53xXonlY0D
— Guangzheng Li (@iguangzhengli) April 22, 2024
Best Practices for OpenZFS L2ARC in the Era of NVMe (SDC 2019)https://www.youtube.com/watch?v=yHgSU6iqrlE
SSH Tunnels Cheat Sheet:
linux 系统调用open和close: https://blog.csdn.net/weixin_42330983/article/details/127266412
有时候我也不知道为什么我总能找到这些报告,来自intel spdk的ssd性能测试,我觉得没有比这更加详细全面严谨具有时效性的测试了。https://twitter.com/SuJinYan123/status/1838588144108892355https://spdk.io/cn/SSD Performance Test
blktrace 命令说明
Blktrace 命令是一款 Linux 内核块设备 I/O 层的跟踪工具。它可以获取 I/O 请求队列的各种详细情况,包括进行读写的进程名称、进程号、执行时间、读写的物理块号、块大小等。
一个I/O请求进入block layer之后,可能会经历下面的过程:
Q Remap: 可能被DM(Device Mapper)或MD(Multiple Device, Software RAID) remap到其它设备
G Split: 可能会因为I/O请求与扇区边界未对齐、或者size太大而被分拆(split)成多个物理I/O
I Merge: 可能会因为与其它I/O请求的物理位置相邻而合并(merge)成一个I/O
D 被IO Scheduler依照调度策略发送给driver
C 被driver提交给硬件,经过HBA、电缆(光纤、网线等)、交换机(SAN或网络)、最后到达存储设备,设备完成IO请求之后再把结果发回。
常见的状态切换 Q–G–I–D–C
259,2 0 2 0.000001080 7134 Q W 756856 + 800 [dd]
259,2 0 3 0.000004247 7134 X W 756856 / 757368 [dd]
259,2 0 4 0.000005806 7134 G W 756856 + 512 [dd]
259,2 0 5 0.000008792 7134 I W 756856 + 512 [dd]
259,2 0 6 0.000012844 7134 G W 757368 + 288 [dd]
259,2 0 7 0.000013202 7134 I W 757368 + 288 [dd]
259,2 0 8 0.000031708 1830 D W 756856 + 512 [kworker/0:1H]
259,2 0 9 0.000034250 1830 D W 757368 + 288 [kworker/0:1H]
259,2 0 10 0.001598439 7135 C W 756856 + 512 [0]
259,2 0 11 0.001689880 7135 C W 757368 + 288 [0]
# 主,从设备号 , 起始Sector 为0 , 写几个, 时间 , pid , 状态 , R/W , 未知
保留 blktrace 的结果为 bin 文件。
blktrace -d /dev/sdb
使用blkparse 分析已经有的记录
# 记录性能数据 到 文件。
root@ip-172-31-11-235:/home/ec2-user|⇒ blktrace -d /dev/nvme0n1p1
^C=== nvme0n1p1 ===
CPU 0: 1 events, 1 KiB data
CPU 1: 0 events, 0 KiB data
Total: 1 events (dropped 0), 1 KiB data
# 每个cpu设备每个设备存储一个单独的文件。
root@ip-172-31-11-235:/home/ec2-user|⇒ ll
total 4.0K
-rw-r--r-- 1 root root 56 Nov 4 17:55 nvme0n1p1.blktrace.0
-rw-r--r-- 1 root root 0 Nov 4 17:55 nvme0n1p1.blktrace.1
root@ip-172-31-11-235:/home/ec2-user|⇒ blkparse -i nvme0n1p1.blktrace.0
# 格式化分析的数据为bin。
root@ip-172-31-11-235:/home/ec2-user|⇒ blkparse -i nvme0n1p1 -d nvme0n1p1.blktrace.bin
# 使用一个简易的图形方式分析结果。
root@ip-172-31-11-235:/home/ec2-user|⇒ btt -i nvme0n1p1.blktrace.bin