电报频道微信公众号

使腾讯404公益页面支持HTTPS

更新:

经评论提醒,我才发现腾讯的 404 公益页面的数据源和页面样式已经有所更新。对于我们希望使其支持 HTTPS 的使用者而言,要做的也再不仅仅是简单的替换。

替换 URL

除了需要把原来的 qzonestyle.gtimg.cn/qzone_v6/lostchild 替换为 qzone.qq.com/gy/404 外,还需要将 page.js 中的众多 HTTP 开头的 URL 修改为 HTTPS。

简单的替换之后,我们会发现从 data.js 中获取的图片地址仍然是一个 HTTP 链接,此时需要修改用来格式化数据的 resolveData(d) 函数,在 for 循环中添加:

1
d.data[i].child_pic = d.data[i].child_pic.replace(/^http/, "https");

设置返回按钮

此外,我们可以在官网的说明页面中看到公益 404 更新之后提供了例如「返回首页」这样的实用功能,分析一下 page.js 的代码,不难发现其实现方法是遍历了所有 script 标签然后获取指定标签上的指定属性值,因此我们只要将 homePageUrl 和 homePageName 属性添加到我们自己指定的 data.js 的 script 标签(原代码中指定的是 search_children.js 的 script 标签)上即可。

问题

在 page.js 的原代码中,我看到了一个访问 http://boss.qzone.qq.com/fcg-bin/fcg_zone_info 的请求,获取的数据似乎是访问者的某些信息,目前未发现这些数据对 404 页面有何影响,另一方面该网站也不支持 HTTPS 访问,因此本文选择将这个请求注释掉。

关于Hexo与其主题NexT的若干小问题与解决

Hexo

修改默认文章及草稿模板

默认情况下,我们使用 hexo new draft xxx 或 hexo new post xxx 创建的 md 文件中只有 title 、date 两个信息,常用的 tags 和 categories 等是没有的,只能在每个文件中手动添加,很是麻烦。要解决这个问题,只需要打开 Hexo 目录下的 \scaffolds\post.md 和 \scaffolds\post.md ,将内容修改为:

1
2
3
4
5
6
title: {{ title }}
date: {{ date }}
updated: {{ date }}
tags:
categories:
keywords:

这里除了 tags 和 categories 还添加了 updated (更新时间)和 keywords (关键字,用于自定义 SEO 关键字,留空的话则会使用 Hexo 默认设置)。

为Git设置SSH公钥及私钥

在使用 Git 进行代码管理时,如果我们不使用 SSH 公钥及密钥,那么我们就必须在每次执行 Git 命令后键入密码来验明正身,所以为 Git 配置 SSH 公钥及密钥是很有必要的。下文对 Windows 及 Linux 系统,自建 Git 及 Github 均适用。

配置公钥

首先通过 ssh-keygen -t rsa -b 4096 -C "name@example.com" 或者 XShell 的相应功能来生成一对密钥和公钥。随后我们得到了一个 id_rsa 和 id_rsa.pub (名称来源于你的定义,本文统一视作 id_rsa),其中 id_rsa 为私钥,id_rsa.pub 为公钥,我们需要把这个公钥的内容上传到服务器对应 Git 用户的 .ssh/authorized_keys 目录中,并在 SSH 的配置文件中允许通过公钥登陆。对于 Github 来说则是上传到 Github 中的公钥设置页面中。如果遇到提示未在远程服务器注册的问题,请执行 chmod 600 authorized_keys 。至此公钥配置完毕。

在Windows上搭建Git服务器

由于最近要在一个仅装有 Windows 的无外网环境下写一个小项目,无法连接我自己建在远程服务器上的 Git Server,所以在 Windows 下临时简单搭建一个 Git 服务器来做版本控制。

给 Windows 安装 SSH 服务器

由于 Windows 本身并没有 SSH 相关的组件,所以我们需要先进行 SSH 服务器的安装。与 Linux 下的 OpenSSH 不同,Windows 下并没有一个得到广泛认同的 SSH 软件,各种工具五花八门,本文使用Bitvise SSH Server ,该工具对非商业用途免费,虽然免费版限制一些功能的使用,但对我来说足够使用。但如果是超过10个人以上的或者商用的团队则应该购买商业授权或者使用其他同类软件。在官网下载后一路 Next 安装即可。

旧版SEP在Windows XP下的漏洞

低版本的 SEP(Symantec endpoint protection) 在 Windows XP 系统下存在一个漏洞(其他版本 windows 尚未验证),即修改注册表某一键的值后,即可在不输入密码的情况下关闭该软件的相关保护功能。

分析

首先创建一个 test.reg 文件,用于修改注册表,内容如下。

使用 Shell Script 将程序添加到 Linux Service 并设置为开机启动

创建一个简单的测试脚本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#! /bin/bash

date|tee -a /program_log

case "$1" in
    start)
        echo "start" >> /program_log
        ;;
    stop)
        echo "stop" >> /program_log
        ;;
    *)
        echo "Wrong command" >> /program_log
esac

保存到 /program 然后 chmod +x /program ,并在根目录创建 program_log。这个程序会将当前时间追加到 /program_log 中,同时输出执行程序时输入的命令参数。执行 /program start 后可以看到 /program_log 中出现了时间和命令参数。

判断 Linux 发行版版本

关于这个问题,有许多解决方案,首先可以使用

1
cat /etc/issue

结果类似于这样:

1
2
CentOS release 6.6 (Final)
Kernel \r on an \m

然而我在 CentOS 7 中使用时只显示

以自定义参数自动编译安装或升级Nginx脚本

前言

之前偷懒直接在 VPS 上改了 repo 参数后用yum安装与更新 nginx,导致后期希望添加自选模块时遇到了困难。虽然可以采用 为 yum 安装的 Nginx 添加模块 这里的方法为 yum 或者 apt 等方法成功安装的 Nginx 添加新的模块,但是在 yum 自动更新 nginx 后,又会回到二进制 nginx 安装包的默认编译参数,丢失之前新添加的模块选项。综上所述,目前只能通过再次编译安装的方式来升级 nginx 才能保证能正常使用自选模块。以下脚本将自动化该操作。

兼容性

在 CentOS 7.2 、Ubuntu 14.04 、Ubuntu 16.04 中测试正常。

配置

git clone https://github.com/MrEasonYang/shell-boy 后,cd 到 auto-nginx 目录中,执行chmod +x auto-nginx即可完成初始化。随后在配置文件 config 中按需自行配置。配置文件以英文分号 ; 分隔,每个选项和值之间用无空格英文冒号分隔 。

配置选项包括: