aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.buildinfo2
-rw-r--r--.lastmodify2
-rw-r--r--_posts/2018/01/new-blog.html286
-rw-r--r--_sources/_posts/2018/01/new-blog.rst.txt72
-rw-r--r--_sources/index.rst.txt176
-rw-r--r--genindex.html87
-rw-r--r--index.html665
-rw-r--r--objects.invbin0 -> 283 bytes
-rw-r--r--rss.xml81
-rw-r--r--search.html110
-rw-r--r--searchindex.js1
11 files changed, 1084 insertions, 398 deletions
diff --git a/.buildinfo b/.buildinfo
index 8c23fd9..7b29271 100644
--- a/.buildinfo
+++ b/.buildinfo
@@ -1,4 +1,4 @@
1# Sphinx build info version 1 1# Sphinx build info version 1
2# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. 2# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
3config: 6b4e17df76ce984ad25f342e5f8a3c1c 3config: 783e580f9b70eb75eff740093d3d8eee
4tags: 645f666f9bcd5a90fca523b33c5a78b7 4tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/.lastmodify b/.lastmodify
index 3a2bb8c..18fd7c9 100644
--- a/.lastmodify
+++ b/.lastmodify
@@ -1 +1 @@
Sat Feb 8 14:19:54 UTC 2020 Tue Jun 16 08:36:31 UTC 2020
diff --git a/_posts/2018/01/new-blog.html b/_posts/2018/01/new-blog.html
new file mode 100644
index 0000000..302f4b5
--- /dev/null
+++ b/_posts/2018/01/new-blog.html
@@ -0,0 +1,286 @@
1<!DOCTYPE html>
2<html lang="zh-Hans-CN" xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
5 <title>
6 又一个新的博客 — Hello World
7 </title>
8 <link href="../../../_static/alagitpull.css" rel="stylesheet" type="text/css"/>
9 <link href="../../../_static/pygments.css" rel="stylesheet" type="text/css"/>
10 <link href="../../../_static/flexboxgrid.min.css" rel="stylesheet" type="text/css"/>
11 <link href="../../../_static/git-pull.css" rel="stylesheet" type="text/css"/>
12 <link href="../../../_static/han.min.css" rel="stylesheet" type="text/css"/>
13 <script type="text/javascript">
14 var DOCUMENTATION_OPTIONS = { URL_ROOT: '../../../', VERSION: '0.0', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true, SOURCELINK_SUFFIX: '.txt' };
15 </script>
16 <script src="../../../_static/jquery.js" type="text/javascript">
17 </script>
18 <script src="../../../_static/underscore.js" type="text/javascript">
19 </script>
20 <script src="../../../_static/doctools.js" type="text/javascript">
21 </script>
22 <link href="../../../_static/favicon.ico" rel="shortcut icon"/>
23 <link href="../../../genindex.html" rel="index" title="Index"/>
24 <link href="../../../search.html" rel="search" title="Search"/>
25 <link href="../../../_static/custom.css" rel="stylesheet" type="text/css"/>
26 <meta content="width=device-width, initial-scale=0.9, maximum-scale=0.9" name="viewport"/>
27 </head>
28 <body>
29 <div class="document">
30 <div class="documentwrapper">
31 <div class="body" role="main">
32 <div class="section" id="newblog">
33 <span id="id1">
34 </span>
35 <h1>
36 又一个新的博客
37 <a class="headerlink" href="#newblog" title="Permalink to this headline">
38
39 </a>
40 </h1>
41 <table class="docutils field-list" frame="void" rules="none">
42 <colgroup>
43 <col class="field-name"/>
44 <col class="field-body"/>
45 </colgroup>
46 <tbody valign="top">
47 <tr class="field-odd field">
48 <th class="field-name">
49 Publish Date:
50 </th>
51 <td class="field-body">
52 2018-01-15
53 </td>
54 </tr>
55 </tbody>
56 </table>
57 <p>
58 前段时间有朋友和我抱怨博客加载速度太慢了(。之前的博客架在Blogger上,为了让排版稍微美观一些,找了一个第三方的主题,加载了许多外部的资源,导致网页载入速度非常慢。虽然我自己对于网站在国内的加载速度毫不在意,但是既然还有读者(少的可怜)在看,以及在这极少的读者中有用户提出了这个问题,那就得解决。前段时间无意中看到一个博客(
59 <a class="reference external" href="https://www.git-pull.com/index.html">
60 git-pull
61 </a>
62 ),觉得主题简洁而又美观,于是开始着手改造自己的博客。
63 </p>
64 <p>
65 这次用了「大名鼎鼎」的
66 <a class="reference external" href="http://www.sphinx-doc.org/en/stable/">
67 Sphinx
68 </a>
69 ,一个软件开发过程中的文档生成工具来作为博客的静态网页生成引擎。上手Sphinx非常简单,sphinx-quickstart这个工具和一般的博客生成器一样,集成了很多功能,把Makefile都写好了,可以说是完全开箱即用了。Sphinx的默认主题是
70 <a class="reference external" href="https://alabaster.readthedocs.io/en/latest/">
71 Alabaster
72 </a>
73 ,现在你看到的这个主题就是在Alabaster上修改而来的。
74 </p>
75 <p>
76 Sphinx的文档书写采用的是*.rst格式的文本,即
77 <a class="reference external" href="http://docutils.sourceforge.net/rst.html">
78 reStructuredText
79 </a>
80 ,而不是Markdown。相比之前,rst比Markdown的语法更加丰富/复杂,同时也提供了更加丰富的功能和可扩展性(虽然我估计我只能用到其中的20%甚至更少啦)。不清楚rst和Emacs社区的
81 <a class="reference external" href="https://orgmode.org/">
82 Org Mode
83 </a>
84 相比哪一个的语法更加复杂呢。(
85 </p>
86 <p>
87 建设博客离不开几件事情。首先当然就是部署运维啦。Sphinx通过Makefile可以生成静态html网页,托管静态html最方便的地方当然是GitHub Pages啦。最简单粗暴的方法是在本地的环境中写完rst文本,然后本地 make html 通过之后,将html推送到GitHub Pages中。但是这种方式的移植性不高,想写博客的话必须坐在自己的电脑前,同时依然存在一些手动的工作。所以当然选择Docker啦。但是这次用Docker的姿势和以往不同。平时我们用Docker的时候最终都是想要得到docker build的产物docker image,然后由image来进行部署。但是我们这次的目标是GitHub Pages,没法部署容器。所以我在Dockerfile中生成静态html网页,然后在构建的过程中将静态网页push到repo的gh-pages分支中。当然其实不用Docker也能做到这一点。写一个脚本,然后在CI平台上执行脚本也行,就不做优劣对比了。
88 </p>
89 <p>
90 值得一提的是,Docker在17.05-ce版本之后引入了multi stage build的功能,可以在Dockerfile中FROM多个基础镜像,在下一个stage可以直接使用之前stage构建出的产物。以我的博客这个项目为例。假如我是想通过image来部署,那么我最终的产物是静态html文件,那么我可能需要一个nginx的基础镜像。nginx:alpine 这个基础镜像很小,不到10MB,在Dockerfile里面将html文件COPY进去之后,最终得到的image也只有10MB左右的大小。但是之前我们为了得到静态html文件,可能得选用一个python的基础镜像,然后再apt/apk安装一些必要的编译工具,最终只是为了几百kb的html文件,但是构建的镜像已经上百MB了。有了multi stage build之后,这个问题便非常好地被解决了。看了下面的Dockerfile之后,整体思路就非常清晰了。目前我在本地写完rst文本,然后git push之后,CircleCI会自动进行Dockerfile的构建,然后将编译生成的静态html推送到gh-pages分支。
91 </p>
92 <embed/>
93 <script src="https://gist.github.com/clarkzjw/0cb4e15794a5a132b12df9741e0cc1e0.js">
94 </script>
95 <p>
96 另外一个问题是博客的RSS。由于Sphinx最初的设计是作为一个文档生成工具,目前市面上有的和Sphinx结合的RSS生成工具大致有:
97 </p>
98 <ul class="simple">
99 <li>
100 Sphinx-contrib模块中的
101 <a class="reference external" href="https://bitbucket.org/birkenfeld/sphinx-contrib/src/tip/feed/">
102 feed
103 </a>
104 </li>
105 <li>
106 在sphinxcontrib.feed基础上开发的
107 <a class="reference external" href="https://github.com/junkafarian/sphinxfeed">
108 sphinxfeed
109 </a>
110 </li>
111 <li>
112 以及更新一点的
113 <a class="reference external" href="https://pypi.python.org/pypi/sphinxcontrib-newsfeed">
114 sphinxcontrib-newsfeed
115 </a>
116 </li>
117 </ul>
118 <p>
119 其中sphinxcontrib.feed和sphinxfeed的功能性更新都停止在2011年,不兼容Python 3,GitHub上有几个fork,但是也基本没有太多的改进。至于sphinxcontrib-newsfeed,并不能生成符合RSS规范的输出。。。所以只好自己简单粗暴造一个轮子了!(至少生成的xml能被RSS阅读器认识。。。
120 </p>
121 <p>
122 RSS 订阅地址是
123 <a class="reference external" href="https://blog.jinwei.me/rss">
124 https://blog.jinwei.me/rss
125 </a>
126 </p>
127 <p>
128 至于评论嘛。虽然博客流量小,2017年下来一年也没有10条评论,但是作为一个博客,这个功能还是必须得有!考察了目前市面上的评论方案,Disqus现在差不多可以算是一家独大了。但是十分不喜欢Disqus。一个页面要加载的无关的数据太多了。然后看到了
129 <a class="reference external" href="https://github.com/posativ/isso">
130 Isso
131 </a>
132 , 第一印象还不错,但是需要自己单独部署。为了一年10条评论不到的数量级单独部署似乎成本略高。之前还见到了
133 <a class="reference external" href="https://staticman.net">
134 Staticman
135 </a>
136 , 但是这个方案和GitHub的issue绑定,一个博客实例对应GitHub的一个repo,然后每篇文章的评论对应这个repo中的issue。但是我不太能接受,毕竟不能强制每个评论的用户都有GitHub帐号。今天无意中看到了
137 <a class="reference external" href="https://just-comments.com/">
138 just-comments
139 </a>
140 , 也是一个SaaS解决方案,但是非常地极简,决定先用着试试效果。(
141 </p>
142 <p>
143 下一步,打算在博客中加入
144 <a class="reference external" href="https://css.hanzi.co/">
145 漢字標準格式
146 </a>
147 这套排版框架。毕竟现在的页面排版看起来怪怪的,以及并不美观。(
148 </p>
149 </div>
150 <div>
151 <br/>
152 <div style="text-align: center; margin: 25px auto 15px;">
153 <svg height="20" width="140" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
154 <linearGradient id="b" x2="0" y2="100%">
155 <stop offset="0" stop-color="#bbb" stop-opacity=".1">
156 </stop>
157 <stop offset="1" stop-opacity=".1">
158 </stop>
159 </linearGradient>
160 <clipPath id="a">
161 <rect fill="#fff" height="20" rx="3" width="140">
162 </rect>
163 </clipPath>
164 <g clip-path="url(#a)">
165 <path d="M0 0h75v20H0z" fill="#555">
166 </path>
167 <path d="M75 0h65v20H75z" fill="#e05d44">
168 </path>
169 <path d="M0 0h140v20H0z" fill="url(#b)">
170 </path>
171 </g>
172 <g fill="#fff" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110" text-anchor="middle">
173 <text fill="#010101" fill-opacity=".3" textLength="650" transform="scale(.1)" x="385" y="150">
174 Powered by
175 </text>
176 <text textLength="650" transform="scale(.1)" x="385" y="140">
177 Powered by
178 </text>
179 <text fill="#010101" fill-opacity=".3" textLength="550" transform="scale(.1)" x="1065" y="150">
180 Cloudflare
181 </text>
182 <text textLength="550" transform="scale(.1)" x="1065" y="140">
183 Cloudflare
184 </text>
185 </g>
186 </svg>
187 <svg height="20" width="112" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
188 <linearGradient id="b" x2="0" y2="100%">
189 <stop offset="0" stop-color="#bbb" stop-opacity=".1">
190 </stop>
191 <stop offset="1" stop-opacity=".1">
192 </stop>
193 </linearGradient>
194 <clipPath id="a">
195 <rect fill="#fff" height="20" rx="3" width="112">
196 </rect>
197 </clipPath>
198 <g clip-path="url(#a)">
199 <path d="M0 0h65v20H0z" fill="#555">
200 </path>
201 <path d="M65 0h47v20H65z" fill="#97ca00">
202 </path>
203 <path d="M0 0h112v20H0z" fill="url(#b)">
204 </path>
205 </g>
206 <g fill="#fff" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110" text-anchor="middle">
207 <text fill="#010101" fill-opacity=".3" textLength="550" transform="scale(.1)" x="335" y="150">
208 Hosted on
209 </text>
210 <text textLength="550" transform="scale(.1)" x="335" y="140">
211 Hosted on
212 </text>
213 <text fill="#010101" fill-opacity=".3" textLength="370" transform="scale(.1)" x="875" y="150">
214 GitHub
215 </text>
216 <text textLength="370" transform="scale(.1)" x="875" y="140">
217 GitHub
218 </text>
219 </g>
220 </svg>
221 <br/>
222 <svg height="20" width="78" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
223 <linearGradient id="b" x2="0" y2="100%">
224 <stop offset="0" stop-color="#bbb" stop-opacity=".1">
225 </stop>
226 <stop offset="1" stop-opacity=".1">
227 </stop>
228 </linearGradient>
229 <clipPath id="a">
230 <rect fill="#fff" height="20" rx="3" width="78">
231 </rect>
232 </clipPath>
233 <g clip-path="url(#a)">
234 <path d="M0 0h57v20H0z" fill="#555">
235 </path>
236 <path d="M57 0h21v20H57z" fill="#e05d44">
237 </path>
238 <path d="M0 0h78v20H0z" fill="url(#b)">
239 </path>
240 </g>
241 <g fill="#fff" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110" text-anchor="middle">
242 <text fill="#010101" fill-opacity=".3" textLength="470" transform="scale(.1)" x="295" y="150">
243 Made w/
244 </text>
245 <text textLength="470" transform="scale(.1)" x="295" y="140">
246 Made w/
247 </text>
248 <text fill="#010101" fill-opacity=".3" textLength="110" transform="scale(.1)" x="665" y="150">
249
250 </text>
251 <text textLength="110" transform="scale(.1)" x="665" y="140">
252
253 </text>
254 </g>
255 </svg>
256 </div>
257 </div>
258 </div>
259 </div>
260 <div aria-label="main navigation" class="sphinxsidebar" role="navigation">
261 <div class="sphinxsidebarwrapper">
262 <h1 class="logo">
263 <a href="../../../index.html">
264 </a>
265 </h1>
266 <div class="relations">
267 <h3>
268 Related Topics
269 </h3>
270 <ul>
271 <li>
272 <a href="../../../index.html">
273 Documentation overview
274 </a>
275 <ul>
276 </ul>
277 </li>
278 </ul>
279 </div>
280 </div>
281 </div>
282 <div class="clearer">
283 </div>
284 </div>
285 </body>
286</html> \ No newline at end of file
diff --git a/_sources/_posts/2018/01/new-blog.rst.txt b/_sources/_posts/2018/01/new-blog.rst.txt
new file mode 100644
index 0000000..a638797
--- /dev/null
+++ b/_sources/_posts/2018/01/new-blog.rst.txt
@@ -0,0 +1,72 @@
1:orphan:
2
3.. _2018newblog:
4
5又一个新的博客
6==============
7
8:Publish Date: 2018-01-15
9
10前段时间有朋友和我抱怨博客加载速度太慢了(。之前的博客架在Blogger上,为了让排版稍微美观一些,找了一个第三方的主题,加载了许多外部的
11资源,导致网页载入速度非常慢。虽然我自己对于网站在国内的加载速度毫不在意,但是既然还有读者(少的可怜)在看,以及在这极少的读者中有用
12户提出了这个问题,那就得解决。前段时间无意中看到一个博客( `git-pull`_ ),觉得主题简洁而又美观,于是开始
13着手改造自己的博客。
14
15.. _git-pull: https://www.git-pull.com/index.html
16
17这次用了「大名鼎鼎」的 `Sphinx`_ ,一个软件开发过程中的文档生成工具来作为博客的静态网页生成引擎。
18上手Sphinx非常简单,sphinx-quickstart这个工具和一般的博客生成器一样,集成了很多功能,把Makefile都写好了,可以说是完全开箱即用了。
19Sphinx的默认主题是 `Alabaster`_ ,现在你看到的这个主题就是在Alabaster上修改而来的。
20
21Sphinx的文档书写采用的是*.rst格式的文本,即 `reStructuredText`_ ,而不是Markdown。相比
22之前,rst比Markdown的语法更加丰富/复杂,同时也提供了更加丰富的功能和可扩展性(虽然我估计我只能用到其中的20%甚至更少啦)。不清楚rst和
23Emacs社区的 `Org Mode`_ 相比哪一个的语法更加复杂呢。(
24
25建设博客离不开几件事情。首先当然就是部署运维啦。Sphinx通过Makefile可以生成静态html网页,托管静态html最方便的地方当然是GitHub Pages啦。
26最简单粗暴的方法是在本地的环境中写完rst文本,然后本地 make html 通过之后,将html推送到GitHub Pages中。但是这种方式的移植性不高,想写
27博客的话必须坐在自己的电脑前,同时依然存在一些手动的工作。所以当然选择Docker啦。但是这次用Docker的姿势和以往不同。平时我们用Docker的时候
28最终都是想要得到docker build的产物docker image,然后由image来进行部署。但是我们这次的目标是GitHub Pages,没法部署容器。所以我在
29Dockerfile中生成静态html网页,然后在构建的过程中将静态网页push到repo的gh-pages分支中。当然其实不用Docker也能做到这一点。写一个脚本,
30然后在CI平台上执行脚本也行,就不做优劣对比了。
31
32值得一提的是,Docker在17.05-ce版本之后引入了multi stage build的功能,可以在Dockerfile中FROM多个基础镜像,在下一个stage可以直接使用
33之前stage构建出的产物。以我的博客这个项目为例。假如我是想通过image来部署,那么我最终的产物是静态html文件,那么我可能需要一个nginx的基础
34镜像。nginx:alpine 这个基础镜像很小,不到10MB,在Dockerfile里面将html文件COPY进去之后,最终得到的image也只有10MB左右的大小。但是
35之前我们为了得到静态html文件,可能得选用一个python的基础镜像,然后再apt/apk安装一些必要的编译工具,最终只是为了几百kb的html文件,但是
36构建的镜像已经上百MB了。有了multi stage build之后,这个问题便非常好地被解决了。看了下面的Dockerfile之后,整体思路就非常清晰了。目前我
37在本地写完rst文本,然后git push之后,CircleCI会自动进行Dockerfile的构建,然后将编译生成的静态html推送到gh-pages分支。
38
39.. raw:: html
40
41 <embed>
42 <script src="https://gist.github.com/clarkzjw/0cb4e15794a5a132b12df9741e0cc1e0.js"></script>
43 </embed>
44
45另外一个问题是博客的RSS。由于Sphinx最初的设计是作为一个文档生成工具,目前市面上有的和Sphinx结合的RSS生成工具大致有:
46
47- Sphinx-contrib模块中的 `feed <https://bitbucket.org/birkenfeld/sphinx-contrib/src/tip/feed/>`__
48
49- 在sphinxcontrib.feed基础上开发的 `sphinxfeed <https://github.com/junkafarian/sphinxfeed>`__
50
51- 以及更新一点的 `sphinxcontrib-newsfeed <https://pypi.python.org/pypi/sphinxcontrib-newsfeed>`__
52
53其中sphinxcontrib.feed和sphinxfeed的功能性更新都停止在2011年,不兼容Python 3,GitHub上有几个fork,但是也基本没有太多的改进。至于
54sphinxcontrib-newsfeed,并不能生成符合RSS规范的输出。。。所以只好自己简单粗暴造一个轮子了!(至少生成的xml能被RSS阅读器认识。。。
55
56RSS 订阅地址是 https://blog.jinwei.me/rss
57
58至于评论嘛。虽然博客流量小,2017年下来一年也没有10条评论,但是作为一个博客,这个功能还是必须得有!考察了目前市面上的评论方案,Disqus现在
59差不多可以算是一家独大了。但是十分不喜欢Disqus。一个页面要加载的无关的数据太多了。然后看到了 `Isso`_ , 第一印象还不错,但是需要自己单独部
60署。为了一年10条评论不到的数量级单独部署似乎成本略高。之前还见到了 `Staticman`_ , 但是这个方案和GitHub的issue绑定,一个博客实例对应
61GitHub的一个repo,然后每篇文章的评论对应这个repo中的issue。但是我不太能接受,毕竟不能强制每个评论的用户都有GitHub帐号。
62今天无意中看到了 `just-comments`_ , 也是一个SaaS解决方案,但是非常地极简,决定先用着试试效果。(
63
64下一步,打算在博客中加入 `漢字標準格式 <https://css.hanzi.co/>`_ 这套排版框架。毕竟现在的页面排版看起来怪怪的,以及并不美观。(
65
66.. _Org Mode: https://orgmode.org/
67.. _reStructuredText: http://docutils.sourceforge.net/rst.html
68.. _Alabaster: https://alabaster.readthedocs.io/en/latest/
69.. _Sphinx: http://www.sphinx-doc.org/en/stable/
70.. _Isso: https://github.com/posativ/isso
71.. _Staticman: https://staticman.net
72.. _just-comments: https://just-comments.com/
diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt
new file mode 100644
index 0000000..1957b53
--- /dev/null
+++ b/_sources/index.rst.txt
@@ -0,0 +1,176 @@
1.. blog.jinwei.me
2
3Hello World
4===========
5
6.. toctree::
7 :maxdepth: 2
8 :caption: Contents:
9
10Updates
11-------
12
13- **June 2020**
14
15 - `COVID-19防疫纪念邮票对比 <https://stamp.jinwei.me/2020/06/15/covid-19-stamp/>`__
16
17- **Jan 2020**
18
19 - `2019年度总结 <https://medium.com/@clarkzjw/2019%E5%B9%B4%E5%BA%A6%E6%80%BB%E7%BB%93-55eb4f242b26>`__
20
21- **June 2019**
22
23 - `2019半年度总结 <https://medium.com/@clarkzjw/2019%E5%8D%8A%E5%B9%B4%E5%BA%A6%E6%80%BB%E7%BB%93-ac59b681224>`__
24 - `在2019年安装Docker是怎样一种体验 <https://medium.com/@clarkzjw/%E5%9C%A82019%E5%B9%B4%E5%AE%89%E8%A3%85docker%E6%98%AF%E6%80%8E%E6%A0%B7%E4%B8%80%E7%A7%8D%E4%BD%93%E9%AA%8C-4068e6210365>`__
25
26- **October 2018**
27
28 - `不再尴尬的ChromeOS <https://medium.com/@clarkzjw/%E4%B8%8D%E5%86%8D%E5%B0%B4%E5%B0%AC%E7%9A%84chromeos-e81f4c6c42a1>`__
29 - `我与Ingress的1545天 <https://medium.com/@clarkzjw/%E6%88%91%E4%B8%8Eingress%E7%9A%841545%E5%A4%A9-a13a7883f7c2>`__
30
31- **August 2018**
32
33 - `【系列】爱沙尼亚电子公民不完全指南 <https://medium.com/%E7%88%B1%E6%B2%99%E5%B0%BC%E4%BA%9A%E7%94%B5%E5%AD%90%E5%85%AC%E6%B0%91%E4%B8%8D%E5%AE%8C%E5%85%A8%E6%8C%87%E5%8D%97>`__
34
35- **December 2017**
36
37 - `2017 观影记录 <https://medium.com/@clarkzjw/2017%E8%A7%82%E5%BD%B1%E8%AE%B0%E5%BD%95-438e53f1aaee>`__
38 - `The One Device: Experience of Pixel 2 <https://medium.com/@clarkzjw/the-one-device-experience-of-pixel-2-72593cb2771b>`__
39
40- **October 2017**
41
42 - `注销/删除一个互联网帐号有多难 <https://medium.com/@clarkzjw/%E6%B3%A8%E9%94%80-%E5%88%A0%E9%99%A4%E4%B8%80%E4%B8%AA%E4%BA%92%E8%81%94%E7%BD%91%E5%B8%90%E5%8F%B7%E6%9C%89%E5%A4%9A%E9%9A%BE-7c093ea0873e>`__
43
44- **July 2017**
45
46 - `我的大学 <https://medium.com/@clarkzjw/%E6%88%91%E7%9A%84%E5%A4%A7%E5%AD%A6-d6e4282c886a>`__
47
48- **March 2017**
49
50 - `Macbook Pro Late 2016一周体验 <https://medium.com/@clarkzjw/macbook-pro-late-2016%E4%B8%80%E5%91%A8%E4%BD%93%E9%AA%8C-667474f7925d>`__
51
52- **October 2016**
53
54 - `Yubikey 4 入手 <https://medium.com/@clarkzjw/yubikey-4%E5%85%A5%E6%89%8B-51ec9f8c92eb>`__
55 - `ERROR 451: 本網頁基於國家法律而封鎖 <https://medium.com/@clarkzjw/error-451-%E6%9C%AC%E7%B6%B2%E9%A0%81%E5%9F%BA%E6%96%BC%E5%9C%8B%E5%AE%B6%E6%B3%95%E5%BE%8B%E8%80%8C%E5%B0%81%E9%8E%96-1ad999b31847>`__
56
57- **September 2016**
58
59 - `Moto X 2014 XT1085刷CM指南 <https://medium.com/@clarkzjw/moto-x-2014-xt1085%E5%88%B7cm%E6%8C%87%E5%8D%97-db8886256ba7>`__
60
61- **August 2016**
62
63 - `[这列火车] 从北京到莫斯科 <https://medium.com/@clarkzjw/%E8%BF%99%E5%88%97%E7%81%AB%E8%BD%A6-%E4%BB%8E%E5%8C%97%E4%BA%AC%E5%88%B0%E8%8E%AB%E6%96%AF%E7%A7%91-cbcc17b66c03>`__
64
65- **April 2016**
66
67 - `安利好用的邮件服务之Fastmail <https://medium.com/@clarkzjw/%E5%AE%89%E5%88%A9%E5%A5%BD%E7%94%A8%E7%9A%84%E9%82%AE%E4%BB%B6%E6%9C%8D%E5%8A%A1%E4%B9%8Bfastmail-3f335bebdaaf>`__
68
69About me
70--------
71
72- Software engineer
73- Amateur HAMer(BG5DHM)
74- Estonian e-Resident
75- Programming with Python, Golang, C, etc
76- A user of Vim, Debian, OpenStack, Docker, Raspberry Pi, etc
77- Ingress resistance
78
79Language Skills
80---------------
81
82- Mandarin - Native or Bilingual proficiency
83- English - Professional working proficiency
84
85Publications
86------------
87
88- `Texture filtering based physically plausible image dehazing <https://link.springer.com/article/10.1007%2Fs00371-016-1259-3>`__
89- `暗通道先验图像去雾的大气光校验和光晕消除 <http://www.cjig.cn/jig/ch/reader/view_abstract.aspx?file_no=20160911&flag=1>`__
90
91Coding around the web
92---------------------
93
94- `Dehaze`_, implementation of dark channel prior based image dehazing algorithms
95- `one-two-three...infinity`_, 📏 Calculating the sum from one to a billion in different programming languages, inspired by https://github.com/leachim6/hello-world
96- `brainfuck`_, 🙇 Simple Brainfuck interpreter implemented in C
97- GitHub `@clarkzjw <https://github.com/clarkzjw>`__ for recent / current coding
98
99.. _Dehaze: https://github.com/clarkzjw/Dehaze
100.. _one-two-three...infinity: https://github.com/clarkzjw/one-two-three...infinity
101.. _brainfuck: https://github.com/clarkzjw/brainfuck
102
103Contact
104-------
105
106- Feel free to contact me!
107- PGP: `0x1D017D3D <https://keybase.io/clarkzjw/pgp_keys.asc?fingerprint=b878c370cf7d871faa3c76637e1eb1851d017d3d>`_ | `keybase.io <https://keybase.io/clarkzjw>`_
108- Telegram: `@clarkzjw <https://t.me/clarkzjw>`_ | Twitter: `_clarkzjw <https://twitter.com/_clarkzjw>`_
109- Mail to: `[email protected] <mailto:[email protected]>`_
110
111Links
112-----
113
114- `Uucky's Wonderland <https://uuc.ky/>`__
115- `USDWeekly <https://usdweekly.com/>`__
116- `Stray Episode <https://farer.org/>`__
117- `Sakeven <https://sakeven.me/>`__
118- `Justjjy <https://justjjy.com/>`__
119- `realityone <https://reality0ne.com/>`__
120
121
122Other
123-----
124
125- I am a volunteer of BOINC, supporting experiment like `World Community Grid`_ and `SETI@home`_
126
127- I think Freedom is my birth right and I shall have it, including free speech and free software
128
129.. raw:: html
130
131 <iframe src="https://www.worldcommunitygrid.org/getDynamicImage.do?memberName=clarkzjw&mnOn=true&stat=3&imageNum=1&rankOn=true&projectsOn=true&special=true" frameborder="0" name="di" scrolling="no" width="405px" height="190px"></iframe>
132
133.. container:: row
134
135 .. container:: project
136
137 .. figure:: https://boincstats.com/signature/-1/user/3483994/sig.png
138 :align: left
139 :target: https://boincstats.com/en/stats/-1/user/detail/59d322a65a0667a4207b6dc6ed9780ee
140 :alt: bonic stats
141 :height: 100
142
143
144.. container:: row
145
146 .. container:: project
147
148 .. figure:: https://cdn.clarkzjw.cn/redtestbar.gif
149 :align: left
150 :target: https://tomli.blog/archives/2016/06/2124.html
151 :alt: tomli.blog
152 :height: 150
153
154.. container:: row
155
156 .. container:: project
157
158 .. figure:: https://cdn.clarkzjw.cn/Sample_09-F9_protest_art,_Free_Speech_Flag_by_John_Marcotte.png
159 :align: left
160 :target: https://en.wikipedia.org/wiki/Free_Speech_Flag
161 :alt: en.wikipedia.org
162 :height: 150
163
164- Dream travel:
165
166 - Taking `Beijing – Moscow Train K3 <https://zh.wikipedia.org/wiki/K3/4%E6%AC%A1%E5%88%97%E8%BD%A6>`_
167 - Visiting `Korean DMZ <https://en.wikipedia.org/wiki/Korean_Demilitarized_Zone>`_ from both sides.
168
169Credit
170------
171
172- All original contents of this site are licensed under `CC BY-SA 3.0 CN <https://creativecommons.org/licenses/by-sa/3.0/cn/>`_
173
174
175.. _World Community Grid: https://www.worldcommunitygrid.org/
176.. _SETI@home: https://setiathome.berkeley.edu/
diff --git a/genindex.html b/genindex.html
new file mode 100644
index 0000000..c13e8ff
--- /dev/null
+++ b/genindex.html
@@ -0,0 +1,87 @@
1
2
3<!DOCTYPE html>
4
5<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-Hans-CN">
6 <head>
7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8 <title>Index &#8212; Hello World</title>
9 <link rel="stylesheet" href="_static/alagitpull.css" type="text/css" />
10 <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
11 <link rel="stylesheet" href="_static/flexboxgrid.min.css" type="text/css" />
12 <link rel="stylesheet" href="_static/git-pull.css" type="text/css" />
13 <link rel="stylesheet" href="_static/han.min.css" type="text/css" />
14 <script type="text/javascript">
15 var DOCUMENTATION_OPTIONS = {
16 URL_ROOT: './',
17 VERSION: '0.0',
18 COLLAPSE_INDEX: false,
19 FILE_SUFFIX: '.html',
20 HAS_SOURCE: true,
21 SOURCELINK_SUFFIX: '.txt'
22 };
23 </script>
24 <script type="text/javascript" src="_static/jquery.js"></script>
25 <script type="text/javascript" src="_static/underscore.js"></script>
26 <script type="text/javascript" src="_static/doctools.js"></script>
27 <link rel="shortcut icon" href="_static/favicon.ico"/>
28 <link rel="index" title="Index" href="#" />
29 <link rel="search" title="Search" href="search.html" />
30
31 <link rel="stylesheet" href="_static/custom.css" type="text/css" />
32
33
34 <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
35
36 </head>
37 <body>
38
39
40
41 <div class="document">
42 <div class="documentwrapper">
43 <div class="body" role="main">
44
45
46<h1 id="index">Index</h1>
47
48<div class="genindex-jumpbox">
49
50</div>
51
52
53 <div>
54 <br>
55 <div style="text-align: center; margin: 25px auto 15px;">
56 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="140" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="140" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h75v20H0z"/><path fill="#e05d44" d="M75 0h65v20H75z"/><path fill="url(#b)" d="M0 0h140v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"> <text x="385" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="650">Powered by</text><text x="385" y="140" transform="scale(.1)" textLength="650">Powered by</text><text x="1065" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="550">Cloudflare</text><text x="1065" y="140" transform="scale(.1)" textLength="550">Cloudflare</text></g> </svg>
57 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="112" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="112" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h65v20H0z"/><path fill="#97ca00" d="M65 0h47v20H65z"/><path fill="url(#b)" d="M0 0h112v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"> <text x="335" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="550">Hosted on</text><text x="335" y="140" transform="scale(.1)" textLength="550">Hosted on</text><text x="875" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="370">GitHub</text><text x="875" y="140" transform="scale(.1)" textLength="370">GitHub</text></g> </svg>
58 <br>
59 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="78" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="78" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h57v20H0z"/><path fill="#e05d44" d="M57 0h21v20H57z"/><path fill="url(#b)" d="M0 0h78v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"><text x="295" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="470">Made w/</text><text x="295" y="140" transform="scale(.1)" textLength="470">Made w/</text><text x="665" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="110">❤</text><text x="665" y="140" transform="scale(.1)" textLength="110">❤</text></g> </svg>
60 </div>
61 </div>
62 </div>
63 </div>
64 <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
65 <div class="sphinxsidebarwrapper">
66<h1 class="logo"><a href="index.html"></a></h1>
67
68
69
70
71
72
73
74
75<div class="relations">
76<h3>Related Topics</h3>
77<ul>
78 <li><a href="index.html">Documentation overview</a><ul>
79 </ul></li>
80</ul>
81</div>
82 </div>
83 </div>
84 <div class="clearer"></div>
85 </div>
86 </body>
87</html> \ No newline at end of file
diff --git a/index.html b/index.html
index 398f688..a4bb284 100644
--- a/index.html
+++ b/index.html
@@ -1,407 +1,280 @@
1
1<!DOCTYPE html> 2<!DOCTYPE html>
2<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-Hans-CN">
3 3
4<head> 4<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-Hans-CN">
5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <head>
6 <title>Hello World</title> 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7 <link rel="stylesheet" href="_static/alagitpull.css" type="text/css" /> 7 <title>Hello World &#8212; Hello World</title>
8 <link rel="stylesheet" href="_static/flexboxgrid.min.css" type="text/css" /> 8 <link rel="stylesheet" href="_static/alagitpull.css" type="text/css" />
9 <link rel="stylesheet" href="_static/git-pull.css" type="text/css" /> 9 <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
10 <link rel="stylesheet" href="_static/han.min.css" type="text/css" /> 10 <link rel="stylesheet" href="_static/flexboxgrid.min.css" type="text/css" />
11 <link rel="shortcut icon" href="_static/favicon.ico" /> 11 <link rel="stylesheet" href="_static/git-pull.css" type="text/css" />
12 <link rel="stylesheet" href="_static/han.min.css" type="text/css" />
13 <script type="text/javascript">
14 var DOCUMENTATION_OPTIONS = {
15 URL_ROOT: './',
16 VERSION: '0.0',
17 COLLAPSE_INDEX: false,
18 FILE_SUFFIX: '.html',
19 HAS_SOURCE: true,
20 SOURCELINK_SUFFIX: '.txt'
21 };
22 </script>
23 <script type="text/javascript" src="_static/jquery.js"></script>
24 <script type="text/javascript" src="_static/underscore.js"></script>
25 <script type="text/javascript" src="_static/doctools.js"></script>
26 <link rel="shortcut icon" href="_static/favicon.ico"/>
27 <link rel="index" title="Index" href="genindex.html" />
28 <link rel="search" title="Search" href="search.html" />
29
30 <link rel="stylesheet" href="_static/custom.css" type="text/css" />
31
32
12 <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> 33 <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
13 <!-- Global site tag (gtag.js) - Google Analytics -->
14 <script async src="https://www.googletagmanager.com/gtag/js?id=UA-91737359-11"></script>
15 <script>
16 window.dataLayer = window.dataLayer || [];
17 function gtag() { dataLayer.push(arguments); }
18 gtag('js', new Date());
19 34
20 gtag('config', 'UA-91737359-11'); 35 </head>
21 </script> 36 <body>
22</head>
23 37
24<body> 38
25 <div class="document"> 39
40 <div class="document">
26 <div class="documentwrapper"> 41 <div class="documentwrapper">
27 <div class="body" role="main"> 42 <div class="body" role="main">
28 <div class="section" id="hello-world"> 43
29 <h1>Hello World<a class="headerlink" href="#hello-world" title="Permalink to this headline">¶</a></h1> 44 <div class="section" id="hello-world">
30 <div class="toctree-wrapper compound"> 45<h1>Hello World<a class="headerlink" href="#hello-world" title="Permalink to this headline">¶</a></h1>
31 </div> 46<div class="toctree-wrapper compound">
32 <div class="section" id="updates"> 47</div>
33 <h2>Updates<a class="headerlink" href="#updates" title="Permalink to this headline">¶</a></h2> 48<div class="section" id="updates">
34 <ul> 49<h2>Updates<a class="headerlink" href="#updates" title="Permalink to this headline">¶</a></h2>
35 <li> 50<ul>
36 <p class="first"><strong>Jan 2020</strong></p> 51<li><p class="first"><strong>June 2020</strong></p>
37 <blockquote> 52<blockquote>
38 <div> 53<div><ul class="simple">
39 <ul class="simple"> 54<li><a class="reference external" href="https://stamp.jinwei.me/2020/06/15/covid-19-stamp/">COVID-19防疫纪念邮票对比</a></li>
40 <li><a class="reference external" 55</ul>
41 href="https://medium.com/&#64;clarkzjw/2019%E5%B9%B4%E5%BA%A6%E6%80%BB%E7%BB%93-55eb4f242b26">2019年度总结</a> 56</div></blockquote>
42 </li> 57</li>
43 </ul> 58<li><p class="first"><strong>Jan 2020</strong></p>
44 </div> 59<blockquote>
45 </blockquote> 60<div><ul class="simple">
46 </li> 61<li><a class="reference external" href="https://medium.com/&#64;clarkzjw/2019%E5%B9%B4%E5%BA%A6%E6%80%BB%E7%BB%93-55eb4f242b26">2019年度总结</a></li>
47 <li> 62</ul>
48 <p class="first"><strong>June 2019</strong></p> 63</div></blockquote>
49 <blockquote> 64</li>
50 <div> 65<li><p class="first"><strong>June 2019</strong></p>
51 <ul class="simple"> 66<blockquote>
52 <li><a class="reference external" 67<div><ul class="simple">
53 href="https://medium.com/&#64;clarkzjw/2019%E5%8D%8A%E5%B9%B4%E5%BA%A6%E6%80%BB%E7%BB%93-ac59b681224">2019半年度总结</a> 68<li><a class="reference external" href="https://medium.com/&#64;clarkzjw/2019%E5%8D%8A%E5%B9%B4%E5%BA%A6%E6%80%BB%E7%BB%93-ac59b681224">2019半年度总结</a></li>
54 </li> 69<li><a class="reference external" href="https://medium.com/&#64;clarkzjw/%E5%9C%A82019%E5%B9%B4%E5%AE%89%E8%A3%85docker%E6%98%AF%E6%80%8E%E6%A0%B7%E4%B8%80%E7%A7%8D%E4%BD%93%E9%AA%8C-4068e6210365">在2019年安装Docker是怎样一种体验</a></li>
55 <li><a class="reference external" 70</ul>
56 href="https://medium.com/&#64;clarkzjw/%E5%9C%A82019%E5%B9%B4%E5%AE%89%E8%A3%85docker%E6%98%AF%E6%80%8E%E6%A0%B7%E4%B8%80%E7%A7%8D%E4%BD%93%E9%AA%8C-4068e6210365">在2019年安装Docker是怎样一种体验</a> 71</div></blockquote>
57 </li> 72</li>
58 </ul> 73<li><p class="first"><strong>October 2018</strong></p>
59 </div> 74<blockquote>
60 </blockquote> 75<div><ul class="simple">
61 </li> 76<li><a class="reference external" href="https://medium.com/&#64;clarkzjw/%E4%B8%8D%E5%86%8D%E5%B0%B4%E5%B0%AC%E7%9A%84chromeos-e81f4c6c42a1">不再尴尬的ChromeOS</a></li>
62 <li> 77<li><a class="reference external" href="https://medium.com/&#64;clarkzjw/%E6%88%91%E4%B8%8Eingress%E7%9A%841545%E5%A4%A9-a13a7883f7c2">我与Ingress的1545天</a></li>
63 <p class="first"><strong>October 2018</strong></p> 78</ul>
64 <blockquote> 79</div></blockquote>
65 <div> 80</li>
66 <ul class="simple"> 81<li><p class="first"><strong>August 2018</strong></p>
67 <li><a class="reference external" 82<blockquote>
68 href="https://medium.com/&#64;clarkzjw/%E4%B8%8D%E5%86%8D%E5%B0%B4%E5%B0%AC%E7%9A%84chromeos-e81f4c6c42a1">不再尴尬的ChromeOS</a> 83<div><ul class="simple">
69 </li> 84<li><a class="reference external" href="https://medium.com/%E7%88%B1%E6%B2%99%E5%B0%BC%E4%BA%9A%E7%94%B5%E5%AD%90%E5%85%AC%E6%B0%91%E4%B8%8D%E5%AE%8C%E5%85%A8%E6%8C%87%E5%8D%97">【系列】爱沙尼亚电子公民不完全指南</a></li>
70 <li><a class="reference external" 85</ul>
71 href="https://medium.com/&#64;clarkzjw/%E6%88%91%E4%B8%8Eingress%E7%9A%841545%E5%A4%A9-a13a7883f7c2">我与Ingress的1545天</a> 86</div></blockquote>
72 </li> 87</li>
73 </ul> 88<li><p class="first"><strong>December 2017</strong></p>
74 </div> 89<blockquote>
75 </blockquote> 90<div><ul class="simple">
76 </li> 91<li><a class="reference external" href="https://medium.com/&#64;clarkzjw/2017%E8%A7%82%E5%BD%B1%E8%AE%B0%E5%BD%95-438e53f1aaee">2017 观影记录</a></li>
77 <li> 92<li><a class="reference external" href="https://medium.com/&#64;clarkzjw/the-one-device-experience-of-pixel-2-72593cb2771b">The One Device: Experience of Pixel 2</a></li>
78 <p class="first"><strong>August 2018</strong></p> 93</ul>
79 <blockquote> 94</div></blockquote>
80 <div> 95</li>
81 <ul class="simple"> 96<li><p class="first"><strong>October 2017</strong></p>
82 <li><a class="reference external" 97<blockquote>
83 href="https://medium.com/%E7%88%B1%E6%B2%99%E5%B0%BC%E4%BA%9A%E7%94%B5%E5%AD%90%E5%85%AC%E6%B0%91%E4%B8%8D%E5%AE%8C%E5%85%A8%E6%8C%87%E5%8D%97">【系列】爱沙尼亚电子公民不完全指南</a> 98<div><ul class="simple">
84 </li> 99<li><a class="reference external" href="https://medium.com/&#64;clarkzjw/%E6%B3%A8%E9%94%80-%E5%88%A0%E9%99%A4%E4%B8%80%E4%B8%AA%E4%BA%92%E8%81%94%E7%BD%91%E5%B8%90%E5%8F%B7%E6%9C%89%E5%A4%9A%E9%9A%BE-7c093ea0873e">注销/删除一个互联网帐号有多难</a></li>
85 </ul> 100</ul>
86 </div> 101</div></blockquote>
87 </blockquote> 102</li>
88 </li> 103<li><p class="first"><strong>July 2017</strong></p>
89 <li> 104<blockquote>
90 <p class="first"><strong>December 2017</strong></p> 105<div><ul class="simple">
91 <blockquote> 106<li><a class="reference external" href="https://medium.com/&#64;clarkzjw/%E6%88%91%E7%9A%84%E5%A4%A7%E5%AD%A6-d6e4282c886a">我的大学</a></li>
92 <div> 107</ul>
93 <ul class="simple"> 108</div></blockquote>
94 <li><a class="reference external" 109</li>
95 href="https://medium.com/&#64;clarkzjw/2017%E8%A7%82%E5%BD%B1%E8%AE%B0%E5%BD%95-438e53f1aaee">2017 110<li><p class="first"><strong>March 2017</strong></p>
96 观影记录</a></li> 111<blockquote>
97 <li><a class="reference external" 112<div><ul class="simple">
98 href="https://medium.com/&#64;clarkzjw/the-one-device-experience-of-pixel-2-72593cb2771b">The 113<li><a class="reference external" href="https://medium.com/&#64;clarkzjw/macbook-pro-late-2016%E4%B8%80%E5%91%A8%E4%BD%93%E9%AA%8C-667474f7925d">Macbook Pro Late 2016一周体验</a></li>
99 One Device: Experience of Pixel 2</a></li> 114</ul>
100 </ul> 115</div></blockquote>
101 </div> 116</li>
102 </blockquote> 117<li><p class="first"><strong>October 2016</strong></p>
103 </li> 118<blockquote>
104 <li> 119<div><ul class="simple">
105 <p class="first"><strong>October 2017</strong></p> 120<li><a class="reference external" href="https://medium.com/&#64;clarkzjw/yubikey-4%E5%85%A5%E6%89%8B-51ec9f8c92eb">Yubikey 4 入手</a></li>
106 <blockquote> 121<li><a class="reference external" href="https://medium.com/&#64;clarkzjw/error-451-%E6%9C%AC%E7%B6%B2%E9%A0%81%E5%9F%BA%E6%96%BC%E5%9C%8B%E5%AE%B6%E6%B3%95%E5%BE%8B%E8%80%8C%E5%B0%81%E9%8E%96-1ad999b31847">ERROR 451: 本網頁基於國家法律而封鎖</a></li>
107 <div> 122</ul>
108 <ul class="simple"> 123</div></blockquote>
109 <li><a class="reference external" 124</li>
110 href="https://medium.com/&#64;clarkzjw/%E6%B3%A8%E9%94%80-%E5%88%A0%E9%99%A4%E4%B8%80%E4%B8%AA%E4%BA%92%E8%81%94%E7%BD%91%E5%B8%90%E5%8F%B7%E6%9C%89%E5%A4%9A%E9%9A%BE-7c093ea0873e">注销/删除一个互联网帐号有多难</a> 125<li><p class="first"><strong>September 2016</strong></p>
111 </li> 126<blockquote>
112 </ul> 127<div><ul class="simple">
113 </div> 128<li><a class="reference external" href="https://medium.com/&#64;clarkzjw/moto-x-2014-xt1085%E5%88%B7cm%E6%8C%87%E5%8D%97-db8886256ba7">Moto X 2014 XT1085刷CM指南</a></li>
114 </blockquote> 129</ul>
115 </li> 130</div></blockquote>
116 <li> 131</li>
117 <p class="first"><strong>July 2017</strong></p> 132<li><p class="first"><strong>August 2016</strong></p>
118 <blockquote> 133<blockquote>
119 <div> 134<div><ul class="simple">
120 <ul class="simple"> 135<li><a class="reference external" href="https://medium.com/&#64;clarkzjw/%E8%BF%99%E5%88%97%E7%81%AB%E8%BD%A6-%E4%BB%8E%E5%8C%97%E4%BA%AC%E5%88%B0%E8%8E%AB%E6%96%AF%E7%A7%91-cbcc17b66c03">[这列火车] 从北京到莫斯科</a></li>
121 <li><a class="reference external" 136</ul>
122 href="https://medium.com/&#64;clarkzjw/%E6%88%91%E7%9A%84%E5%A4%A7%E5%AD%A6-d6e4282c886a">我的大学</a> 137</div></blockquote>
123 </li> 138</li>
124 </ul> 139<li><p class="first"><strong>April 2016</strong></p>
125 </div> 140<blockquote>
126 </blockquote> 141<div><ul class="simple">
127 </li> 142<li><a class="reference external" href="https://medium.com/&#64;clarkzjw/%E5%AE%89%E5%88%A9%E5%A5%BD%E7%94%A8%E7%9A%84%E9%82%AE%E4%BB%B6%E6%9C%8D%E5%8A%A1%E4%B9%8Bfastmail-3f335bebdaaf">安利好用的邮件服务之Fastmail</a></li>
128 <li> 143</ul>
129 <p class="first"><strong>March 2017</strong></p> 144</div></blockquote>
130 <blockquote> 145</li>
131 <div> 146</ul>
132 <ul class="simple"> 147</div>
133 <li><a class="reference external" 148<div class="section" id="about-me">
134 href="https://medium.com/&#64;clarkzjw/macbook-pro-late-2016%E4%B8%80%E5%91%A8%E4%BD%93%E9%AA%8C-667474f7925d">Macbook 149<h2>About me<a class="headerlink" href="#about-me" title="Permalink to this headline">¶</a></h2>
135 Pro Late 2016一周体验</a></li> 150<ul class="simple">
136 </ul> 151<li>Software engineer</li>
137 </div> 152<li>Amateur HAMer(BG5DHM)</li>
138 </blockquote> 153<li>Estonian e-Resident</li>
139 </li> 154<li>Programming with Python, Golang, C, etc</li>
140 <li> 155<li>A user of Vim, Debian, OpenStack, Docker, Raspberry Pi, etc</li>
141 <p class="first"><strong>October 2016</strong></p> 156<li>Ingress resistance</li>
142 <blockquote> 157</ul>
143 <div> 158</div>
144 <ul class="simple"> 159<div class="section" id="language-skills">
145 <li><a class="reference external" 160<h2>Language Skills<a class="headerlink" href="#language-skills" title="Permalink to this headline">¶</a></h2>
146 href="https://medium.com/&#64;clarkzjw/yubikey-4%E5%85%A5%E6%89%8B-51ec9f8c92eb">Yubikey 4 161<ul class="simple">
147 入手</a></li> 162<li>Mandarin - Native or Bilingual proficiency</li>
148 <li><a class="reference external" 163<li>English - Professional working proficiency</li>
149 href="https://medium.com/&#64;clarkzjw/error-451-%E6%9C%AC%E7%B6%B2%E9%A0%81%E5%9F%BA%E6%96%BC%E5%9C%8B%E5%AE%B6%E6%B3%95%E5%BE%8B%E8%80%8C%E5%B0%81%E9%8E%96-1ad999b31847">ERROR 164</ul>
150 451: 本網頁基於國家法律而封鎖</a></li> 165</div>
151 </ul> 166<div class="section" id="publications">
152 </div> 167<h2>Publications<a class="headerlink" href="#publications" title="Permalink to this headline">¶</a></h2>
153 </blockquote> 168<ul class="simple">
154 </li> 169<li><a class="reference external" href="https://link.springer.com/article/10.1007%2Fs00371-016-1259-3">Texture filtering based physically plausible image dehazing</a></li>
155 <li> 170<li><a class="reference external" href="http://www.cjig.cn/jig/ch/reader/view_abstract.aspx?file_no=20160911&amp;flag=1">暗通道先验图像去雾的大气光校验和光晕消除</a></li>
156 <p class="first"><strong>September 2016</strong></p> 171</ul>
157 <blockquote> 172</div>
158 <div> 173<div class="section" id="coding-around-the-web">
159 <ul class="simple"> 174<h2>Coding around the web<a class="headerlink" href="#coding-around-the-web" title="Permalink to this headline">¶</a></h2>
160 <li><a class="reference external" 175<ul class="simple">
161 href="https://medium.com/&#64;clarkzjw/moto-x-2014-xt1085%E5%88%B7cm%E6%8C%87%E5%8D%97-db8886256ba7">Moto 176<li><a class="reference external" href="https://github.com/clarkzjw/Dehaze">Dehaze</a>, implementation of dark channel prior based image dehazing algorithms</li>
162 X 2014 XT1085刷CM指南</a></li> 177<li><a class="reference external" href="https://github.com/clarkzjw/one-two-three...infinity">one-two-three…infinity</a>, 📏 Calculating the sum from one to a billion in different programming languages, inspired by <a class="reference external" href="https://github.com/leachim6/hello-world">https://github.com/leachim6/hello-world</a></li>
163 </ul> 178<li><a class="reference external" href="https://github.com/clarkzjw/brainfuck">brainfuck</a>, 🙇 Simple Brainfuck interpreter implemented in C</li>
164 </div> 179<li>GitHub <a class="reference external" href="https://github.com/clarkzjw">&#64;clarkzjw</a> for recent / current coding</li>
165 </blockquote> 180</ul>
166 </li> 181</div>
167 <li> 182<div class="section" id="contact">
168 <p class="first"><strong>August 2016</strong></p> 183<h2>Contact<a class="headerlink" href="#contact" title="Permalink to this headline">¶</a></h2>
169 <blockquote> 184<ul class="simple">
170 <div> 185<li>Feel free to contact me!</li>
171 <ul class="simple"> 186<li>PGP: <a class="reference external" href="https://keybase.io/clarkzjw/pgp_keys.asc?fingerprint=b878c370cf7d871faa3c76637e1eb1851d017d3d">0x1D017D3D</a> | <a class="reference external" href="https://keybase.io/clarkzjw">keybase.io</a></li>
172 <li><a class="reference external" 187<li>Telegram: <a class="reference external" href="https://t.me/clarkzjw">&#64;clarkzjw</a> | Twitter: <a class="reference external" href="https://twitter.com/_clarkzjw">_clarkzjw</a></li>
173 href="https://medium.com/&#64;clarkzjw/%E8%BF%99%E5%88%97%E7%81%AB%E8%BD%A6-%E4%BB%8E%E5%8C%97%E4%BA%AC%E5%88%B0%E8%8E%AB%E6%96%AF%E7%A7%91-cbcc17b66c03">[这列火车] 188<li>Mail to: <a class="reference external" href="mailto:hello&#37;&#52;&#48;jinwei&#46;me">hello<span>&#64;</span>jinwei<span>&#46;</span>me</a></li>
174 从北京到莫斯科</a></li> 189</ul>
175 </ul> 190</div>
176 </div> 191<div class="section" id="links">
177 </blockquote> 192<h2>Links<a class="headerlink" href="#links" title="Permalink to this headline">¶</a></h2>
178 </li> 193<ul class="simple">
179 <li> 194<li><a class="reference external" href="https://uuc.ky/">Uucky’s Wonderland</a></li>
180 <p class="first"><strong>April 2016</strong></p> 195<li><a class="reference external" href="https://usdweekly.com/">USDWeekly</a></li>
181 <blockquote> 196<li><a class="reference external" href="https://farer.org/">Stray Episode</a></li>
182 <div> 197<li><a class="reference external" href="https://sakeven.me/">Sakeven</a></li>
183 <ul class="simple"> 198<li><a class="reference external" href="https://justjjy.com/">Justjjy</a></li>
184 <li><a class="reference external" 199<li><a class="reference external" href="https://reality0ne.com/">realityone</a></li>
185 href="https://medium.com/&#64;clarkzjw/%E5%AE%89%E5%88%A9%E5%A5%BD%E7%94%A8%E7%9A%84%E9%82%AE%E4%BB%B6%E6%9C%8D%E5%8A%A1%E4%B9%8Bfastmail-3f335bebdaaf">安利好用的邮件服务之Fastmail</a> 200</ul>
186 </li> 201</div>
187 </ul> 202<div class="section" id="other">
188 </div> 203<h2>Other<a class="headerlink" href="#other" title="Permalink to this headline">¶</a></h2>
189 </blockquote> 204<ul class="simple">
190 </li> 205<li>I am a volunteer of BOINC, supporting experiment like <a class="reference external" href="https://www.worldcommunitygrid.org/">World Community Grid</a> and <a class="reference external" href="https://setiathome.berkeley.edu/">SETI&#64;home</a></li>
191 </ul> 206<li>I think Freedom is my birth right and I shall have it, including free speech and free software</li>
192 </div> 207</ul>
193 <div class="section" id="about-me"> 208<iframe src="https://www.worldcommunitygrid.org/getDynamicImage.do?memberName=clarkzjw&mnOn=true&stat=3&imageNum=1&rankOn=true&projectsOn=true&special=true" frameborder="0" name="di" scrolling="no" width="405px" height="190px"></iframe><div class="row docutils container">
194 <h2>About me<a class="headerlink" href="#about-me" title="Permalink to this headline">¶</a></h2> 209<div class="project docutils container">
195 <ul class="simple"> 210<div class="figure align-left">
196 <li>Software engineer</li> 211<a class="reference external image-reference" href="https://boincstats.com/en/stats/-1/user/detail/59d322a65a0667a4207b6dc6ed9780ee"><img alt="bonic stats" src="https://boincstats.com/signature/-1/user/3483994/sig.png" style="height: 100px;" /></a>
197 <li>Amateur HAMer(<a class="reference external" href="https://bg5dhm.radio" target="_blank">BG5DHM</a>)</li> 212</div>
198 <li><a class="reference external" 213</div>
199 href="https://medium.com/%E7%88%B1%E6%B2%99%E5%B0%BC%E4%BA%9A%E7%94%B5%E5%AD%90%E5%85%AC%E6%B0%91%E4%B8%8D%E5%AE%8C%E5%85%A8%E6%8C%87%E5%8D%97">Estonian 214</div>
200 e-Resident</a></li> 215<div class="row docutils container">
201 <li>Programming in Python, Golang, C, etc</li> 216<div class="project docutils container">
202 <li>A user of Vim, Debian, OpenStack, Docker, Raspberry Pi, etc</li> 217<div class="figure align-left">
203 <li>Ingress resistance</li> 218<a class="reference external image-reference" href="https://tomli.blog/archives/2016/06/2124.html"><img alt="tomli.blog" src="https://cdn.clarkzjw.cn/redtestbar.gif" style="height: 150px;" /></a>
204 </ul> 219</div>
205 </div> 220</div>
206 <div class="section" id="language-skills"> 221</div>
207 <h2>Language Skills<a class="headerlink" href="#language-skills" title="Permalink to this headline">¶</a> 222<div class="row docutils container">
208 </h2> 223<div class="project docutils container">
209 <ul class="simple"> 224<div class="figure align-left">
210 <li>Mandarin - Native or Bilingual proficiency</li> 225<a class="reference external image-reference" href="https://en.wikipedia.org/wiki/Free_Speech_Flag"><img alt="en.wikipedia.org" src="https://cdn.clarkzjw.cn/Sample_09-F9_protest_art,_Free_Speech_Flag_by_John_Marcotte.png" style="height: 150px;" /></a>
211 <li>English - Professional working proficiency</li> 226</div>
212 </ul> 227</div>
213 </div> 228</div>
214 <div class="section" id="publications"> 229<ul class="simple">
215 <h2>Publications<a class="headerlink" href="#publications" title="Permalink to this headline">¶</a></h2> 230<li>Dream travel:<ul>
216 <ul class="simple"> 231<li>Taking <a class="reference external" href="https://zh.wikipedia.org/wiki/K3/4%E6%AC%A1%E5%88%97%E8%BD%A6">Beijing – Moscow Train K3</a></li>
217 <li><a class="reference external" 232<li>Visiting <a class="reference external" href="https://en.wikipedia.org/wiki/Korean_Demilitarized_Zone">Korean DMZ</a> from both sides.</li>
218 href="https://link.springer.com/article/10.1007%2Fs00371-016-1259-3">Texture filtering based 233</ul>
219 physically plausible image dehazing</a></li> 234</li>
220 <li><a class="reference external" 235</ul>
221 href="http://www.cjig.cn/jig/ch/reader/view_abstract.aspx?file_no=20160911&amp;flag=1">暗通道先验图像去雾的大气光校验和光晕消除</a> 236</div>
222 </li> 237<div class="section" id="credit">
223 </ul> 238<h2>Credit<a class="headerlink" href="#credit" title="Permalink to this headline">¶</a></h2>
224 </div> 239<ul class="simple">
225 <div class="section" id="coding-around-the-web"> 240<li>All original contents of this site are licensed under <a class="reference external" href="https://creativecommons.org/licenses/by-sa/3.0/cn/">CC BY-SA 3.0 CN</a></li>
226 <h2>Coding around the web<a class="headerlink" href="#coding-around-the-web" 241</ul>
227 title="Permalink to this headline">¶</a></h2> 242</div>
228 <ul class="simple"> 243</div>
229 <li><a class="reference external" href="https://github.com/clarkzjw/Dehaze">Dehaze</a>, implementation of 244
230 dark channel prior based image dehazing algorithms</li> 245
231 <li><a class="reference external" 246 <div>
232 href="https://github.com/clarkzjw/one-two-three...infinity">one-two-three…infinity</a>, 📏 calculating 247 <br>
233 the sum from one to a billion in different programming languages, inspired by <a 248 <div style="text-align: center; margin: 25px auto 15px;">
234 class="reference external" 249 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="140" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="140" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h75v20H0z"/><path fill="#e05d44" d="M75 0h65v20H75z"/><path fill="url(#b)" d="M0 0h140v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"> <text x="385" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="650">Powered by</text><text x="385" y="140" transform="scale(.1)" textLength="650">Powered by</text><text x="1065" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="550">Cloudflare</text><text x="1065" y="140" transform="scale(.1)" textLength="550">Cloudflare</text></g> </svg>
235 href="https://github.com/leachim6/hello-world">https://github.com/leachim6/hello-world</a></li> 250 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="112" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="112" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h65v20H0z"/><path fill="#97ca00" d="M65 0h47v20H65z"/><path fill="url(#b)" d="M0 0h112v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"> <text x="335" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="550">Hosted on</text><text x="335" y="140" transform="scale(.1)" textLength="550">Hosted on</text><text x="875" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="370">GitHub</text><text x="875" y="140" transform="scale(.1)" textLength="370">GitHub</text></g> </svg>
236 <li><a class="reference external" href="https://github.com/clarkzjw/brainfuck">brainfuck</a>, 🙇 simple 251 <br>
237 Brainfuck interpreter implemented in C</li> 252 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="78" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="78" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h57v20H0z"/><path fill="#e05d44" d="M57 0h21v20H57z"/><path fill="url(#b)" d="M0 0h78v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"><text x="295" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="470">Made w/</text><text x="295" y="140" transform="scale(.1)" textLength="470">Made w/</text><text x="665" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="110">❤</text><text x="665" y="140" transform="scale(.1)" textLength="110">❤</text></g> </svg>
238 <li>GitHub <a class="reference external" href="https://github.com/clarkzjw">&#64;clarkzjw</a> for recent 253 </div>
239 coding</li>
240 </ul>
241 </div>
242 <div class="section" id="contact">
243 <h2>Contact<a class="headerlink" href="#contact" title="Permalink to this headline">¶</a></h2>
244 <ul class="simple">
245 <li>Feel free to contact me!</li>
246 <li>PGP: <a class="reference external"
247 href="https://keybase.io/clarkzjw/pgp_keys.asc?fingerprint=b878c370cf7d871faa3c76637e1eb1851d017d3d">0x1D017D3D</a>
248 | <a class="reference external" href="https://keybase.io/clarkzjw">keybase.io</a></li>
249 <li>Telegram: <a class="reference external" href="https://t.me/clarkzjw">&#64;clarkzjw</a> | Twitter: <a
250 class="reference external" href="https://twitter.com/_clarkzjw">_clarkzjw</a></li>
251 <li>Mail to: <a class="reference external"
252 href="mailto:hello&#37;&#52;&#48;jinwei&#46;me">hello<span>&#64;</span>jinwei<span>&#46;</span>me</a>
253 </li>
254 </ul>
255 </div>
256 <div class="section" id="links">
257 <h2>Links<a class="headerlink" href="#links" title="Permalink to this headline">¶</a></h2>
258 <ul class="simple">
259 <li><a class="reference external" href="https://uuc.ky/">Uucky’s Wonderland</a></li>
260 <li><a class="reference external" href="https://usdweekly.com/">USDWeekly</a></li>
261 <li><a class="reference external" href="https://farer.org/">Stray Episode</a></li>
262 <li><a class="reference external" href="https://sakeven.me/">Sakeven</a></li>
263 <li><a class="reference external" href="https://justjjy.com/">Justjjy</a></li>
264 <li><a class="reference external" href="https://reality0ne.com/">realityone</a></li>
265 </ul>
266 </div>
267 <div class="section" id="other">
268 <h2>Other<a class="headerlink" href="#other" title="Permalink to this headline">¶</a></h2>
269 <ul class="simple">
270 <li>I am a volunteer of BOINC, supporting experiment like <a class="reference external"
271 href="https://www.worldcommunitygrid.org/">World Community Grid</a> and <a class="reference external"
272 href="https://setiathome.berkeley.edu/">SETI&#64;home</a></li>
273
274 <iframe
275 src="https://www.worldcommunitygrid.org/getDynamicImage.do?memberName=clarkzjw&mnOn=true&stat=3&imageNum=1&rankOn=true&projectsOn=true&special=true"
276 frameborder="0" name="di" scrolling="no" width="405px" height="190px"></iframe>
277 <div class="row docutils container">
278 <div class="project docutils container">
279 <div class="figure align-left">
280 <a class="reference external image-reference"
281 href="https://boincstats.com/en/stats/-1/user/detail/59d322a65a0667a4207b6dc6ed9780ee"><img
282 alt="bonic stats" src="https://boincstats.com/signature/-1/user/3483994/sig.png"
283 style="height: 100px;" /></a>
284 </div>
285 </div>
286 </div>
287 </ul>
288 <ul class="simple">
289 <li>Sometimes I also post on <a class="reference external" href="https://matters.news/@matters648">Matters</a>.<br>
290 You can click the <a class="reference external" href="https://like.co/in/creator">Like button</a> below. (You may need to disable Ad blocker)</li>
291
292 <iframe scrolling="no" frameborder="0" style="height: 212px; width: 100%;"
293 src="https://button.like.co/in/embed/matters648/button?type=wp&amp;referrer=https%3A%2F%2Fnote.jinwei.me%2F%3Fpage_id%3D24"></iframe>
294 </ul>
295 <ul class="simple">
296 <li>I think Freedom is my birth right and I shall have it, including free speech and free software</li>
297 <div class="row docutils container">
298 <div class="project docutils container">
299 <div class="figure align-left">
300 <a class="reference external image-reference"
301 href="https://tomli.blog/archives/2016/06/2124.html"><img alt="tomli.blog"
302 src="https://cdn.clarkzjw.cn/redtestbar.gif" style="height: 150px;" /></a>
303 </div>
304 </div>
305 </div>
306 <div class="row docutils container">
307 <div class="project docutils container">
308 <div class="figure align-left">
309 <a class="reference external image-reference"
310 href="https://en.wikipedia.org/wiki/Free_Speech_Flag"><img alt="en.wikipedia.org"
311 src="https://cdn.clarkzjw.cn/Sample_09-F9_protest_art,_Free_Speech_Flag_by_John_Marcotte.png"
312 style="height: 150px;" /></a>
313 </div> 254 </div>
314 </div>
315 </div>
316 </ul>
317 <ul class="simple">
318 <li>Dream travel:
319 <ul>
320 <li><a class="reference external"
321 href="https://zh.wikipedia.org/wiki/K3/4%E6%AC%A1%E5%88%97%E8%BD%A6">Beijing – Moscow Train K3</a>
322 </li>
323 <li><a class="reference external"
324 href="https://en.wikipedia.org/wiki/Korean_Demilitarized_Zone">Korean DMZ</a> from both sides.
325 </li>
326 </ul>
327 </li>
328 </ul>
329 </div>
330 <div class="section" id="credit">
331 <h2>Credit<a class="headerlink" href="#credit" title="Permalink to this headline">¶</a></h2>
332 <ul class="simple">
333 <li>All original contents of this site are licensed under <a class="reference external"
334 href="https://creativecommons.org/licenses/by-sa/4.0/deed.zh">CC BY-SA 4.0</a></li>
335 </ul>
336 </div>
337 <script async src="https://comments.app/js/widget.js?2" data-comments-app-website="MwvU0Wsv" data-limit="5" data-dislikes="1" data-outlined="1" data-colorful="1"></script>
338 </div> 255 </div>
339 <div> 256 </div>
340 <br> 257 <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
341 <div style="text-align: center; margin: 25px auto 15px;"> 258 <div class="sphinxsidebarwrapper">
342 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="140" height="20"> 259<h1 class="logo"><a href="#"></a></h1>
343 <linearGradient id="b" x2="0" y2="100%"> 260
344 <stop offset="0" stop-color="#bbb" stop-opacity=".1" /> 261
345 <stop offset="1" stop-opacity=".1" /> 262
346 </linearGradient> 263
347 <clipPath id="a"> 264
348 <rect width="140" height="20" rx="3" fill="#fff" /> 265
349 </clipPath> 266
350 <g clip-path="url(#a)"> 267
351 <path fill="#555" d="M0 0h75v20H0z" /> 268<div class="relations">
352 <path fill="#e05d44" d="M75 0h65v20H75z" /> 269<h3>Related Topics</h3>
353 <path fill="url(#b)" d="M0 0h140v20H0z" /> 270<ul>
354 </g> 271 <li><a href="#">Documentation overview</a><ul>
355 <g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"> 272 </ul></li>
356 <text x="385" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="650">Powered 273</ul>
357 by</text><text x="385" y="140" transform="scale(.1)" textLength="650">Powered by</text><text x="1065" 274</div>
358 y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="550">Cloudflare</text><text
359 x="1065" y="140" transform="scale(.1)" textLength="550">Cloudflare</text></g>
360 </svg>
361 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="112" height="20">
362 <linearGradient id="b" x2="0" y2="100%">
363 <stop offset="0" stop-color="#bbb" stop-opacity=".1" />
364 <stop offset="1" stop-opacity=".1" />
365 </linearGradient>
366 <clipPath id="a">
367 <rect width="112" height="20" rx="3" fill="#fff" />
368 </clipPath>
369 <g clip-path="url(#a)">
370 <path fill="#555" d="M0 0h65v20H0z" />
371 <path fill="#97ca00" d="M65 0h47v20H65z" />
372 <path fill="url(#b)" d="M0 0h112v20H0z" />
373 </g>
374 <g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110">
375 <text x="335" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="550">Hosted
376 on</text><text x="335" y="140" transform="scale(.1)" textLength="550">Hosted on</text><text x="875"
377 y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="370">GitHub</text><text
378 x="875" y="140" transform="scale(.1)" textLength="370">GitHub</text></g>
379 </svg>
380 <br>
381 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="78" height="20">
382 <linearGradient id="b" x2="0" y2="100%">
383 <stop offset="0" stop-color="#bbb" stop-opacity=".1" />
384 <stop offset="1" stop-opacity=".1" />
385 </linearGradient>
386 <clipPath id="a">
387 <rect width="78" height="20" rx="3" fill="#fff" />
388 </clipPath>
389 <g clip-path="url(#a)">
390 <path fill="#555" d="M0 0h57v20H0z" />
391 <path fill="#e05d44" d="M57 0h21v20H57z" />
392 <path fill="url(#b)" d="M0 0h78v20H0z" />
393 </g>
394 <g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110">
395 <text x="295" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="470">Made
396 w/</text><text x="295" y="140" transform="scale(.1)" textLength="470">Made w/</text><text x="665"
397 y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="110">❤</text><text x="665"
398 y="140" transform="scale(.1)" textLength="110">❤</text></g>
399 </svg>
400 </div>
401 </div> 275 </div>
402 </div> 276 </div>
277 <div class="clearer"></div>
403 </div> 278 </div>
404 </div> 279 </body>
405</body> 280</html> \ No newline at end of file
406
407</html>
diff --git a/objects.inv b/objects.inv
new file mode 100644
index 0000000..c6d80bb
--- /dev/null
+++ b/objects.inv
Binary files differ
diff --git a/rss.xml b/rss.xml
new file mode 100644
index 0000000..3ed2971
--- /dev/null
+++ b/rss.xml
@@ -0,0 +1,81 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
3 <channel>
4 <title>Hello World</title>
5 <link>https://blog.jinwei.me</link>
6 <description>Freedom is my birth right and I shall have it.</description>
7 <atom:link href="https://blog.jinwei.me/rss" rel="self" type="application/rss+xml" />
8
9 <item>
10 <title>又一个新的博客 — Hello World</title>
11 <description>
12
13
14又一个新的博客¶
15
16
17
18
19Publish Date:2018-01-15
20
21
22
23前段时间有朋友和我抱怨博客加载速度太慢了(。之前的博客架在Blogger上,为了让排版稍微美观一些,找了一个第三方的主题,加载了许多外部的
24资源,导致网页载入速度非常慢。虽然我自己对于网站在国内的加载速度毫不在意,但是既然还有读者(少的可怜)在看,以及在这极少的读者中有用
25户提出了这个问题,那就得解决。前段时间无意中看到一个博客( git-pull ),觉得主题简洁而又美观,于是开始
26着手改造自己的博客。
27这次用了「大名鼎鼎」的 Sphinx ,一个软件开发过程中的文档生成工具来作为博客的静态网页生成引擎。
28上手Sphinx非常简单,sphinx-quickstart这个工具和一般的博客生成器一样,集成了很多功能,把Makefile都写好了,可以说是完全开箱即用了。
29Sphinx的默认主题是 Alabaster ,现在你看到的这个主题就是在Alabaster上修改而来的。
30Sphinx的文档书写采用的是*.rst格式的文本,即 reStructuredText ,而不是Markdown。相比
31之前,rst比Markdown的语法更加丰富/复杂,同时也提供了更加丰富的功能和可扩展性(虽然我估计我只能用到其中的20%甚至更少啦)。不清楚rst和
32Emacs社区的 Org Mode 相比哪一个的语法更加复杂呢。(
33建设博客离不开几件事情。首先当然就是部署运维啦。Sphinx通过Makefile可以生成静态html网页,托管静态html最方便的地方当然是GitHub Pages啦。
34最简单粗暴的方法是在本地的环境中写完rst文本,然后本地 make html 通过之后,将html推送到GitHub Pages中。但是这种方式的移植性不高,想写
35博客的话必须坐在自己的电脑前,同时依然存在一些手动的工作。所以当然选择Docker啦。但是这次用Docker的姿势和以往不同。平时我们用Docker的时候
36最终都是想要得到docker build的产物docker image,然后由image来进行部署。但是我们这次的目标是GitHub Pages,没法部署容器。所以我在
37Dockerfile中生成静态html网页,然后在构建的过程中将静态网页push到repo的gh-pages分支中。当然其实不用Docker也能做到这一点。写一个脚本,
38然后在CI平台上执行脚本也行,就不做优劣对比了。
39值得一提的是,Docker在17.05-ce版本之后引入了multi stage build的功能,可以在Dockerfile中FROM多个基础镜像,在下一个stage可以直接使用
40之前stage构建出的产物。以我的博客这个项目为例。假如我是想通过image来部署,那么我最终的产物是静态html文件,那么我可能需要一个nginx的基础
41镜像。nginx:alpine 这个基础镜像很小,不到10MB,在Dockerfile里面将html文件COPY进去之后,最终得到的image也只有10MB左右的大小。但是
42之前我们为了得到静态html文件,可能得选用一个python的基础镜像,然后再apt/apk安装一些必要的编译工具,最终只是为了几百kb的html文件,但是
43构建的镜像已经上百MB了。有了multi stage build之后,这个问题便非常好地被解决了。看了下面的Dockerfile之后,整体思路就非常清晰了。目前我
44在本地写完rst文本,然后git push之后,CircleCI会自动进行Dockerfile的构建,然后将编译生成的静态html推送到gh-pages分支。
45
46
47另外一个问题是博客的RSS。由于Sphinx最初的设计是作为一个文档生成工具,目前市面上有的和Sphinx结合的RSS生成工具大致有:
48
49Sphinx-contrib模块中的 feed
50在sphinxcontrib.feed基础上开发的 sphinxfeed
51以及更新一点的 sphinxcontrib-newsfeed
52
53其中sphinxcontrib.feed和sphinxfeed的功能性更新都停止在2011年,不兼容Python 3,GitHub上有几个fork,但是也基本没有太多的改进。至于
54sphinxcontrib-newsfeed,并不能生成符合RSS规范的输出。。。所以只好自己简单粗暴造一个轮子了!(至少生成的xml能被RSS阅读器认识。。。
55RSS 订阅地址是 https://blog.jinwei.me/rss
56至于评论嘛。虽然博客流量小,2017年下来一年也没有10条评论,但是作为一个博客,这个功能还是必须得有!考察了目前市面上的评论方案,Disqus现在
57差不多可以算是一家独大了。但是十分不喜欢Disqus。一个页面要加载的无关的数据太多了。然后看到了 Isso , 第一印象还不错,但是需要自己单独部
58署。为了一年10条评论不到的数量级单独部署似乎成本略高。之前还见到了 Staticman , 但是这个方案和GitHub的issue绑定,一个博客实例对应
59GitHub的一个repo,然后每篇文章的评论对应这个repo中的issue。但是我不太能接受,毕竟不能强制每个评论的用户都有GitHub帐号。
60今天无意中看到了 just-comments , 也是一个SaaS解决方案,但是非常地极简,决定先用着试试效果。(
61下一步,打算在博客中加入 漢字標準格式 这套排版框架。毕竟现在的页面排版看起来怪怪的,以及并不美观。(
62
63
64
65
66
67
68 Powered byPowered byCloudflareCloudflare
69 Hosted onHosted onGitHubGitHub
70
71 Made w/Made w/❤❤
72
73
74 </description>
75 <pubDate>2018-01-15</pubDate>
76 <link>https://blog.jinwei.me/_posts/2018/01/new-blog.html</link>
77 <guid isPermaLink="true">https://blog.jinwei.me/_posts/2018/01/new-blog.html</guid>
78 </item>
79
80 </channel>
81</rss>
diff --git a/search.html b/search.html
new file mode 100644
index 0000000..29b24c9
--- /dev/null
+++ b/search.html
@@ -0,0 +1,110 @@
1
2<!DOCTYPE html>
3
4<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-Hans-CN">
5 <head>
6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7 <title>Search &#8212; Hello World</title>
8 <link rel="stylesheet" href="_static/alagitpull.css" type="text/css" />
9 <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
10 <link rel="stylesheet" href="_static/flexboxgrid.min.css" type="text/css" />
11 <link rel="stylesheet" href="_static/git-pull.css" type="text/css" />
12 <link rel="stylesheet" href="_static/han.min.css" type="text/css" />
13 <script type="text/javascript">
14 var DOCUMENTATION_OPTIONS = {
15 URL_ROOT: './',
16 VERSION: '0.0',
17 COLLAPSE_INDEX: false,
18 FILE_SUFFIX: '.html',
19 HAS_SOURCE: true,
20 SOURCELINK_SUFFIX: '.txt'
21 };
22 </script>
23 <script type="text/javascript" src="_static/jquery.js"></script>
24 <script type="text/javascript" src="_static/underscore.js"></script>
25 <script type="text/javascript" src="_static/doctools.js"></script>
26 <script type="text/javascript" src="_static/searchtools.js"></script>
27 <link rel="shortcut icon" href="_static/favicon.ico"/>
28 <link rel="index" title="Index" href="genindex.html" />
29 <link rel="search" title="Search" href="#" />
30 <script type="text/javascript">
31 jQuery(function() { Search.loadIndex("searchindex.js"); });
32 </script>
33
34 <script type="text/javascript" id="searchindexloader"></script>
35
36
37 <link rel="stylesheet" href="_static/custom.css" type="text/css" />
38
39
40 <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
41
42
43 </head>
44 <body>
45
46
47
48 <div class="document">
49 <div class="documentwrapper">
50 <div class="body" role="main">
51
52 <h1 id="search-documentation">Search</h1>
53 <div id="fallback" class="admonition warning">
54 <script type="text/javascript">$('#fallback').hide();</script>
55 <p>
56 Please activate JavaScript to enable the search
57 functionality.
58 </p>
59 </div>
60 <p>
61 From here you can search these documents. Enter your search
62 words into the box below and click "search". Note that the search
63 function will automatically search for all of the words. Pages
64 containing fewer words won't appear in the result list.
65 </p>
66 <form action="" method="get">
67 <input type="text" name="q" value="" />
68 <input type="submit" value="search" />
69 <span id="search-progress" style="padding-left: 10px"></span>
70 </form>
71
72 <div id="search-results">
73
74 </div>
75
76 <div>
77 <br>
78 <div style="text-align: center; margin: 25px auto 15px;">
79 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="140" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="140" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h75v20H0z"/><path fill="#e05d44" d="M75 0h65v20H75z"/><path fill="url(#b)" d="M0 0h140v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"> <text x="385" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="650">Powered by</text><text x="385" y="140" transform="scale(.1)" textLength="650">Powered by</text><text x="1065" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="550">Cloudflare</text><text x="1065" y="140" transform="scale(.1)" textLength="550">Cloudflare</text></g> </svg>
80 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="112" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="112" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h65v20H0z"/><path fill="#97ca00" d="M65 0h47v20H65z"/><path fill="url(#b)" d="M0 0h112v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"> <text x="335" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="550">Hosted on</text><text x="335" y="140" transform="scale(.1)" textLength="550">Hosted on</text><text x="875" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="370">GitHub</text><text x="875" y="140" transform="scale(.1)" textLength="370">GitHub</text></g> </svg>
81 <br>
82 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="78" height="20"><linearGradient id="b" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="a"><rect width="78" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#a)"><path fill="#555" d="M0 0h57v20H0z"/><path fill="#e05d44" d="M57 0h21v20H57z"/><path fill="url(#b)" d="M0 0h78v20H0z"/></g><g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110"><text x="295" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="470">Made w/</text><text x="295" y="140" transform="scale(.1)" textLength="470">Made w/</text><text x="665" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="110">❤</text><text x="665" y="140" transform="scale(.1)" textLength="110">❤</text></g> </svg>
83 </div>
84 </div>
85 </div>
86 </div>
87 <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
88 <div class="sphinxsidebarwrapper">
89<h1 class="logo"><a href="index.html"></a></h1>
90
91
92
93
94
95
96
97
98<div class="relations">
99<h3>Related Topics</h3>
100<ul>
101 <li><a href="index.html">Documentation overview</a><ul>
102 </ul></li>
103</ul>
104</div>
105 </div>
106 </div>
107 <div class="clearer"></div>
108 </div>
109 </body>
110</html> \ No newline at end of file
diff --git a/searchindex.js b/searchindex.js
new file mode 100644
index 0000000..826364f
--- /dev/null
+++ b/searchindex.js
@@ -0,0 +1 @@
Search.setIndex({docnames:["_posts/2018/01/new-blog","index"],envversion:53,filenames:["_posts/2018/01/new-blog.rst","index.rst"],objects:{},objnames:{},objtypes:{},terms:{"0x1d017d3d":1,"19\u9632\u75ab\u7eaa\u5ff5\u90ae\u7968\u5bf9\u6bd4":1,"2016\u4e00\u5468\u4f53\u9a8c":1,"2017\u5e74\u4e0b\u6765\u4e00\u5e74\u4e5f\u6ca1\u670910\u6761\u8bc4\u8bba":0,"2019\u534a\u5e74\u5ea6\u603b\u7ed3":1,"2019\u5e74\u5ea6\u603b\u7ed3":1,"\u4e00\u4e2a\u535a\u5ba2\u5b9e\u4f8b\u5bf9\u5e94":0,"\u4e00\u4e2a\u8f6f\u4ef6\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u7684\u6587\u6863\u751f\u6210\u5de5\u5177\u6765\u4f5c\u4e3a\u535a\u5ba2\u7684\u9759\u6001\u7f51\u9875\u751f\u6210\u5f15\u64ce":0,"\u4e00\u4e2a\u9875\u9762\u8981\u52a0\u8f7d\u7684\u65e0\u5173\u7684\u6570\u636e\u592a\u591a\u4e86":0,"\u4e0a\u624bsphinx\u975e\u5e38\u7b80\u5355":0,"\u4e0b\u4e00\u6b65":0,"\u4e0d\u517c\u5bb9python":0,"\u4e0d\u518d\u5c34\u5c2c\u7684chromeo":1,"\u4e0d\u523010mb":0,"\u4e0d\u6e05\u695arst\u548c":0,"\u4e3a\u4e86\u4e00\u5e7410\u6761\u8bc4\u8bba\u4e0d\u5230\u7684\u6570\u91cf\u7ea7\u5355\u72ec\u90e8\u7f72\u4f3c\u4e4e\u6210\u672c\u7565\u9ad8":0,"\u4e3a\u4e86\u8ba9\u6392\u7248\u7a0d\u5fae\u7f8e\u89c2\u4e00\u4e9b":0,"\u4e4b\u524d":0,"\u4e4b\u524d\u6211\u4eec\u4e3a\u4e86\u5f97\u5230\u9759\u6001html\u6587\u4ef6":0,"\u4e4b\u524d\u7684\u535a\u5ba2\u67b6\u5728blogger\u4e0a":0,"\u4e4b\u524d\u8fd8\u89c1\u5230\u4e86":0,"\u4e4b\u524dstage\u6784\u5efa\u51fa\u7684\u4ea7\u7269":0,"\u4e5f\u662f\u4e00\u4e2asaas\u89e3\u51b3\u65b9\u6848":0,"\u4e8e\u662f\u5f00\u59cb":0,"\u4eca\u5929\u65e0\u610f\u4e2d\u770b\u5230\u4e86":0,"\u4ece\u5317\u4eac\u5230\u83ab\u65af\u79d1":1,"\u4ee5\u53ca\u5728\u8fd9\u6781\u5c11\u7684\u8bfb\u8005\u4e2d\u6709\u7528":0,"\u4ee5\u53ca\u5e76\u4e0d\u7f8e\u89c2":0,"\u4ee5\u53ca\u66f4\u65b0\u4e00\u70b9\u7684":0,"\u4ee5\u6211\u7684\u535a\u5ba2\u8fd9\u4e2a\u9879\u76ee\u4e3a\u4f8b":0,"\u4f46\u662f":0,"\u4f46\u662f\u4e5f\u57fa\u672c\u6ca1\u6709\u592a\u591a\u7684\u6539\u8fdb":0,"\u4f46\u662f\u4f5c\u4e3a\u4e00\u4e2a\u535a\u5ba2":0,"\u4f46\u662f\u5341\u5206\u4e0d\u559c\u6b22disqu":0,"\u4f46\u662f\u6211\u4e0d\u592a\u80fd\u63a5\u53d7":0,"\u4f46\u662f\u6211\u4eec\u8fd9\u6b21\u7684\u76ee\u6807\u662fgithub":0,"\u4f46\u662f\u65e2\u7136\u8fd8\u6709\u8bfb\u8005":0,"\u4f46\u662f\u8fd9\u4e2a\u65b9\u6848\u548cgithub\u7684issue\u7ed1\u5b9a":0,"\u4f46\u662f\u8fd9\u6b21\u7528docker\u7684\u59ff\u52bf\u548c\u4ee5\u5f80\u4e0d\u540c":0,"\u4f46\u662f\u8fd9\u79cd\u65b9\u5f0f\u7684\u79fb\u690d\u6027\u4e0d\u9ad8":0,"\u4f46\u662f\u9700\u8981\u81ea\u5df1\u5355\u72ec\u90e8":0,"\u4f46\u662f\u975e\u5e38\u5730\u6781\u7b80":0,"\u503c\u5f97\u4e00\u63d0\u7684\u662f":0,"\u5047\u5982\u6211\u662f\u60f3\u901a\u8fc7image\u6765\u90e8\u7f72":0,"\u5165\u624b":1,"\u5176\u4e2dsphinxcontrib":0,"\u5199\u4e00\u4e2a\u811a\u672c":0,"\u51b3\u5b9a\u5148\u7528\u7740\u8bd5\u8bd5\u6548\u679c":0,"\u5220\u9664\u4e00\u4e2a\u4e92\u8054\u7f51\u5e10\u53f7\u6709\u591a\u96be":1,"\u524d\u6bb5\u65f6\u95f4\u65e0\u610f\u4e2d\u770b\u5230\u4e00\u4e2a\u535a\u5ba2":0,"\u524d\u6bb5\u65f6\u95f4\u6709\u670b\u53cb\u548c\u6211\u62b1\u6028\u535a\u5ba2\u52a0\u8f7d\u901f\u5ea6\u592a\u6162\u4e86":0,"\u52a0\u8f7d\u4e86\u8bb8\u591a\u5916\u90e8\u7684":0,"\u535a\u5ba2\u7684\u8bdd\u5fc5\u987b\u5750\u5728\u81ea\u5df1\u7684\u7535\u8111\u524d":0,"\u5373":0,"\u53e6\u5916\u4e00\u4e2a\u95ee\u9898\u662f\u535a\u5ba2\u7684rss":0,"\u53ef\u4ee5\u5728dockerfile\u4e2dfrom\u591a\u4e2a\u57fa\u7840\u955c\u50cf":0,"\u53ef\u4ee5\u8bf4\u662f\u5b8c\u5168\u5f00\u7bb1\u5373\u7528\u4e86":0,"\u53ef\u80fd\u5f97\u9009\u7528\u4e00\u4e2apython\u7684\u57fa\u7840\u955c\u50cf":0,"\u540c\u65f6\u4e5f\u63d0\u4f9b\u4e86\u66f4\u52a0\u4e30\u5bcc\u7684\u529f\u80fd\u548c\u53ef\u6269\u5c55\u6027":0,"\u540c\u65f6\u4f9d\u7136\u5b58\u5728\u4e00\u4e9b\u624b\u52a8\u7684\u5de5\u4f5c":0,"\u57282019\u5e74\u5b89\u88c5docker\u662f\u600e\u6837\u4e00\u79cd\u4f53\u9a8c":1,"\u5728\u4e0b\u4e00\u4e2astage\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528":0,"\u5728\u672c\u5730\u5199\u5b8crst\u6587\u672c":0,"\u5728\u770b":0,"\u5728dockerfile\u91cc\u9762\u5c06html\u6587\u4ef6copy\u8fdb\u53bb\u4e4b\u540e":0,"\u5728sphinxcontrib":0,"\u590d\u6742":0,"\u5927\u540d\u9f0e\u9f0e":0,"\u5b89\u5229\u597d\u7528\u7684\u90ae\u4ef6\u670d\u52a1\u4e4bfastmail":1,"\u5bfc\u81f4\u7f51\u9875\u8f7d\u5165\u901f\u5ea6\u975e\u5e38\u6162":0,"\u5c06html\u63a8\u9001\u5230github":0,"\u5c11\u7684\u53ef\u601c":0,"\u5c31\u4e0d\u505a\u4f18\u52a3\u5bf9\u6bd4\u4e86":0,"\u5dee\u4e0d\u591a\u53ef\u4ee5\u7b97\u662f\u4e00\u5bb6\u72ec\u5927\u4e86":0,"\u5e73\u65f6\u6211\u4eec\u7528docker\u7684\u65f6\u5019":0,"\u5e76\u4e0d\u80fd\u751f\u6210\u7b26\u5408rss\u89c4\u8303\u7684\u8f93\u51fa":0,"\u5efa\u8bbe\u535a\u5ba2\u79bb\u4e0d\u5f00\u51e0\u4ef6\u4e8b\u60c5":0,"\u5f53\u7136\u5176\u5b9e\u4e0d\u7528docker\u4e5f\u80fd\u505a\u5230\u8fd9\u4e00\u70b9":0,"\u60f3\u5199":0,"\u6211\u4e0eingress\u76841545\u5929":1,"\u6211\u7684\u5927\u5b66":1,"\u6237\u63d0\u51fa\u4e86\u8fd9\u4e2a\u95ee\u9898":0,"\u6240\u4ee5\u53ea\u597d\u81ea\u5df1\u7b80\u5355\u7c97\u66b4\u9020\u4e00\u4e2a\u8f6e\u5b50\u4e86":0,"\u6240\u4ee5\u5f53\u7136\u9009\u62e9docker\u5566":0,"\u6240\u4ee5\u6211\u5728":0,"\u6253\u7b97\u5728\u535a\u5ba2\u4e2d\u52a0\u5165":0,"\u6258\u7ba1\u9759\u6001html\u6700\u65b9\u4fbf\u7684\u5730\u65b9\u5f53\u7136\u662fgithub":0,"\u627e\u4e86\u4e00\u4e2a\u7b2c\u4e09\u65b9\u7684\u4e3b\u9898":0,"\u628amakefile\u90fd\u5199\u597d\u4e86":0,"\u6574\u4f53\u601d\u8def\u5c31\u975e\u5e38\u6e05\u6670\u4e86":0,"\u6697\u901a\u9053\u5148\u9a8c\u56fe\u50cf\u53bb\u96fe\u7684\u5927\u6c14\u5149\u6821\u9a8c\u548c\u5149\u6655\u6d88\u9664":1,"\u6700\u7b80\u5355\u7c97\u66b4\u7684\u65b9\u6cd5\u662f\u5728\u672c\u5730\u7684\u73af\u5883\u4e2d\u5199\u5b8crst\u6587\u672c":0,"\u6700\u7ec8\u53ea\u662f\u4e3a\u4e86\u51e0\u767ekb\u7684html\u6587\u4ef6":0,"\u6700\u7ec8\u5f97\u5230\u7684image\u4e5f\u53ea\u670910mb\u5de6\u53f3\u7684\u5927\u5c0f":0,"\u6700\u7ec8\u90fd\u662f\u60f3\u8981\u5f97\u5230docker":0,"\u6709\u4e86multi":0,"\u672c\u7db2\u9801\u57fa\u65bc\u570b\u5bb6\u6cd5\u5f8b\u800c\u5c01\u9396":1,"\u6784\u5efa\u7684\u955c\u50cf\u5df2\u7ecf\u4e0a\u767emb\u4e86":0,"\u6bd5\u7adf\u4e0d\u80fd\u5f3a\u5236\u6bcf\u4e2a\u8bc4\u8bba\u7684\u7528\u6237\u90fd\u6709github\u5e10\u53f7":0,"\u6bd5\u7adf\u73b0\u5728\u7684\u9875\u9762\u6392\u7248\u770b\u8d77\u6765\u602a\u602a\u7684":0,"\u6ca1\u6cd5\u90e8\u7f72\u5bb9\u5668":0,"\u6ce8\u9500":1,"\u6f22\u5b57\u6a19\u6e96\u683c\u5f0f":0,"\u7136\u540e\u518dapt":0,"\u7136\u540e\u5728\u6784\u5efa\u7684\u8fc7\u7a0b\u4e2d\u5c06\u9759\u6001\u7f51\u9875push\u5230repo\u7684gh":0,"\u7136\u540e\u5728ci\u5e73\u53f0\u4e0a\u6267\u884c\u811a\u672c\u4e5f\u884c":0,"\u7136\u540e\u5c06\u7f16\u8bd1\u751f\u6210\u7684\u9759\u6001html\u63a8\u9001\u5230gh":0,"\u7136\u540e\u672c\u5730":0,"\u7136\u540e\u6bcf\u7bc7\u6587\u7ae0\u7684\u8bc4\u8bba\u5bf9\u5e94\u8fd9\u4e2arepo\u4e2d\u7684issu":0,"\u7136\u540e\u7531image\u6765\u8fdb\u884c\u90e8\u7f72":0,"\u7136\u540e\u770b\u5230\u4e86":0,"\u7136\u540egit":0,"\u7231\u6c99\u5c3c\u4e9a\u7535\u5b50\u516c\u6c11\u4e0d\u5b8c\u5168\u6307\u5357":1,"\u73b0\u5728\u4f60\u770b\u5230\u7684\u8fd9\u4e2a\u4e3b\u9898\u5c31\u662f\u5728alabaster\u4e0a\u4fee\u6539\u800c\u6765\u7684":0,"\u751a\u81f3\u66f4\u5c11\u5566":0,"\u7531\u4e8esphinx\u6700\u521d\u7684\u8bbe\u8ba1\u662f\u4f5c\u4e3a\u4e00\u4e2a\u6587\u6863\u751f\u6210\u5de5\u5177":0,"\u7684":0,"\u76ee\u524d\u5e02\u9762\u4e0a\u6709\u7684\u548csphinx\u7ed3\u5408\u7684rss\u751f\u6210\u5de5\u5177\u5927\u81f4\u6709":0,"\u76ee\u524d\u6211":0,"\u76f8\u6bd4":0,"\u76f8\u6bd4\u54ea\u4e00\u4e2a\u7684\u8bed\u6cd5\u66f4\u52a0\u590d\u6742\u5462":0,"\u770b\u4e86\u4e0b\u9762\u7684dockerfile\u4e4b\u540e":0,"\u7740\u624b\u6539\u9020\u81ea\u5df1\u7684\u535a\u5ba2":0,"\u7b2c\u4e00\u5370\u8c61\u8fd8\u4e0d\u9519":0,"\u7cfb\u5217":1,"\u7f72":0,"\u8003\u5bdf\u4e86\u76ee\u524d\u5e02\u9762\u4e0a\u7684\u8bc4\u8bba\u65b9\u6848":0,"\u800c\u4e0d\u662fmarkdown":0,"\u81f3\u4e8e":0,"\u81f3\u4e8e\u8bc4\u8bba\u561b":0,"\u81f3\u5c11\u751f\u6210\u7684xml\u80fd\u88abrss\u9605\u8bfb\u5668\u8ba4\u8bc6":0,"\u867d\u7136\u535a\u5ba2\u6d41\u91cf\u5c0f":0,"\u867d\u7136\u6211\u4f30\u8ba1\u6211\u53ea\u80fd\u7528\u5230\u5176\u4e2d\u768420":0,"\u867d\u7136\u6211\u81ea\u5df1\u5bf9\u4e8e\u7f51\u7ad9\u5728\u56fd\u5185\u7684\u52a0\u8f7d\u901f\u5ea6\u6beb\u4e0d\u5728\u610f":0,"\u89c2\u5f71\u8bb0\u5f55":1,"\u89c9\u5f97\u4e3b\u9898\u7b80\u6d01\u800c\u53c8\u7f8e\u89c2":0,"\u8ba2\u9605\u5730\u5740\u662f":0,"\u8d44\u6e90":0,"\u8fd9\u4e2a\u529f\u80fd\u8fd8\u662f\u5fc5\u987b\u5f97\u6709":0,"\u8fd9\u4e2a\u57fa\u7840\u955c\u50cf\u5f88\u5c0f":0,"\u8fd9\u4e2a\u95ee\u9898\u4fbf\u975e\u5e38\u597d\u5730\u88ab\u89e3\u51b3\u4e86":0,"\u8fd9\u5217\u706b\u8f66":1,"\u8fd9\u5957\u6392\u7248\u6846\u67b6":0,"\u8fd9\u6b21\u7528\u4e86":0,"\u901a\u8fc7\u4e4b\u540e":0,"\u90a3\u4e48\u6211\u53ef\u80fd\u9700\u8981\u4e00\u4e2anginx\u7684\u57fa\u7840":0,"\u90a3\u4e48\u6211\u6700\u7ec8\u7684\u4ea7\u7269\u662f\u9759\u6001html\u6587\u4ef6":0,"\u90a3\u5c31\u5f97\u89e3\u51b3":0,"\u955c\u50cf":0,"\u96c6\u6210\u4e86\u5f88\u591a\u529f\u80fd":0,"\u9996\u5148\u5f53\u7136\u5c31\u662f\u90e8\u7f72\u8fd0\u7ef4\u5566":0,"apk\u5b89\u88c5\u4e00\u4e9b\u5fc5\u8981\u7684\u7f16\u8bd1\u5de5\u5177":0,"build\u4e4b\u540e":0,"build\u7684\u4ea7\u7269dock":0,"build\u7684\u529f\u80fd":0,"ce\u7248\u672c\u4e4b\u540e\u5f15\u5165\u4e86multi":0,"circleci\u4f1a\u81ea\u52a8\u8fdb\u884cdockerfile\u7684\u6784\u5efa":0,"contrib\u6a21\u5757\u4e2d\u7684":0,"disqus\u73b0\u5728":0,"docker\u572817":0,"dockerfile\u4e2d\u751f\u6210\u9759\u6001html\u7f51\u9875":0,"emacs\u793e\u533a\u7684":0,"feed\u548csphinxfeed\u7684\u529f\u80fd\u6027\u66f4\u65b0\u90fd\u505c\u6b62\u57282011\u5e74":0,"feed\u57fa\u7840\u4e0a\u5f00\u53d1\u7684":0,"github\u4e0a\u6709\u51e0\u4e2afork":0,"github\u7684\u4e00\u4e2arepo":0,"pages\u4e2d":0,"pages\u5206\u652f":0,"pages\u5206\u652f\u4e2d":0,"pages\u5566":0,"push\u4e4b\u540e":0,"quickstart\u8fd9\u4e2a\u5de5\u5177\u548c\u4e00\u822c\u7684\u535a\u5ba2\u751f\u6210\u5668\u4e00\u6837":0,"rst\u683c\u5f0f\u7684\u6587\u672c":0,"rst\u6bd4markdown\u7684\u8bed\u6cd5\u66f4\u52a0\u4e30\u5bcc":0,"sphinx\u7684\u6587\u6863\u4e66\u5199\u91c7\u7528\u7684\u662f":0,"sphinx\u7684\u9ed8\u8ba4\u4e3b\u9898\u662f":0,"sphinx\u901a\u8fc7makefile\u53ef\u4ee5\u751f\u6210\u9759\u6001html\u7f51\u9875":0,"xt1085\u5237cm\u6307\u5357":1,One:1,The:1,_clarkzjw:1,alabast:0,algorithm:1,all:1,alpin:0,amateur:1,april:1,august:1,base:1,beij:1,bg5dhm:1,bilingu:1,billion:1,birth:1,blog:0,boinc:1,both:1,brainfuck:1,calcul:1,channel:1,clarkzjw:1,com:1,comment:0,commun:1,content:1,covid:1,current:1,dark:1,date:0,debian:1,decemb:1,dehaz:1,devic:1,differ:1,dmz:1,docker:1,dream:1,engin:1,english:1,episod:1,error:1,estonian:1,etc:1,experi:1,feed:0,feel:1,filter:1,free:1,freedom:1,from:1,git:0,github:1,golang:1,grid:1,hamer:1,have:1,home:1,html:0,http:[0,1],imag:[0,1],implement:1,includ:1,infin:1,ingress:1,inspir:1,interpret:1,isso:0,jan:1,jinwei:[0,1],juli:1,june:1,just:0,justjji:1,keybas:1,korean:1,late:1,leachim6:1,licens:1,like:1,macbook:1,mail:1,make:0,mandarin:1,march:1,mode:0,moscow:1,moto:1,nativ:1,newsfe:0,nginx:0,octob:1,one:1,openstack:1,org:0,origin:1,page:0,pgp:1,physic:1,pixel:1,plausibl:1,prior:1,pro:1,profession:1,profici:1,program:1,publish:0,pull:0,python:1,raspberri:1,realityon:1,recent:1,resid:1,resist:1,restructuredtext:0,right:1,rss:0,sakeven:1,septemb:1,seti:1,shall:1,side:1,simpl:1,site:1,softwar:1,speech:1,sphinx:0,sphinxcontrib:0,sphinxfe:0,stage:0,staticman:0,strai:1,sum:1,support:1,take:1,telegram:1,textur:1,thi:1,think:1,three:1,train:1,travel:1,twitter:1,two:1,under:1,usdweekli:1,user:1,uucki:1,vim:1,visit:1,volunt:1,wonderland:1,work:1,yubikei:1},titles:["\u53c8\u4e00\u4e2a\u65b0\u7684\u535a\u5ba2","Hello World"],titleterms:{"\u53c8\u4e00\u4e2a\u65b0\u7684\u535a\u5ba2":0,"public":1,about:1,around:1,code:1,contact:1,credit:1,hello:1,languag:1,link:1,other:1,skill:1,updat:1,web:1,world:1}}) \ No newline at end of file
Powered by cgit v1.2.3 (git 2.41.0)