0%

偶尔搜文章的时候发现有个 blog 使用了像素风的字体,很不错,就想复制过来。
首先谷歌了一下汉字的像素风字体,发现了一款 Zpix 字体。个人使用免费,准备就使用这款了。
本方法主要参考了这两篇博客 [1][2]

Next 主题是提供了自定义的 style 的,首先在 hexo 的根目录的 source 文件夹下新建_data 文件夹。
把这段代码存为 styles.styl 文件。

1
2
3
4
5
6
7
8
@font-face{
font-family: Zpix;
src: url('../font/zpix/zpix.ttf');
}
code{
font-family: "Zpix" !important;
}


从Zpix项目中下载ttf文件,存在博客根目录的 font/zpix/ 文件夹下面。

最后把 Next 主题的配置文件的 font 段改成下述。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
font:
enable: true

# Uri of fonts host, e.g. https://fonts.googleapis.com (Default).
host:

# Font options:
# `external: true` will load this font family from `host` above.
# `family: Times New Roman`. Without any quotes.
# `size: x.x`. Use `em` as unit. Default: 1 (16px)

# Global font settings used for all elements inside <body>.
global:
external: true
family: Zpix
size:

# Font settings for site title (.site-title).
title:
external: true
family:
size:

# Font settings for headlines (<h1> to <h6>).
headings:
external: true
family:
size:

# Font settings for posts (.post-body).
posts:
external: true
family: Zpix

# Font settings for <code> and code blocks.
codes:
external: true
family: Zpix

最后执行以下代码:

1
2
hexo clean
hexo generate

今年是接受教学秘书的第三年了,教学秘书的工作不可谓不繁琐,从每个月的研究生入科教育到出科考核,从每年的研究生入学面试到毕业答辩,都够我忙碌一阵。还好现在这些事务我日臻熟练,稳如老狗。
今年也是我所在的单位进行博士招生改革的第一年,完成了从统一入学考试到导师自主考核制的转变。申请考核制的门槛并不高,基本上硕士可以毕业就能提出申请。目前这个制度大幅增加了导师招生的自主性。这种转变的趋势应该是会蔓延开来的。本人很不幸,见证了北大这种转变。
为什么说不幸呢,因为这种考核制度对于小院校的研究生毕业后想进入名校攻读博士的人很不友好。导师会倾向选择自己的硕士进行培养,一来对学生的特点已经有所拿捏,二来课题也有了延续性。
所以我劝诫考生在申请博士前自省一下:目前全日制博士在职业发展上毫无优势 — 硕士毕业和博士毕业后都是 5 年才能晋升职称。博士的生活虽不至于暗无天日,也只能说是人间极刑。如果申请者想通过提升学历逆天改命,那暂时只能实现一半:就是变得更命苦了。目前对于博士的补助十分不到位,只能维持个人的基本生存。在博士后几年甚至还需要家中补贴,加之博士课题的折磨,所以博士答辩通过当下的精神状态犹如范进中举,老泪纵横。

站点是最基本的 nginx 目录列表,已经按照疾病顺序分别列好。

搜索使用主题的自带的搜索功能,但是不能很强大。

如果有进一步的搜索需求可以使用 bing 的搜索功能。

在搜索栏中输入:

1
site:urology.wiki 关键词

即可完成全文搜索,当然如果能上谷歌效果也是一样的。

百度不行,亲测不行。

沉迷 FPS 不能自拔,但是目前最有 CS1.5/1.6 味道的游戏就是 CS 起源了。

奈何电脑太强,基本就是见面死,就开个服务器大家一起玩耍。

这里记录一下搭建过程。使用的是腾讯云,真香,1C2G6M 一年 99。

首先安装交叉编译的 glibc

1
2
3
yum install glibc.i686

yum install libgcc_s.so.1

然后就是把之前的服务器文档传到一样的目录就好啦。

家中群晖开 docker 跑了个 AdGuard Home。结合反广告规则确实能搞定不少事情。

最大的感受就是开屏广告和微信朋友圈广告都没了。

但是又想将 DNS 请求分流了,解决 DNS 污染的问题。

在 GITHUB 上找到了这个 gfwlist2adguardhome 这个项目,测试成功。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/bin/bash

# Desc: convert gfwlist.txt into dnsmasq.conf
# Dependency: base64, curl(https support), perl5 v5.10.0+
# Usage: bash gfwlist2dnsmasq [-s <addr>] [-p <port>] [-n <name>] [-l]
# -s <addr> dns server addr for resolve gfwlist domain. (default: 127.0.0.1)
# -p <port> dns server port for resolve gfwlist domain. (default: 60053)
# -n <name> which ipset will be saved the IP. (resolved from gfwlist domain)
# if this option is not set, the ipset rule will not be generated.
# -l generate gfwlist domain list instead of dnsmasq conf.
# if this option is set, other options will be ignored.
# -h show this help and exit.

# check dependency
command -v curl &>/dev/null || { echo "curl is not installed in this system" 1>&2; exit 1; }
command -v perl &>/dev/null || { echo "perl is not installed in this system" 1>&2; exit 1; }
command -v base64 &>/dev/null || { echo "base64 is not installed in this system" 1>&2; exit 1; }

# parse command line
while getopts ":s:p:n:lh" OPT; do
case $OPT in
s) dns_addr="$OPTARG";;
n) set_name="$OPTARG";;
l) dom_list="true";;
h) cat << EOF
Usage: bash gfwlist2dnsmasq [-s <addr>] [-p <port>] [-n <name>] [-l]
-s <addr> dns server addr for resolve gfwlist domain. (default: 127.0.0.1)
-h show this help and exit.
EOF
exit;;
:) echo "Missing argument to '-$OPTARG'" 1>&2; exit 1;;
\?) echo "Unknown option '-$OPTARG'" 1>&2;;
esac
done

# temporary file
test -z "$dom_list" && temporary_file=$(mktemp) || temporary_file='domain_list.txt'

# convert gfwlist.txt
base64 -d </dev/null &>/dev/null && base64='base64 -d'
base64 --decode </dev/null &>/dev/null && base64='base64 --decode'
[ "$base64" ] || { echo "[ERR] Command not found: 'base64'" 1>&2; exit 1; }
curl -4sSkL https://raw.github.com/gfwlist/gfwlist/master/gfwlist.txt | $base64 | { perl -pe '
if (/URL Keywords/i) { $null = <> until $null =~ /^!/ }
s#^\s*+$|^!.*+$|^@@.*+$|^\[AutoProxy.*+$|^/.*/$##i;
s@^\|\|?|\|$@@;
s@^https?:/?/?@@i;
s@(?:/|%).*+$@@;
s@\*[^.*]++$@\n@;
s@^.*?\*[^.]*+(?=[^*]+$)@@;
s@^\*?\.|^.*\.\*?$@@;
s@(?=[^0-9a-zA-Z.-]).*+$@@;
s@^\d+\.\d+\.\d+\.\d+(?::\d+)?$@@;
s@^\s*+$@@'
echo 'twimg.edgesuite.net'
echo -e 'blogspot.ae\nblogspot.al\nblogspot.am\nblogspot.ba\nblogspot.be\nblogspot.bg\nblogspot.bj\nblogspot.ca\nblogspot.cat\nblogspot.cf\nblogspot.ch\nblogspot.cl\nblogspot.co.at\nblogspot.co.id\nblogspot.co.il\nblogspot.co.ke\nblogspot.com\nblogspot.com.ar\nblogspot.com.au\nblogspot.com.br\nblogspot.com.by\nblogspot.com.co\nblogspot.com.cy\nblogspot.com.ee\nblogspot.com.eg\nblogspot.com.es\nblogspot.com.mt\nblogspot.com.ng\nblogspot.com.tr\nblogspot.com.uy\nblogspot.co.nz\nblogspot.co.uk\nblogspot.co.za\nblogspot.cv\nblogspot.cz\nblogspot.de\nblogspot.dk\nblogspot.fi\nblogspot.fr\nblogspot.gr\nblogspot.hk\nblogspot.hr\nblogspot.hu\nblogspot.ie\nblogspot.in\nblogspot.is\nblogspot.it\nblogspot.jp\nblogspot.kr\nblogspot.li\nblogspot.lt\nblogspot.lu\nblogspot.md\nblogspot.mk\nblogspot.mr\nblogspot.mx\nblogspot.my\nblogspot.nl\nblogspot.no\nblogspot.pe\nblogspot.pt\nblogspot.qa\nblogspot.re\nblogspot.ro\nblogspot.rs\nblogspot.ru\nblogspot.se\nblogspot.sg\nblogspot.si\nblogspot.sk\nblogspot.sn\nblogspot.td\nblogspot.tw\nblogspot.ug\nblogspot.vn'
echo -e 'google.ac\ngoogle.ad\ngoogle.ae\ngoogle.al\ngoogle.am\ngoogle.as\ngoogle.at\ngoogle.az\ngoogle.ba\ngoogle.be\ngoogle.bf\ngoogle.bg\ngoogle.bi\ngoogle.bj\ngoogle.bs\ngoogle.bt\ngoogle.by\ngoogle.ca\ngoogle.cat\ngoogle.cc\ngoogle.cd\ngoogle.cf\ngoogle.cg\ngoogle.ch\ngoogle.ci\ngoogle.cl\ngoogle.cm\ngoogle.cn\ngoogle.co.ao\ngoogle.co.bw\ngoogle.co.ck\ngoogle.co.cr\ngoogle.co.id\ngoogle.co.il\ngoogle.co.in\ngoogle.co.jp\ngoogle.co.ke\ngoogle.co.kr\ngoogle.co.ls\ngoogle.com\ngoogle.co.ma\ngoogle.com.af\ngoogle.com.ag\ngoogle.com.ai\ngoogle.com.ar\ngoogle.com.au\ngoogle.com.bd\ngoogle.com.bh\ngoogle.com.bn\ngoogle.com.bo\ngoogle.com.br\ngoogle.com.bz\ngoogle.com.co\ngoogle.com.cu\ngoogle.com.cy\ngoogle.com.do\ngoogle.com.ec\ngoogle.com.eg\ngoogle.com.et\ngoogle.com.fj\ngoogle.com.gh\ngoogle.com.gi\ngoogle.com.gt\ngoogle.com.hk\ngoogle.com.jm\ngoogle.com.kh\ngoogle.com.kw\ngoogle.com.lb\ngoogle.com.lc\ngoogle.com.ly\ngoogle.com.mm\ngoogle.com.mt\ngoogle.com.mx\ngoogle.com.my\ngoogle.com.na\ngoogle.com.nf\ngoogle.com.ng\ngoogle.com.ni\ngoogle.com.np\ngoogle.com.om\ngoogle.com.pa\ngoogle.com.pe\ngoogle.com.pg\ngoogle.com.ph\ngoogle.com.pk\ngoogle.com.pr\ngoogle.com.py\ngoogle.com.qa\ngoogle.com.sa\ngoogle.com.sb\ngoogle.com.sg\ngoogle.com.sl\ngoogle.com.sv\ngoogle.com.tj\ngoogle.com.tr\ngoogle.com.tw\ngoogle.com.ua\ngoogle.com.uy\ngoogle.com.vc\ngoogle.com.vn\ngoogle.co.mz\ngoogle.co.nz\ngoogle.co.th\ngoogle.co.tz\ngoogle.co.ug\ngoogle.co.uk\ngoogle.co.uz\ngoogle.co.ve\ngoogle.co.vi\ngoogle.co.za\ngoogle.co.zm\ngoogle.co.zw\ngoogle.cv\ngoogle.cz\ngoogle.de\ngoogle.dj\ngoogle.dk\ngoogle.dm\ngoogle.dz\ngoogle.ee\ngoogle.es\ngoogle.fi\ngoogle.fm\ngoogle.fr\ngoogle.ga\ngoogle.ge\ngoogle.gf\ngoogle.gg\ngoogle.gl\ngoogle.gm\ngoogle.gp\ngoogle.gr\ngoogle.gy\ngoogle.hn\ngoogle.hr\ngoogle.ht\ngoogle.hu\ngoogle.ie\ngoogle.im\ngoogle.io\ngoogle.iq\ngoogle.is\ngoogle.it\ngoogle.je\ngoogle.jo\ngoogle.kg\ngoogle.ki\ngoogle.kz\ngoogle.la\ngoogle.li\ngoogle.lk\ngoogle.lt\ngoogle.lu\ngoogle.lv\ngoogle.md\ngoogle.me\ngoogle.mg\ngoogle.mk\ngoogle.ml\ngoogle.mn\ngoogle.ms\ngoogle.mu\ngoogle.mv\ngoogle.mw\ngoogle.ne\ngoogle.net\ngoogle.nl\ngoogle.no\ngoogle.nr\ngoogle.nu\ngoogle.org\ngoogle.pl\ngoogle.pn\ngoogle.ps\ngoogle.pt\ngoogle.ro\ngoogle.rs\ngoogle.ru\ngoogle.rw\ngoogle.sc\ngoogle.se\ngoogle.sh\ngoogle.si\ngoogle.sk\ngoogle.sm\ngoogle.sn\ngoogle.so\ngoogle.sr\ngoogle.st\ngoogle.td\ngoogle.tg\ngoogle.tk\ngoogle.tl\ngoogle.tm\ngoogle.tn\ngoogle.to\ngoogle.tt\ngoogle.vg\ngoogle.vu\ngoogle.ws'; } | sort | uniq -i >${temporary_file}

# generated file type
echo "type: domain_lists file: ${temporary_file}"
test -z "$dns_addr" && dns_addr='127.0.0.1:5533'
#echo "# Generated by gfwlist2adguardhome at $(date '+%F %T')" >adguardhome_gfwlist.txt
perl -pe "s@^.*+\$@[/$&/]$dns_addr@" ${temporary_file} >>adguardhome_gfwlist.txt
rm -fr ${temporary_file}
echo "type: adguardhome_server file: adguardhome_gfwlist.txt"

使用方法

1
./gfwlist2adguardhome.sh -s https://urology.wiki/dns-query

然后将得到的文件复制进 adguard home 的 DNS 配置中。再加上一个本地 DNS 就可以了。

网站运行了也两三年了,使用的是淘宝开源的 Tengine,这名字乍一看像是腾讯的作品。

使用的是 Centos7,就自己编译了。把编译参数记一下,使用到的模块大致谷歌一下也能找到最新的。

最近又折腾了一下最新的 Tengine, 想配置个 http3,但是失败了。

只能顺手更新一下模块了。

记录一下最新的更新过程。

  1. 更新系统,安装源
1
sudo yum group install "Development Tools"
  1. 安装 cmake gcc10 perl。

本来打算从源码安装的,奈何单核机器编译一晚也没成功。

1
2
yum install cmake3
yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++ devtoolset-10-make
  1. 重要模块记录
  • 使用 nginx-ct
1
2
wget -O nginx-ct.zip -c https://github.com/grahamedgecombe/nginx-ct/archive/v1.3.2.zip
unzip nginx-ct.zip
  • 获取中间证书
1
2
3
4
5
6
7
8
wget https://github.com/grahamedgecombe/ct-submit/archive/v1.1.2.zip
unzip v1.1.2.zip
cd ct-submit-1.1.2
go build wget https://github.com/grahamedgecombe/ct-submit/archive/v1.1.2.zip
unzip v1.1.2.zip
cd ct-submit-1.1.2
go build
./ct-submit-1.1.2 ct1.digicert-ct.com/log </usr/local/nginx/conf/cert.pem >/usr/local/nginx/conf/digicert.sct
  1. 最终编译参数
1
./configure --prefix=/usr/local/nginx --user=www --group=www --with-stream  --with-file-aio --with-threads --with-ipv6 --with-pcre=/usr/local/src/pcre  --with-openssl=../open-3.00 --with-jemalloc=../jemalloc --with-zlib=/usr/local/src/zlib --with-http_gzip_static_module --with-http_realip_module --with-http_stub_status_module --with-http_v2_module --add-module=../ngx_brotli --add-module=../ngx-fancyindex  --add-module=../pagespeed-ngx --add-module=../nginx-module-sysguard  --add-module=../nginx-ct-1.3.2