Home

Awesome

北门清燕的博客 - hexo版

<p> <img alt="bmqy.net" src="https://image.bmqy.net/wp-content/uploads/2018/09/logo-1.png" width="150" height="150" style="margin-bottom: 10px;"> </p>

hexo.bmqy.net theme-next version Required Hexo version GitHub stars GitHub forks

<!--START_SECTION:bmqy-->

博客目录(2024-11-14 08:56:10更新)

ios17.0可以安装Trollstore了

windows服务器安装mysql踩坑指北

为哪吒面板增加视频背景

继续折腾astro

serv00部署FreshRSS

【原创】油猴脚本:哪吒VPS橱窗后台脚本

哪吒面板终极进化之VPS橱窗

哪吒面板default主题小鸡底部增加购买同款按钮

Typecho二开魔改简单指北

【原创】油猴脚本:论坛快捷回帖

简单米表:Typecho-Simple-Mibiao

Windows 11 23H2更新遇到下载错误解决方法

Microsoft 365 E5开发者订阅管理员双重认证丢失解决方法

Virtualbox安装Ubuntu不完全指北

一剑开天门

将chrome谷歌浏览器轻松打造成rss阅读器

地震云

罗刹海市

关于笑果我觉得还是罗翔老师说的好

推荐正在玩的游戏:SimpleMMO,附游戏助手SMMOHelper

集成Elog使用notion数据库

【原创】ios捷径:法定工作日打卡提醒

测试AI

再次折腾hexo

docker部署freshrss

apifox自动导入apidoc接口数据

node项目部署到ftp

vite项目使用tinymce插件axupimgs实现多图片上传

tomcat服务器上utf8编码的文件乱码解决方法

快捷指令:图床

七牛上传视频获取视频封面和缩略图

注销网站得慎重

【原创】ios捷径:捷径库

【原创】ios捷径:自动壁纸

【原创】ios捷径:倒班闹钟

idea找回执行git pull操作后,被覆盖的本地未提交的代码

altserver跳坑指北

吐一吐三丰云免费服务器

Microsoft Store中的应用软件如何备份数据

卖盘

利用frp实现微软远程桌面管理内网电脑之不完全指北

apicloud用tortoisesvn管理代码,实现按不同分支编译打包app

vscode插件提示:command 'extension.updateSettings' not found解决方法

apicloud使用alipayplus支付宝支付模块注意事项

【原创】越狱插件安装注意事项

api.closeFrameGroup的一些注意事项

【原创】ios捷径:我的心愿单

【原创】ios捷径:一键获取urlscheme

【原创】ios捷径:一键签到

【原创】ios捷径:qq群一键签到

【原创】ios捷径:百度搜索风云榜2.1.0

【原创】ios捷径:一键天气预报

【原创】ios捷径:微博热搜榜2.0强势更新

ios捷径:bmqy捷径库

自定义IntelliJ IDEA配置和插件的存放目录,以方便同步idea配置

wordpress平台next主题

vscode本地调试asp

ajaxFileUpload上传成功也执行error方法

更换回wordpress。。。

一键收取熊猫守护者威力值

vscode软件窗口标题栏显示文件完整路径

微信小程序“支付签名验证失败”问题的解决参考

“idea已连接上ftp但看不到文件”的解决办法

js格式化时间显示

js实现中文转换成拼音

h5移动端ios输入法软键盘导致fixed布局bug的解决方案

生命不息,折腾不止之“hexo”

echarts中tooltips自定义数据结构与样式

淘米辅助工具

聚名网辅助工具

仿站制作6

wordpress新添加页面显示评论

华为mate8(b584)root过程简要记录

asp解析json的方法

为子主题增加主题选项功能

自制chrome扩展:百度云分享链接一键登录

清燕的云集小店

Google play下载app状态栏进度显示异常的应对方法

吐槽百度翻译之离线翻译包

现在只有人民才是真正的为人民

吐槽腾讯大王卡

wordpress添加twentysixteen子主题

idea配置less自动编译

使用chrome浏览器调试移动端web页面

idea编译less并使用autoprefixer

sublime自动编译less2css插件,保存时提示系统找不到指定文件

吐一吐中信的升白金

Android手机下输入框获取焦点时, 输入法挡住输入框bug的解决方法

wordpress头像不显示解决方法

用子主题functions.php添加自定义功能后访问网站报错解决方法

ueditor百度编辑器添加自定义模板并设为默认

仿站制作5

读老树画画随感

VMware-workstation 12 安装 Mac OS X 10.10

做梦想

再咏咳

webstorm10配置less编译环境

数钱数到不愿醒,睡觉睡到腿抽筋儿

百度siteApp创建移动站后,提示“开发者模式出错”的解决方法

简单的jquery滑动门代码

瞎子和近视的区别

设为首页、添加收藏的javascript代码

一个坏人好事做的再多,也抵不上一件坏事毁的彻底

ie8使背景图片全屏显示的方法及问题

解决wordpress添加主题时列表中缩略图不显示的问题

仿站作品1

wordpress在指定分类下的文章内容后显示自定义推广信息

仿站制作2

仿站制作3

仿站制作4

dedecms使用ajax调用指定栏目文章列表

生活就是做一点坏事,之后就再多做好事

百度谷歌一键切换(bmqy修复版)

小米2、2S合并分区

wordpress重新安装出现“wordpress database error,can’t find file”错误

dedecms面包屑导航链接样式修改

使用“Standalone Sitemap Generator”工具生成sitemap.xml和sitemap.html网站地图

windows不能在本地计算机启动apache服务的解决方法

图片放入到indesign中后变亮、颜色都变浅的解决办法

为了解决小米手机内部存储空间不足问题,对手机进行重新分区

2015上天班第一天

京城2015年的第一场雪

诺不轻信人不负我,言不轻诺我不负人

wordpress使用twentyfifteen模板做子主题所遇问题的解决及记录

做梦也似大电影

dedecms增加新留言邮件提醒和后台留言管理模块

dedecms重新安装后,文件中链接地址多出“include”路径的解决方法

AspCms在子菜单栏目后面显示产品数量或新闻数量的解决办法

dedecms调用指定单一子栏目文章列表无内容的问题

如今这年头,宅在家里、不凑热闹也是一种自保地方式。

Active Server Pages 错误 ‘ASP 0107’解决办法

js获取鼠标当前所在页面位置

万网空间服务器上传网站后出现HTTP500.19错误

ueditor编辑器创建超链接时添加class样式

dedecms清空所有文章且以后新建文章id从1开始

dedecms更换html编辑器为ueditor

dedecms列表页调用文章内容

心无所倚

“上盈其志,下务其功。悠悠黄河,吾其济乎!”

myeclipse新拷贝到电脑后错误弹窗,无法打开的解决方法

其实我不是强迫症

到哪都有wifi的人

miui开启节省流量功能后数据流量不能使用的问题

治世之能臣,乱世之废柴

来四张凑数

感觉不错的水天一色

修身、立业、齐家、治国、平天下

人闯红灯不可怕,车闯红灯也不可怕

蓝蓝的天上白云飘

差一点儿就拍中了闪电

扬帆起航

这算一景儿三拍么

吐一吐360的开机优化

八月第二波蓝天白云来袭

白云依旧

八月第一张

早晨的雨,起早的景儿

雷鸣雨早

仰望天空

就止一张

早早地一轮红日

为了有所为而有所拍

又一波儿天空来袭

燕美清照之天上的海

警不能以警,察不能以察

面对着巴西被7:1,我只想大笑三声“哇哈哈哈!让你们再赌球!”

php-5.5.14+Apache-2.4.9+xDebug安装配置

再平和自然地表现,也掩盖不了内心地焦急

安卓手机低电量时自动关机

“Brackets-宋体”扩展

新版百度首页设置“新窗口打开搜索页”

blue memories quietly yesterday

什么是偶像,因为他像偶。

北门清燕

流浪哥

第一个浏览器扩展“取消关注主持人”发布成功

2014.6.7拍摄

<!--END_SECTION:bmqy-->

关于本项目

博客目录

博客目录部分的生成受https://github.com/zhaoolee/WordPressXMLRPCTools项目启发,特此感谢。

特此贴一下对项目的魔改https://github.com/bmqy/WordPressXMLRPCTools,再次感谢@zhaoolee

环境变量配置

Hexo配置

固定ID

固定ID推荐使用hexo-abbrlink2

npm install hexo-abbrlink2 --save
permalink: posts/:abbrlink/
abbrlink:
  start: 1000 # the first id, default 0

Next配置

创建标签云

默认无标签页,打开链接会404 创建标签页:

hexo new page tags
---
date: 2021-08-04 13:22:27
type: "tags"
---

创建分类页

默认无分类页,打开链接会404 创建分类页:

hexo new page categories
---
date: 2021-08-04 13:22:33
type: "categories"
---

自定义样式

hexo根目录下的source新增一个_data目录,在该目录下新建styles.styl,这个文件将存放我们自定义的样式,然后在_config.next.yml文件中custom_file_path选项里面将style那一行取消注释。

custom_file_path:
    #head: source/_data/head.njk
    #header: source/_data/header.njk
    #sidebar: source/_data/sidebar.njk
    #postMeta: source/_data/post-meta.njk
    #postBodyEnd: source/_data/post-body-end.njk
    #footer: source/_data/footer.njk
    #bodyEnd: source/_data/body-end.njk
    #variable: source/_data/variables.styl
    #mixin: source/_data/mixins.styl
    style: source/_data/styles.styl

添加备案号

footer:
    # Beian ICP and gongan information for Chinese users. See: https://beian.miit.gov.cn, http://www.beian.gov.cn
    beian:
        enable: true
        icp: xxxxxx

自动化部署

COS

npm install hexo-deployer-cos --save
deploy:
  type: cos
  secretId: yourSecretId
  secretKey: yourSecretKey
  bucket: yourBucket
  region: yourRegion

For projects that use pipelines, you may not want to expose COS properties in the project file, so we support getting them through environment variables.

COS_SECRET_ID=yourSecretId
COS_SECRET_KEY=yourSecretKey
COS_BUCKET=yourBucket
COS_REGION=yourRegion

Environment variables have lower priority than _config.xml configuration

FTPSync

npm install hexo-deployer-ftpsync --save
deploy:
  type: ftpsync
  host: <host>
  user: <user>
  pass: <password>
  remote: [remote]
  port: [port]
  ignore: [ignore]
  connections: [connections]
  verbose: [true|false]

文章更新时间设置:

updated_option

updated_option 控制了当 Front Matter 中没有指定 updated 时,updated 如何取值:

mtime: 使用文件的最后修改时间。这是从 Hexo 3.0.0 开始的默认行为。

date: 使用 date 作为 updated 的值。可被用于 Git 工作流之中,因为使用 Git 管理站点时,文件的最后修改日期常常会发生改变

empty: 直接删除 updated。使用这一选项可能会导致大部分主题和插件无法正常工作。 use_date_for_updated 选项已经被废弃,将会在下个重大版本发布时去除。请改为使用 updated_option: 'date'。

CDN缓存刷新

该方案参考自:https://segmentfault.com/a/1190000039707833

腾讯云官方给我们提供了一个解决方案,可以在COS存储桶的函数计算->CDN缓存刷新函数中配置一个函数,参考截图:

但这个方案存在一个问题,由于我们的静态网站有默认索引页面index.html,而官方提供的这个函数只会刷新对应的文件的URL,而不会刷新索引URL,例如http://www.bytelife.net/index.html这个文件,通常我们的请求是http://www.bytelife.net/,因此官方的方案针对于静态网站来说不算完美。

优化方案 可以通过简单修改官方的函数来解决这个问题,点击刚刚创建的CDN缓存刷新函数列表中的函数名称,将index.js文件内容替换为下面的代码,最后点击右上角的“部署”按钮即可:

/* eslint-disable no-param-reassign */
'use strict';

const TimeoutWatcher = require('./common/TimeoutWatcher');
const CosCdnRefreshTask = require('./common/CosCdnRefreshTask');
const { getParams, logger, getLogSummary } = require('./common/utils');

exports.main_handler = async (event, context) => {
  /**
   * set a timer to terminate the cdn refresh task, ensure log message is printed
   */
  let runningTask;
  const watcher = new TimeoutWatcher({
    timeLimit: context.time_limit_in_ms,
    trigger(error) {
      if (runningTask && runningTask.cancelTask) {
        runningTask.cancelTask(error);
      }
    },
    error: new Error('task is timeout'),
  });

  logger({
    title: 'param as follow: ',
    data: { event },
  });

  /**
   * parse param from event and process.env
   */
  const { secretId, secretKey, token, objects, triggerType, cdnHosts } =    getParams(event);

  logger({
    title: 'param is parsed success',
  });

  const taskResults = [];

  const task = new CosCdnRefreshTask({
    secretId,
    secretKey,
    token,
    objects,
    triggerType,
    cdnHosts,
  });

  if (watcher.isTimeout()) {
    // if current is timeout, trigger the cancel task in next tick
    process.nextTick(() => task.cancelTask(watcher.error));
  } else {
    runningTask = task;
  }

  const results = await task.runTask();
  results.forEach(item => {
    taskResults.push(item)
    // 如果以 /index.html 结尾,则增加目录首页/
    // 例如 https://www.xxxx.com/index.html, 则增加 https://www.xxxx.com/
    if(item.params.urls[0].lastIndexOf('/index.html') == (item.params.urls[0].length - 11)){
      taskResults.push(item.substr(0, item.length - 10))
    }
  });

  watcher.clear();

  logger({
    title: 'cos cdn refresh full logs:',
    data: taskResults,
  });

  const { status, messages } = getLogSummary({
    name: 'cos cdn refresh',
    results: taskResults,
  });

  logger({
    messages: messages.map(item => item.replace(/, /g, '\n')),
  });

  context.callbackWaitsForEmptyEventLoop = false;

  if (status === 'fail') {
    throw messages.join('; ');
  } else {
    return messages.join('; ');
  }
};

更多

更多说明详见:https://www.bmqy.net/2649.html