hexo博客搭建踩坑系列
文章底部链接点开404
这个坑我踩了很久,百度了很多文档都无效。事实上,当你在本地启动博客时,点击底部链接是无效的,部署上线后点击才会生效
butterfly主题中开启了404,启动博客后仍然无效
答案同上。部署线上后才会生效
修改配置后启动博客预览没生效
hexo的命令都可以简化,例如hexo server,可以直接hexo s;hexo generate,可以直接写成hexo g等等。于是我自作聪明使用hexo c清理缓存,导致并没有清理缓存,修改不生效,而我并没有意识到自己的命令错误。清理缓存的正确命令是hexo clean,简写hexo cl。
Hexo博客主题更换和基础配置
更换主题Hexo启动后,如果发现站点语言不是简体中文,需要到站点配置文件_config.yml中修改语言为zh-CN
下载主题和配置推荐butterfly主题,官网地址根据官网文档给出的命令安装:git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly下载渲染器:npm install hexo-renderer-pug hexo-renderer-stylus --save接着来到站点配置文件,最下面配置主题为butterfly现在就可以启动本地博客预览了,打开Git Bash一键三连:hexo cl && hexo g hexo s看到这个界面就是更换主题成功了,看起来依然简陋了些,因为我们还没有对主题做一些配置
主题基础配置根据butterfly官网文档说明,建议将主题配置文件_config.yml复制一份更名为_config.butterfly.yml放到站点根目录,以后只需在_config.butterfly.yml配置即可
如果使用了 ...
《茜茜/致命网红 》2022 澳大利亚 喜剧爱情恐怖
译名 茜茜/致命网红片名 Sissy年代 2022产地 澳大利亚类别 喜剧/爱情/恐怖语言 英语上映日期 2022-03-11(西南偏南电影节)/2022-09-29(美国)IMDb评分 6.2/10 from 4,426 users豆瓣评分 6.2/10 from 1238 users导演 汉娜·巴洛 Hannah Barlow编剧 汉娜·巴洛 Hannah Barlow主演 叶林·韩 Yerin Ha 露西·巴雷特 Lucy Barrett 艾莎·迪伊 Aisha Dee 汉娜·巴洛 Hannah Barlow 瑞安·帕尼萨 Ryan Panizza 肖恩·马丁代尔 Shaun Martindale Darcie Irwin-Simpson Darcie Irwin-Simpson
简介十几岁的好朋友塞西莉亚和艾玛在十年后相遇。塞西莉亚受邀参加艾玛的单身周末,在那里她和她的高中欺凌者一起被困在一个偏远的小屋里,并产生了复仇的欲望。
下载链接:茜茜.中字.Sissy ...
版本控制软件GIT的使用
版本控制软件GIT的使用git下载
苹果和linux系统自带git windows用户下载地址
git配置
配置电子邮件
1git config --global user.email "l119520@ooutlook.com"
配置用户名
1git config --global user.name "gaolengjun"
配置编辑器
1git config --global core.editor vim
配置合并工具
1git config --global merge.tool vimdiff
查看配置
1git config --list
查询帮助
语法:git help 命令
1git help add
该命令自动打开该参数浏览器详情页面
创建仓库
初始化
1git init
在当前操作文件夹里生成**.git**文件夹
查看仓库状态
1git status
添加文件到索引区
在仓库目录里直接创建文件,git无法感知,需要执行下面命令让git追踪添加的文件,可以使用git status查看状态
第二个使用. ...
Python爬虫必知必会的三大网页解析库
掌握这三大网页解析库,基本可以解决100%网页提取问题xpath
最方便最快捷的解析方式
解析网页xpath是首选,它易读,方便书写,使用起来非常简单。使用谷歌或edge浏览器可以打开元素,直接书写xpth,所见即所得。
书写xpath语法,所选节点会在html中实时高亮显示。
xpath语法理解起来也很简单,“/”表示选择直接子节点,例如:/div/p,p是div下的直接子节点;“//”表示选择非直接子节点,例如:/div//p,p和div之间还有其它节点。
使用“/”选择可以联想到电脑里的资源管理器的资源路径,一个意思,“//”在xpath选择中最常用,“/”逐级选择,使用“//”跳选。
//div[@class=”list”]//a//p,中括号里的写法是指定该div的class属性,进一步限定选择。最后的p标签才是我们选择的对象,如果你要选择p标签的文本,那么后面还 ...
node.js分号问题
node.js分号问题js是可以省略分号的,但要注意以下几种情况
123456789101112131415function say() { console.log('hello world')}say();(function () { console.log('hell')})();['苹果','香蕉'].forEach(function (item) { console.log(item)});`hello`.toString()
以:
()
[]
``
开头会报错,需要在这些符号前添加分号(;),或者添加“!”和“~”,一般建议添加分号。
获取文件状态信息
获取文件状态信息异步操作
1234567891011const fs = require('fs');const path = require('path');fs.stat(path.join(__dirname,'file.txt'),function (err,stat) { if (err) { console.log(err); } else { console.log(stat); //获取文件信息 console.log(stat.isDirectory()); //判断是不是目录 console.log(stat.isFile()); //判断是不是文件 }});
使用箭头函数
123456789fs.stat(path.join(__dirname,'file.txt'),(err,stat) => { if (err) ...
Buffer对象
Buffer对象12let buf = Buffer.from('鸡你太美');console.log(buf);
输出结果:<Buffer e9 b8 a1 e4 bd a0 e5 a4 aa e7 be 8e>
返回的是十六进制数,一个中文字符占三位
12let buf2 = Buffer.alloc(10);console.log(buf2)
输出结果:<Buffer 00 00 00 00 00 00 00 00 00 00>
传入的是长度,返回的是零值
创建数组12var arr = new Array('1','2','3');console.log(arr)
输出结果:[ ‘1’, ‘2’, ‘3’ ]
12var arr1 = new Array(10);console.log(arr1)
输出结果:[ <10 empty items> ]
这里为10个空值
Buffer类方法查询个数123456let buf = Buffer.from( ...
path模块
常用path方法12345678910111213const path = require('path');console.log(path.sep) //获取操作系统的路径分隔符console.log(path.delimiter) //获取操作系统的环境变量分隔符console.log(path.basename(__filename)) //获取当前文件名,包含扩展名console.log(path.basename(__filename,'.js')) //获取当前文件名,不包含扩展名console.log(path.dirname(__filename)) //获取当前路径console.log(__dirname) //获取当前路径console.log(__filename) //获取当前文件的绝对路径console.log(path.extname(__filename)) //获取当前文件扩展名console.log(path.parse(__filename)) //将文件路 ...
全局对象和定时器
全局对象123global.a = 1;console.log(global.a);console.log(a);
使用global关键字声明全局变量
跟踪程序执行流程12global.console.log(2,1,2,3);console.trace();
使用trace查看程序源码调用
获取执行文件目录和文件名12console.log(__filename);console.log(__dirname);
__filename:查看执行文件名
__dirname:获取执行文件所在目录
定时器123setTimeout(function () { console.log('这个炸弹爆了!')},1000);
清除定时器1234let timer = setTimeout(function () { console.log('这个炸弹爆了!')},1000);clearTimeout(timer);
不会执行。定时器不会立即执行,而是等待1秒后执行,程序不会等待1秒执行会继续往下执 ...