-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathatom.xml
294 lines (150 loc) · 127 KB
/
atom.xml
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>WENZENG BLOG</title>
<subtitle>学海无涯 学无止境</subtitle>
<link href="/atom.xml" rel="self"/>
<link href="http://www.vnnznn.cn/"/>
<updated>2020-07-10T19:23:06.138Z</updated>
<id>http://www.vnnznn.cn/</id>
<author>
<name>anwenzen</name>
</author>
<generator uri="https://hexo.io/">Hexo</generator>
<entry>
<title>1005 继续(3n+1)猜想 (25分)</title>
<link href="http://www.vnnznn.cn/2020/07/11/1005-ji-xu-3n-1-cai-xiang-25-fen/"/>
<id>http://www.vnnznn.cn/2020/07/11/1005-ji-xu-3n-1-cai-xiang-25-fen/</id>
<published>2020-07-10T19:20:55.000Z</published>
<updated>2020-07-10T19:23:06.138Z</updated>
<content type="html"><![CDATA[<h2 id="卡拉兹-Callatz-猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。"><a href="#卡拉兹-Callatz-猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。" class="headerlink" title=" 卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。"></a><center> 卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。</center></h2><p>当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对 n=3 进行验证的时候,我们需要计算 3、5、8、4、2、1,则当我们对 n=5、8、4、2 进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这 4 个数已经在验证3的时候遇到过了,我们称 5、8、4、2 是被 3“覆盖”的数。我们称一个数列中的某个数 n 为“关键数”,如果 n 不能被数列中的其他数字所覆盖。</p><p>现在给定一系列待验证的数字,我们只需要验证其中的几个关键数,就可以不必再重复验证余下的数字。你的任务就是找出这些关键数字,并按从大到小的顺序输出它们。</p><p>输入格式:<br>每个测试输入包含 1 个测试用例,第 1 行给出一个正整数 K (<100),第 2 行给出 K 个互不相同的待验证的正整数 n (1<n≤100)的值,数字间用空格隔开。</p><p>输出格式:<br>每个测试用例的输出占一行,按从大到小的顺序输出关键数字。数字间用 1 个空格隔开,但一行中最后一个数字后没有空格。</p><p>输入样例:</p><pre><code>63 5 6 7 8 11</code></pre><p>输出样例:</p><pre><code>7 6</code></pre><h2 id="我的代码:"><a href="#我的代码:" class="headerlink" title="我的代码:"></a>我的代码:</h2><pre class="line-numbers language-python"><code class="language-python"><span class="token comment" spellcheck="true"># 1005</span>input<span class="token punctuation">(</span><span class="token punctuation">)</span>l <span class="token operator">=</span> <span class="token punctuation">[</span>int<span class="token punctuation">(</span>i<span class="token punctuation">)</span> <span class="token keyword">for</span> i <span class="token keyword">in</span> input<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">]</span>d <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token punctuation">}</span><span class="token keyword">for</span> i <span class="token keyword">in</span> l<span class="token punctuation">:</span> d<span class="token punctuation">[</span>f<span class="token string">'{i}'</span><span class="token punctuation">]</span><span class="token operator">=</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token keyword">for</span> k <span class="token keyword">in</span> l<span class="token punctuation">:</span> i <span class="token operator">=</span> k <span class="token keyword">while</span> i<span class="token operator">!=</span><span class="token number">1</span><span class="token punctuation">:</span> <span class="token keyword">if</span> i<span class="token operator">%</span><span class="token number">2</span><span class="token operator">==</span><span class="token number">1</span><span class="token punctuation">:</span> i <span class="token operator">=</span> int<span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token number">3</span><span class="token operator">*</span>i<span class="token operator">+</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token operator">/</span><span class="token number">2</span><span class="token punctuation">)</span> d<span class="token punctuation">[</span>f<span class="token string">'{k}'</span><span class="token punctuation">]</span><span class="token punctuation">.</span>append<span class="token punctuation">(</span>i<span class="token punctuation">)</span> <span class="token keyword">if</span> i<span class="token operator">%</span><span class="token number">2</span><span class="token operator">==</span><span class="token number">0</span><span class="token punctuation">:</span> i <span class="token operator">=</span> int<span class="token punctuation">(</span>i<span class="token operator">/</span><span class="token number">2</span><span class="token punctuation">)</span> d<span class="token punctuation">[</span>f<span class="token string">'{k}'</span><span class="token punctuation">]</span><span class="token punctuation">.</span>append<span class="token punctuation">(</span>i<span class="token punctuation">)</span>ans <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token keyword">for</span> i <span class="token keyword">in</span> l<span class="token punctuation">:</span> check <span class="token operator">=</span> <span class="token boolean">False</span> <span class="token keyword">for</span> j <span class="token keyword">in</span> d<span class="token punctuation">:</span> <span class="token keyword">if</span> i <span class="token keyword">in</span> d<span class="token punctuation">[</span>f<span class="token string">'{j}'</span><span class="token punctuation">]</span><span class="token punctuation">:</span> check <span class="token operator">=</span> <span class="token boolean">True</span> <span class="token keyword">break</span> <span class="token keyword">if</span> <span class="token operator">not</span> check<span class="token punctuation">:</span> ans<span class="token punctuation">.</span>append<span class="token punctuation">(</span>i<span class="token punctuation">)</span>ans <span class="token operator">=</span> <span class="token punctuation">[</span>str<span class="token punctuation">(</span>i<span class="token punctuation">)</span> <span class="token keyword">for</span> i <span class="token keyword">in</span> sorted<span class="token punctuation">(</span>ans<span class="token punctuation">,</span>reverse<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">' '</span><span class="token punctuation">.</span>join<span class="token punctuation">(</span>ans<span class="token punctuation">)</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<h2 id="卡拉兹-Callatz-猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。"><a href="#卡拉兹-Callatz-猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。" class="headerlink" title=" 卡拉兹
</summary>
<category term="PAT (Basic Level) Practice (中文)" scheme="http://www.vnnznn.cn/tags/PAT-Basic-Level-Practice-%EF%BC%88%E4%B8%AD%E6%96%87%EF%BC%89/"/>
</entry>
<entry>
<title>1004 成绩排名 (20分)</title>
<link href="http://www.vnnznn.cn/2020/07/11/1004-cheng-ji-pai-ming-20-fen/"/>
<id>http://www.vnnznn.cn/2020/07/11/1004-cheng-ji-pai-ming-20-fen/</id>
<published>2020-07-10T19:17:04.000Z</published>
<updated>2020-07-10T19:20:32.608Z</updated>
<content type="html"><![CDATA[<h2 id="1004-成绩排名-20分"><a href="#1004-成绩排名-20分" class="headerlink" title=" 1004 成绩排名 (20分)"></a><center> 1004 成绩排名 (20分)</center></h2><p>读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。</p><p>输入格式:<br>每个测试输入包含 1 个测试用例,格式为</p><pre><code>第 1 行:正整数 n第 2 行:第 1 个学生的姓名 学号 成绩第 3 行:第 2 个学生的姓名 学号 成绩 ... ... ...第 n+1 行:第 n 个学生的姓名 学号 成绩</code></pre><p>其中<code>姓名</code>和<code>学号</code>均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。</p><p>输出格式:<br>对每个测试用例输出 2 行,第 1 行是成绩最高学生的姓名和学号,第 2 行是成绩最低学生的姓名和学号,字符串间有 1 空格。</p><p>输入样例:</p><pre><code>3Joe Math990112 89Mike CS991301 100Mary EE990830 95</code></pre><p>输出样例:</p><pre><code>Mike CS991301Joe Math990112</code></pre><h2 id="我的代码"><a href="#我的代码" class="headerlink" title="我的代码:"></a>我的代码:</h2><pre class="line-numbers language-python"><code class="language-python"><span class="token comment" spellcheck="true"># 1004 </span>n <span class="token operator">=</span> int<span class="token punctuation">(</span>input<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>mm <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token keyword">for</span> i <span class="token keyword">in</span> range<span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token punctuation">:</span> m <span class="token operator">=</span> input<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">' '</span><span class="token punctuation">)</span> mm<span class="token punctuation">.</span>append<span class="token punctuation">(</span><span class="token punctuation">[</span>m<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">,</span>m<span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">,</span>int<span class="token punctuation">(</span>m<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token punctuation">)</span>max <span class="token operator">=</span> mm<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span>min <span class="token operator">=</span> mm<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token keyword">for</span> i <span class="token keyword">in</span> mm<span class="token punctuation">:</span> <span class="token keyword">if</span> i<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span> <span class="token operator">>=</span> max<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">:</span> max <span class="token operator">=</span> i <span class="token keyword">if</span> i<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span> <span class="token operator"><=</span> min<span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">:</span> min <span class="token operator">=</span> i<span class="token keyword">print</span><span class="token punctuation">(</span>f<span class="token string">"{max[0]} {max[1]}"</span><span class="token punctuation">)</span><span class="token keyword">print</span><span class="token punctuation">(</span>f<span class="token string">"{min[0]} {min[1]}"</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<h2 id="1004-成绩排名-20分"><a href="#1004-成绩排名-20分" class="headerlink" title=" 1004 成绩排名 (20分)"></a><center> 1004 成绩排名 (20分)</center></h2><p>读入
</summary>
<category term="PAT (Basic Level) Practice (中文)" scheme="http://www.vnnznn.cn/tags/PAT-Basic-Level-Practice-%EF%BC%88%E4%B8%AD%E6%96%87%EF%BC%89/"/>
</entry>
<entry>
<title>1003 我要通过! (20分)</title>
<link href="http://www.vnnznn.cn/2020/07/11/1003-wo-yao-tong-guo-20-fen/"/>
<id>http://www.vnnznn.cn/2020/07/11/1003-wo-yao-tong-guo-20-fen/</id>
<published>2020-07-10T19:07:15.000Z</published>
<updated>2020-07-10T19:17:23.436Z</updated>
<content type="html"><![CDATA[<h2 id="1003-我要通过!-20分"><a href="#1003-我要通过!-20分" class="headerlink" title=" 1003 我要通过! (20分)"></a><center> 1003 我要通过! (20分)</center></h2><p>“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。</p><p>得到“答案正确”的条件是:</p><p>字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;<br>任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;<br>如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a、 b、 c 均或者是空字符串,或者是仅由字母 A 组成的字符串。<br>现在就请你为 PAT 写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。</p><p>输入格式:<br>每个测试输入包含 1 个测试用例。第 1 行给出一个正整数 n (<10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过 100,且不包含空格。</p><p>输出格式:<br>每个字符串的检测结果占一行,如果该字符串可以获得“答案正确”,则输出 YES,否则输出 NO。</p><p>输入样例:</p><pre><code>8PATPAATAAPATAAAAPAATAAAAxPATxPTWhateverAPAAATAA</code></pre><p>输出样例:</p><pre><code>YESYESYESYESNONONONO</code></pre><h2 id="我的代码:"><a href="#我的代码:" class="headerlink" title="我的代码:"></a>我的代码:</h2><pre class="line-numbers language-python"><code class="language-python"><span class="token comment" spellcheck="true"># 1003 no perfect</span><span class="token keyword">import</span> ren <span class="token operator">=</span> int<span class="token punctuation">(</span>input<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token number">0</span><span class="token operator"><</span>n<span class="token operator"><</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">:</span> s <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token keyword">for</span> i <span class="token keyword">in</span> range<span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span> m <span class="token operator">=</span> input<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">if</span> <span class="token string">' '</span> <span class="token keyword">in</span> m <span class="token operator">or</span> len<span class="token punctuation">(</span>m<span class="token punctuation">)</span><span class="token operator">==</span><span class="token number">0</span> <span class="token operator">or</span> len<span class="token punctuation">(</span>m<span class="token punctuation">)</span><span class="token operator">></span> <span class="token number">100</span><span class="token punctuation">:</span> <span class="token keyword">continue</span> s<span class="token punctuation">.</span>append<span class="token punctuation">(</span>m<span class="token punctuation">)</span> <span class="token keyword">break</span> <span class="token keyword">for</span> i <span class="token keyword">in</span> s<span class="token punctuation">:</span> <span class="token keyword">if</span> re<span class="token punctuation">.</span>search<span class="token punctuation">(</span>r<span class="token string">"A*PA+TA*"</span><span class="token punctuation">,</span> i<span class="token punctuation">)</span> <span class="token operator">!=</span> None<span class="token punctuation">:</span> <span class="token keyword">if</span> re<span class="token punctuation">.</span>search<span class="token punctuation">(</span>r<span class="token string">"[^A]+PA+T[^A]+"</span><span class="token punctuation">,</span>i<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"NO"</span><span class="token punctuation">)</span> <span class="token keyword">continue</span> <span class="token keyword">if</span> len<span class="token punctuation">(</span>re<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">'P|T'</span><span class="token punctuation">,</span>i<span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token operator">*</span>len<span class="token punctuation">(</span>re<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">'P|T'</span><span class="token punctuation">,</span>i<span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token operator">==</span> len<span class="token punctuation">(</span>re<span class="token punctuation">.</span>split<span class="token punctuation">(</span><span class="token string">'P|T'</span><span class="token punctuation">,</span>i<span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"YES"</span><span class="token punctuation">)</span> <span class="token keyword">else</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"NO"</span><span class="token punctuation">)</span> <span class="token keyword">else</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"NO"</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<h2 id="1003-我要通过!-20分"><a href="#1003-我要通过!-20分" class="headerlink" title=" 1003 我要通过! (20分)"></a><center> 1003 我要通过! (20分)</center></h2><p
</summary>
<category term="PAT (Basic Level) Practice (中文)" scheme="http://www.vnnznn.cn/tags/PAT-Basic-Level-Practice-%EF%BC%88%E4%B8%AD%E6%96%87%EF%BC%89/"/>
</entry>
<entry>
<title>1002 写出这个数 (20分)</title>
<link href="http://www.vnnznn.cn/2020/07/11/1002-xie-chu-zhe-ge-shu-20-fen/"/>
<id>http://www.vnnznn.cn/2020/07/11/1002-xie-chu-zhe-ge-shu-20-fen/</id>
<published>2020-07-10T19:04:23.000Z</published>
<updated>2020-07-10T19:16:02.425Z</updated>
<content type="html"><![CDATA[<h2 id="1002-写出这个数-20分"><a href="#1002-写出这个数-20分" class="headerlink" title=" 1002 写出这个数 (20分)"></a><center> 1002 写出这个数 (20分)</center></h2><p>读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。</p><p>输入格式:<br>每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10<br>100<br> 。</p><p>输出格式:<br>在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。</p><p>输入样例: </p><pre><code>1234567890987654321123456789</code></pre><p>输出样例:</p><pre><code>yi san wu</code></pre><h2 id="我的代码:"><a href="#我的代码:" class="headerlink" title="我的代码:"></a>我的代码:</h2><pre class="line-numbers language-python"><code class="language-python"><span class="token comment" spellcheck="true"># 1002</span>n <span class="token operator">=</span>input<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token keyword">if</span> <span class="token number">0</span><span class="token operator"><</span>int<span class="token punctuation">(</span>n<span class="token punctuation">)</span><span class="token operator"><</span><span class="token number">10</span><span class="token operator">**</span><span class="token number">100</span><span class="token punctuation">:</span> sum <span class="token operator">=</span> <span class="token number">0</span> <span class="token keyword">for</span> i <span class="token keyword">in</span> n<span class="token punctuation">:</span> sum <span class="token operator">+=</span> int<span class="token punctuation">(</span>i<span class="token punctuation">)</span> <span class="token keyword">for</span> i<span class="token punctuation">,</span>j <span class="token keyword">in</span> zip<span class="token punctuation">(</span>str<span class="token punctuation">(</span>sum<span class="token punctuation">)</span><span class="token punctuation">,</span>range<span class="token punctuation">(</span>len<span class="token punctuation">(</span>str<span class="token punctuation">(</span>sum<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">if</span> i <span class="token operator">==</span> <span class="token string">'1'</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'yi'</span><span class="token punctuation">,</span>end<span class="token operator">=</span><span class="token string">''</span><span class="token punctuation">)</span> <span class="token keyword">if</span> i <span class="token operator">==</span> <span class="token string">'2'</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'er'</span><span class="token punctuation">,</span>end<span class="token operator">=</span><span class="token string">''</span><span class="token punctuation">)</span> <span class="token keyword">if</span> i <span class="token operator">==</span> <span class="token string">'3'</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'san'</span><span class="token punctuation">,</span>end<span class="token operator">=</span><span class="token string">''</span><span class="token punctuation">)</span> <span class="token keyword">if</span> i <span class="token operator">==</span> <span class="token string">'4'</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'si'</span><span class="token punctuation">,</span>end<span class="token operator">=</span><span class="token string">''</span><span class="token punctuation">)</span> <span class="token keyword">if</span> i <span class="token operator">==</span> <span class="token string">'5'</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'wu'</span><span class="token punctuation">,</span>end<span class="token operator">=</span><span class="token string">''</span><span class="token punctuation">)</span> <span class="token keyword">if</span> i <span class="token operator">==</span> <span class="token string">'6'</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'liu'</span><span class="token punctuation">,</span>end<span class="token operator">=</span><span class="token string">''</span><span class="token punctuation">)</span> <span class="token keyword">if</span> i <span class="token operator">==</span> <span class="token string">'7'</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'qi'</span><span class="token punctuation">,</span>end<span class="token operator">=</span><span class="token string">''</span><span class="token punctuation">)</span> <span class="token keyword">if</span> i <span class="token operator">==</span> <span class="token string">'8'</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'ba'</span><span class="token punctuation">,</span>end<span class="token operator">=</span><span class="token string">''</span><span class="token punctuation">)</span> <span class="token keyword">if</span> i <span class="token operator">==</span> <span class="token string">'9'</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'jiu'</span><span class="token punctuation">,</span>end<span class="token operator">=</span><span class="token string">''</span><span class="token punctuation">)</span> <span class="token keyword">if</span> i <span class="token operator">==</span> <span class="token string">'0'</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'ling'</span><span class="token punctuation">,</span>end<span class="token operator">=</span><span class="token string">''</span><span class="token punctuation">)</span> <span class="token keyword">if</span> j <span class="token operator">==</span> len<span class="token punctuation">(</span>str<span class="token punctuation">(</span>sum<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">:</span> <span class="token keyword">break</span> <span class="token keyword">else</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">" "</span><span class="token punctuation">,</span>end<span class="token operator">=</span><span class="token string">''</span><span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<h2 id="1002-写出这个数-20分"><a href="#1002-写出这个数-20分" class="headerlink" title=" 1002 写出这个数 (20分)"></a><center> 1002 写出这个数 (20分)</center></h2><p
</summary>
<category term="PAT (Basic Level) Practice (中文)" scheme="http://www.vnnznn.cn/tags/PAT-Basic-Level-Practice-%EF%BC%88%E4%B8%AD%E6%96%87%EF%BC%89/"/>
</entry>
<entry>
<title>1001 害死人不偿命的(3n+1)猜想 (15分)</title>
<link href="http://www.vnnznn.cn/2020/07/11/1001-hai-si-ren-bu-chang-ming-de-3n-1-cai-xiang-15-fen/"/>
<id>http://www.vnnznn.cn/2020/07/11/1001-hai-si-ren-bu-chang-ming-de-3n-1-cai-xiang-15-fen/</id>
<published>2020-07-10T18:56:41.000Z</published>
<updated>2020-07-10T19:16:21.115Z</updated>
<content type="html"><![CDATA[<h2 id="1001-害死人不偿命的-3n-1-猜想-15分"><a href="#1001-害死人不偿命的-3n-1-猜想-15分" class="headerlink" title=" 1001 害死人不偿命的(3n+1)猜想 (15分) "></a><center> 1001 害死人不偿命的(3n+1)猜想 (15分) </center></h2><p>卡拉兹(Callatz)猜想:</p><p>对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……</p><p>我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过 1000 的正整数 n,简单地数一下,需要多少步(砍几下)才能得到 n=1?</p><p>输入格式:<br>每个测试输入包含 1 个测试用例,即给出正整数 n 的值。</p><p>输出格式:<br>输出从 n 计算到 1 需要的步数。</p><p>输入样例: </p><pre><code>3</code></pre><p>输出样例: </p><pre><code>5</code></pre><h2 id="我的代码:"><a href="#我的代码:" class="headerlink" title="我的代码:"></a>我的代码:</h2><pre class="line-numbers language-python"><code class="language-python"><span class="token comment" spellcheck="true"># 1001</span>n <span class="token operator">=</span> int<span class="token punctuation">(</span>input<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>sum <span class="token operator">=</span> <span class="token number">0</span><span class="token keyword">while</span> n <span class="token operator">!=</span> <span class="token number">1</span><span class="token punctuation">:</span> <span class="token keyword">if</span> n<span class="token operator">%</span><span class="token number">2</span> <span class="token operator">==</span> <span class="token number">1</span><span class="token punctuation">:</span> n <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token number">3</span><span class="token operator">*</span>n <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token operator">/</span><span class="token number">2</span> <span class="token keyword">else</span><span class="token punctuation">:</span> n <span class="token operator">=</span> n<span class="token operator">/</span><span class="token number">2</span> sum <span class="token operator">+=</span> <span class="token number">1</span><span class="token keyword">print</span><span class="token punctuation">(</span>sum<span class="token punctuation">)</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<h2 id="1001-害死人不偿命的-3n-1-猜想-15分"><a href="#1001-害死人不偿命的-3n-1-猜想-15分" class="headerlink" title=" 1001 害死人不偿命的(3n+1)猜想 (15分) "></a><center> 1
</summary>
<category term="PAT (Basic Level) Practice (中文)" scheme="http://www.vnnznn.cn/tags/PAT-Basic-Level-Practice-%EF%BC%88%E4%B8%AD%E6%96%87%EF%BC%89/"/>
</entry>
<entry>
<title>socket/端口扫描</title>
<link href="http://www.vnnznn.cn/2020/04/25/socket-duan-kou-sao-miao/"/>
<id>http://www.vnnznn.cn/2020/04/25/socket-duan-kou-sao-miao/</id>
<published>2020-04-25T11:56:20.000Z</published>
<updated>2020-04-27T12:10:53.000Z</updated>
<content type="html"><![CDATA[<pre><code>原理:利用socket回话,只连接耳不收发任何信息</code></pre><pre class="line-numbers language-Python"><code class="language-Python">from socket import *def scan(host,port): try: soc = socket((host,port)) soc.connect() print(f"the port {host} is open")if __name__ == '__main__': host = input("enter a ipv4 address: ") for port in range(2**16): scan(host,port) print("scan done")<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<pre><code>原理:利用socket回话,只连接耳不收发任何信息</code></pre><pre class="line-numbers language-Python"><code class="language-Python">from socket import
</summary>
<category term="Python" scheme="http://www.vnnznn.cn/tags/Python/"/>
</entry>
<entry>
<title>Adobe Premiere/Final cut pro去除视频的黑边</title>
<link href="http://www.vnnznn.cn/2020/04/23/adobe-premiere-final-cut-pro-qu-chu-shi-pin-de-hei-bian/"/>
<id>http://www.vnnznn.cn/2020/04/23/adobe-premiere-final-cut-pro-qu-chu-shi-pin-de-hei-bian/</id>
<published>2020-04-23T12:10:02.000Z</published>
<updated>2020-08-16T11:43:18.932Z</updated>
<content type="html"><![CDATA[<h2 id="Adobe-Premiere"><a href="#Adobe-Premiere" class="headerlink" title="Adobe Premiere"></a>Adobe Premiere</h2><h4 id="1-建好项目后直接导出"><a href="#1-建好项目后直接导出" class="headerlink" title="1.建好项目后直接导出"></a>1.建好项目后直接导出</h4><p><img src="/medias/featureimages/MyPicture/pr1.png" alt="第一步"> </p><h4 id="2-按图所示裁剪后-直接导出即可"><a href="#2-按图所示裁剪后-直接导出即可" class="headerlink" title="2.按图所示裁剪后,直接导出即可"></a>2.按图所示裁剪后,直接导出即可</h4><p><img src="/medias/featureimages/MyPicture/pr2.png" alt="第二步"> </p><h2 id="Final-Cut-Pro"><a href="#Final-Cut-Pro" class="headerlink" title="Final Cut Pro"></a>Final Cut Pro</h2><h4 id="1-建好资源库后-找出原视频的分辨率-如图所示为-1280x720"><a href="#1-建好资源库后-找出原视频的分辨率-如图所示为-1280x720" class="headerlink" title="1.建好资源库后,找出原视频的分辨率,如图所示为 1280x720"></a>1.建好资源库后,找出原视频的分辨率,如图所示为 1280x720</h4><p><img src="/medias/featureimages/MyPicture/fcpx1.png" alt="第一步"></p><h4 id="2-随便建一个项目-按图所示-通过裁剪-找到需要裁剪的大小-记好它"><a href="#2-随便建一个项目-按图所示-通过裁剪-找到需要裁剪的大小-记好它" class="headerlink" title="2.随便建一个项目,按图所示,通过裁剪,找到需要裁剪的大小,记好它"></a>2.随便建一个项目,按图所示,通过裁剪,找到需要裁剪的大小,记好它</h4><p><img src="/medias/featureimages/MyPicture/fcpx2.png" alt="第二步"></p><h4 id="3-再新建一个项目-确保分辨率为你要裁剪后的分辨率"><a href="#3-再新建一个项目-确保分辨率为你要裁剪后的分辨率" class="headerlink" title="3.再新建一个项目,确保分辨率为你要裁剪后的分辨率"></a>3.再新建一个项目,确保分辨率为你要裁剪后的分辨率</h4><p><img src="/medias/featureimages/MyPicture/fcpx3.png" alt="第三步"></p><h4 id="4-在新项目里面-重复一下第二步的操作-然后点击完成按钮"><a href="#4-在新项目里面-重复一下第二步的操作-然后点击完成按钮" class="headerlink" title="4.在新项目里面,重复一下第二步的操作,然后点击完成按钮"></a>4.在新项目里面,重复一下第二步的操作,然后点击完成按钮</h4><p><img src="/medias/featureimages/MyPicture/fcpx4.png" alt="第四步"></p><h4 id="5-最后选好你的导出类型-导出即可"><a href="#5-最后选好你的导出类型-导出即可" class="headerlink" title="5.最后选好你的导出类型,导出即可"></a>5.最后选好你的导出类型,导出即可</h4><p><img src="/medias/featureimages/MyPicture/fcpx6.png" alt="第五步"> </p><p><img src="/medias/featureimages/MyPicture/fcpx5.png" alt="这是没有点击完成按钮"> </p><blockquote><blockquote><p>简单吧😊🤗😎</p></blockquote></blockquote><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<h2 id="Adobe-Premiere"><a href="#Adobe-Premiere" class="headerlink" title="Adobe Premiere"></a>Adobe Premiere</h2><h4 id="1-建好项目后直接导出"><a h
</summary>
<category term="Adobe Premiere" scheme="http://www.vnnznn.cn/tags/Adobe-Premiere/"/>
<category term="Final cut pro" scheme="http://www.vnnznn.cn/tags/Final-cut-pro/"/>
</entry>
<entry>
<title>vps 时间同步</title>
<link href="http://www.vnnznn.cn/2020/03/23/vps-shi-jian-tong-bu/"/>
<id>http://www.vnnznn.cn/2020/03/23/vps-shi-jian-tong-bu/</id>
<published>2020-03-23T06:02:15.000Z</published>
<updated>2020-04-27T13:57:19.000Z</updated>
<content type="html"><![CDATA[<h3 id="vps-时间同步"><a href="#vps-时间同步" class="headerlink" title="vps 时间同步"></a><center>vps 时间同步</center></h3><p>有的奸商把<code>ntpdate</code>的端口屏蔽了,还故意改硬件的时间,导致每次重启时间都会错误,导致无法时间同步,但办法还是有的<br>利于跟<code>ntpdate</code>相似的的工具<code>rdate</code>来同步就好了</p><pre class="line-numbers language-bash"><code class="language-bash">$ apt <span class="token function">install</span> rdate <span class="token comment" spellcheck="true"># 安装rdate</span>$ rdate time-b.timefreq.bldrdoc.gov <span class="token comment" spellcheck="true"># 获取服务器时间</span>$ rdate -s time-b.timefreq.bldrdoc.gov <span class="token comment" spellcheck="true"># 同步</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><blockquote><p>将其加入<code>/etc/rc.local</code>达到开启自动同步时间<br>果你的系统没有<code>rdate</code>, 如<code>Centos 8</code>那就得手动设置了</p></blockquote><blockquote><p>下面是一些NTP时间服务器,看看哪一个你有用</p></blockquote><pre class="line-numbers language-yaml"><code class="language-yaml">cn.ntp.org.cnhk.ntp.org.cntw.ntp.org.cnus.ntp.org.cnsgp.ntp.org.cnkr.ntp.org.cnjp.ntp.org.cnde.ntp.org.cnina.ntp.org.cntime.nist.govtime<span class="token punctuation">-</span>b.nist.govrdate.darkorb.nettime<span class="token punctuation">-</span>b.timefreq.bldrdoc.gov<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<h3 id="vps-时间同步"><a href="#vps-时间同步" class="headerlink" title="vps 时间同步"></a><center>vps 时间同步</center></h3><p>有的奸商把<code>ntpdate</code>的端口屏
</summary>
<category term="other" scheme="http://www.vnnznn.cn/categories/other/"/>
</entry>
<entry>
<title>debian 9 - nginx 配置学习笔记</title>
<link href="http://www.vnnznn.cn/2020/03/21/debian-9-nginx-pei-zhi-xue-xi-bi-ji/"/>
<id>http://www.vnnznn.cn/2020/03/21/debian-9-nginx-pei-zhi-xue-xi-bi-ji/</id>
<published>2020-03-20T16:53:31.000Z</published>
<updated>2020-04-27T13:09:36.000Z</updated>
<content type="html"><![CDATA[<h2 id="debian-9-nginx-配置学习笔记"><a href="#debian-9-nginx-配置学习笔记" class="headerlink" title="debian 9 - nginx 配置学习笔记"></a>debian 9 - nginx 配置学习笔记</h2><pre class="line-numbers language-bash"><code class="language-bash">$ apt update$ apt <span class="token function">install</span> nginx<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><blockquote><p>这样就安装好了nginx,但是<code>版本</code>不一定是你想要的<br>这时直接访问80端口就看到nginx欢迎页面了<br>默认的配置文件<code>/etc/nginx/sites-enabled/default</code><br><img src="/medias/featureimages/MyPicture/ngnix.png" alt="呐,这就完事了"></p></blockquote><p>配置nginx</p><pre class="line-numbers language-bash"><code class="language-bash">$ vim /etc/nginx/sites-enabled/default <span class="token comment" spellcheck="true"># 修改默认的配置或者删掉</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><blockquote><p>若是删掉,则在<code>/etc/nginx/conf.d/</code>下新增 <code>.conf</code>文件,内容大致如下</p></blockquote><pre class="line-numbers language-config"><code class="language-config">server { listen 80; server_name www.vnnznn.cn; rewrite ^(.*) https://$server_name$1 permanent;}server { listen 443 ssl http2; server_name www.vnnznn.cn; charset utf-8; ssl_protocols TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_ecdh_curve secp384r1; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_session_tickets off; ssl_certificate www.vnnznn.cn.crt; ssl_certificate_key www.vnnznn.cn.key; access_log /var/log/nginx/www.vnnznn.cn.access.log; error_log /var/log/nginx/www.vnnznn.cn.error.log; root /usr/share/nginx; location / { index index.html; } location /venn/zenn { proxy_redirect off; proxy_pass http://127.0.0.1:28935; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><blockquote><p>免费证书申请: <a href="https://letsencrypt.org/zh-cn/getting-started/" target="_blank" rel="noopener">let’s encrypt</a><br>nginx拓展<a href="www.pcre.org">PCRE(Perl Compatible Regular Expressions)</a>,<a href="https://www.php.net" target="_blank" rel="noopener">PHP</a></p></blockquote><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<h2 id="debian-9-nginx-配置学习笔记"><a href="#debian-9-nginx-配置学习笔记" class="headerlink" title="debian 9 - nginx 配置学习笔记"></a>debian 9 - nginx 配置学习
</summary>
<category term="other" scheme="http://www.vnnznn.cn/categories/other/"/>
<category term="nginx" scheme="http://www.vnnznn.cn/tags/nginx/"/>
</entry>
<entry>
<title>Debian 9 - caddy - hexo 博客搭建</title>
<link href="http://www.vnnznn.cn/2020/03/10/debian-9-caddy-hexo-bo-ke-da-jian/"/>
<id>http://www.vnnznn.cn/2020/03/10/debian-9-caddy-hexo-bo-ke-da-jian/</id>
<published>2020-03-10T15:23:42.000Z</published>
<updated>2020-08-16T11:43:22.507Z</updated>
<content type="html"><![CDATA[<h2 id="服务器安装caddy"><a href="#服务器安装caddy" class="headerlink" title="服务器安装caddy"></a>服务器安装caddy</h2><p>在 Debian9 中安装caddy,可以一键安装,也从下载页面下载<a href="https://dengxiaolong.com/caddy/doc/download.html" target="_blank" rel="noopener">caddy</a></p><pre class="line-numbers language-bash"><code class="language-bash">$ curl https://getcaddy.com <span class="token operator">|</span> <span class="token function">bash</span> -s personalsystem/<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>安装好后,在<code>/etc/caddy/</code>下创建一个<code>Caddyfile</code> 文件,然后编辑它</p><pre class="line-numbers language-bash"><code class="language-bash">$ vim /etc/caddy/Caddyfile<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>输入配置,参考<a href="https://dengxiaolong.com/caddy/zh/" target="_blank" rel="noopener">caddy中文帮助文档</a></p><pre class="line-numbers language-bash"><code class="language-bash">vnnznn.cn www.vnnznn.cn <span class="token punctuation">{</span> root /root/website <span class="token comment" spellcheck="true"># 服务器根目录</span> <span class="token function">gzip</span> <span class="token comment" spellcheck="true"># 如果浏览器支持,开启gzip压缩</span> timeouts none <span class="token comment" spellcheck="true"># proxy / 127.0.0.1:4000 {</span> <span class="token comment" spellcheck="true"># without /venn</span> <span class="token comment" spellcheck="true"># websocket</span> <span class="token comment" spellcheck="true"># }</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>配置完成后,启动caddy<br>caddy常用命令</p><pre class="line-numbers language-bash"><code class="language-bash">$ <span class="token function">sudo</span> systemctl daemon-reload$ <span class="token function">sudo</span> systemctl <span class="token function">enable</span> caddy$ <span class="token function">sudo</span> systemctl start caddy$ caddy -conf /etc/caddy/Caddyfile <span class="token comment" spellcheck="true"># 启动并指定配置文件</span>$ systemctl start caddy.service <span class="token comment" spellcheck="true"># 启动caddy</span>$ systemctl restart caddy.service <span class="token comment" spellcheck="true"># 重启caddy</span>$ systemctl stop caddy.service <span class="token comment" spellcheck="true"># 停止</span>$ systemctl <span class="token function">enable</span> caddy.service <span class="token comment" spellcheck="true"># 开机自启</span>$ systemctl disable caddy.service <span class="token comment" spellcheck="true"># 禁止开机自启</span>$ <span class="token function">netstat</span> -tnlp <span class="token operator">|</span> <span class="token function">grep</span> :443 <span class="token comment" spellcheck="true"># 查看443端口占用情况</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="安装Git及配置仓库"><a href="#安装Git及配置仓库" class="headerlink" title="安装Git及配置仓库"></a>安装Git及配置仓库</h3><p>主要目的是让个人的电脑可以通过ssh方式将我们的博客部署到服务器上。操作如下:<br>安装git:</p><pre class="line-numbers language-bash"><code class="language-bash">$ apt <span class="token function">install</span> <span class="token function">git</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>生成公钥密钥文件,一直会车,不输任何信息</p><pre class="line-numbers language-bash"><code class="language-bash">$ ssh-keygen<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>此时在目录下就会有两个文件,分别是<br><code>id_rsa</code>(私钥) 和 <code>id_rsa.pub</code>(公钥) </p><p>然后在<code>自己的电脑上</code>,使用ssh方式连接我们的云服务器</p><pre class="line-numbers language-bash"><code class="language-bash">$ ssh-keygen$ <span class="token function">scp</span> ~/.ssh/id_rsa.pub root@服务器ip地址:~ <span class="token comment" spellcheck="true"># 将自己电脑的公钥复制服务器上</span>$ <span class="token function">ssh</span> root@服务器ip地址 <span class="token comment" spellcheck="true"># 登录到服务器</span>$ <span class="token function">cat</span> ~/id_rsa.pub <span class="token operator">>></span> ~/.ssh/authorized_keys <span class="token comment" spellcheck="true"># 这一步是让以后的每次部署都不需要在输入密码了</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span></span></code></pre><p>成功后,我们直接创建一个git的仓库,并且新建一个post-receive文件,操作如下:</p><pre class="line-numbers language-bash"><code class="language-bash">$ <span class="token function">cd</span> ~$ <span class="token function">git</span> init --bare blog.git$ <span class="token keyword">echo</span> <span class="token string">"git --work-tree=/root/website --git-dir=/root/blog.git checkout -f"</span> <span class="token operator">>></span> ~/blog.git/hooks/post-receive<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><p>前面的路径为部署路径 ,后面的路径为仓库的路径<br>post-receive会在收到push请求完成后执行 <a href="https://git-scm.com/book/zh/v2/%E8%87%AA%E5%AE%9A%E4%B9%89-Git-Git-%E9%92%A9%E5%AD%90" target="_blank" rel="noopener">更多信息</a><br>授予该文件可执行权限 </p><pre class="line-numbers language-bash"><code class="language-bash">$ <span class="token function">chmod</span> +x ~/blog.git/hooks/post-receive<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>创建<code>/root/website</code></p><pre class="line-numbers language-bash"><code class="language-bash">$ <span class="token function">mkdir</span> /root/website<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>至此就完成了所有关于服务器端的配置</p><blockquote><p>如果是root用户,难免出现一些不方便<br>所以新建一个用户来可能更方便一点<br>以新建一个git用户为例</p></blockquote><pre class="line-numbers language-bash"><code class="language-bash">$ adduser <span class="token function">git</span> <span class="token comment" spellcheck="true"># 添加一个</span>$ <span class="token function">chmod</span> -R o+r+w /home/website <span class="token comment" spellcheck="true"># 给读写权限</span>$ <span class="token function">chmod</span> -R o+x+w /home/website <span class="token comment" spellcheck="true"># 给执行权限</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><h2 id="本地安装hexo"><a href="#本地安装hexo" class="headerlink" title="本地安装hexo"></a>本地安装hexo</h2><p>注意hexo需要git以及node</p><h3 id="安装nvm"><a href="#安装nvm" class="headerlink" title="安装nvm"></a>安装nvm</h3><p>nvm是node版本管理工具<br>为了解决node各种版本存在不兼容现象<br>nvm是让你在同一台机器上安装和切换不同版本的node的工具<br>Debian9默认源的node只有一个,不推荐使用系统安装的,推荐使用nvm版本管理器, <a href="https://github.com/nvm-sh/nvm.git" target="_blank" rel="noopener">一键安装nvm</a></p><pre class="line-numbers language-bash"><code class="language-bash">$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh <span class="token operator">|</span> <span class="token function">bash</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>或者</p><pre class="line-numbers language-bash"><code class="language-bash">$ <span class="token function">wget</span> -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh <span class="token operator">|</span> <span class="token function">bash</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>安装完成后,需要<code>重启bash</code>才能生效,查看nvm版本</p><pre class="line-numbers language-bash"><code class="language-bash">$ nvm --version<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h3 id="安装node"><a href="#安装node" class="headerlink" title="安装node"></a>安装node</h3><p>安装nvm后开始安装node,安装node最新稳定版</p><pre class="line-numbers language-bash"><code class="language-bash">$ nvm <span class="token function">install</span> stable<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>通过<code>nvm list</code> 列出已安装的版本</p><h3 id="安装hexo"><a href="#安装hexo" class="headerlink" title="安装hexo"></a>安装hexo</h3><p><a href="https://hexo.io/zh-cn/" target="_blank" rel="noopener">可以参考hexo官网</a></p><pre class="line-numbers language-bash"><code class="language-bash">$ <span class="token function">npm</span> <span class="token function">install</span> hexo-cli -g$ hexo init blog <span class="token comment" spellcheck="true"># 生成一个名为blog的博客目录</span>$ <span class="token function">cd</span> blog$ <span class="token function">npm</span> <span class="token function">install</span> <span class="token comment" spellcheck="true"># 初始化博客目录</span>$ hexo clean <span class="token comment" spellcheck="true"># 清除缓存</span>$ hexo generate <span class="token comment" spellcheck="true"># 生成静态文件</span>$ hexo server -p 4000 <span class="token comment" spellcheck="true"># 启动web服务,默认端口也是4000</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>至此,服务器搭建完成了,每次更换主题后一定要通过<code>hexo clean</code>清除缓存,否侧很容易发生各种各样的bug<br>修改blog目录下的<code>_config.yml</code>文件,找到deploy配置修改如下</p><pre class="line-numbers language-yaml"><code class="language-yaml"><span class="token key atrule">deploy</span><span class="token punctuation">:</span> <span class="token key atrule">type</span><span class="token punctuation">:</span> git <span class="token key atrule">repo</span><span class="token punctuation">:</span> root@服务器IP地址<span class="token punctuation">:</span>/root/blog.git <span class="token key atrule">branch</span><span class="token punctuation">:</span> master<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span></span></code></pre><p>也可以一次行部署到多个仓库,例如同时部署到<code>服务器</code>和<code>GitHub</code>:</p><pre class="line-numbers language-yaml"><code class="language-yaml"><span class="token key atrule">deploy</span><span class="token punctuation">:</span> <span class="token key atrule">type</span><span class="token punctuation">:</span> git <span class="token key atrule">repo</span><span class="token punctuation">:</span> <span class="token key atrule">github</span><span class="token punctuation">:</span> [email protected]<span class="token punctuation">:</span>Vnzen/vnzen.github.io.git <span class="token key atrule">vnnznn</span><span class="token punctuation">:</span> root@服务器IP地址<span class="token punctuation">:</span>/root/blog.git <span class="token key atrule">branch</span><span class="token punctuation">:</span> master<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>再给GitHub仓库添加<code>自己电脑</code>的公钥,就可以了:<code>Settings</code> -> <code>Deploy keys</code> -> <code>add deploy key</code></p><h3 id="部署到服务器上"><a href="#部署到服务器上" class="headerlink" title="部署到服务器上"></a>部署到服务器上</h3><pre class="line-numbers language-bash"><code class="language-bash">$ <span class="token function">npm</span> <span class="token function">install</span> hexo-deployer-git --save <span class="token comment" spellcheck="true"># 安装部署所需的插件</span>$ hexo clean <span class="token operator">&&</span> hexo generate --deploy <span class="token comment" spellcheck="true"># 部署到指定的deploy上</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span></span></code></pre><p>当看到下面的例子时,远程就部署完成了<br><img src="/medias/featureimages/MyPicture/git_bushu.png" alt="部署成功,皆大欢喜"></p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<h2 id="服务器安装caddy"><a href="#服务器安装caddy" class="headerlink" title="服务器安装caddy"></a>服务器安装caddy</h2><p>在 Debian9 中安装caddy,可以一键安装,也从下载页面下载<a h
</summary>
<category term="other" scheme="http://www.vnnznn.cn/categories/other/"/>
<category term="Debian9" scheme="http://www.vnnznn.cn/tags/Debian9/"/>
<category term="caddy" scheme="http://www.vnnznn.cn/tags/caddy/"/>
<category term="hexo" scheme="http://www.vnnznn.cn/tags/hexo/"/>
</entry>
<entry>
<title>模版测试二</title>
<link href="http://www.vnnznn.cn/2020/03/10/mo-ban-ce-shi-er/"/>
<id>http://www.vnnznn.cn/2020/03/10/mo-ban-ce-shi-er/</id>
<published>2020-03-10T13:35:45.000Z</published>
<updated>2020-03-20T19:59:21.000Z</updated>
<content type="html"><![CDATA[<h1 id="hexo-theme-matery"><a href="#hexo-theme-matery" class="headerlink" title="hexo-theme-matery"></a>hexo-theme-matery</h1><blockquote><p>这是一个采用 <code>Material Design</code> 和响应式设计的 Hexo 博客主题。</p></blockquote><h2 id="特性"><a href="#特性" class="headerlink" title="特性"></a>特性</h2><ul><li>简单漂亮,文章内容美观易读</li><li><a href="https://material.io/" target="_blank" rel="noopener">Material Design</a> 设计</li><li>响应式设计,博客在桌面端、平板、手机等设备上均能很好的展现</li><li>首页轮播文章及每天动态切换 <code>Banner</code> 图片</li><li>瀑布流式的博客文章列表(文章无特色图片时会有 <code>24</code> 张漂亮的图片代替)</li><li>时间轴式的归档页</li><li><strong>词云</strong>的标签页和<strong>雷达图</strong>的分类页</li><li>丰富的关于我页面(包括关于我、文章统计图、我的项目、我的技能、相册等)</li><li>可自定义的数据的友情链接页面</li><li>支持文章置顶和文章打赏</li><li>支持 <code>MathJax</code></li><li><code>TOC</code> 目录</li><li>可设置复制文章内容时追加版权信息</li><li>可设置阅读文章时做密码验证</li><li><a href="https://gitalk.github.io/" target="_blank" rel="noopener">Gitalk</a>、<a href="https://imsun.github.io/gitment/" target="_blank" rel="noopener">Gitment</a>、<a href="https://valine.js.org/" target="_blank" rel="noopener">Valine</a> 和 <a href="https://disqus.com/" target="_blank" rel="noopener">Disqus</a> 评论模块(推荐使用 <code>Gitalk</code>)</li><li>集成了<a href="http://busuanzi.ibruce.info/" target="_blank" rel="noopener">不蒜子统计</a>、谷歌分析(<code>Google Analytics</code>)和文章字数统计等功能</li><li>支持在首页的音乐播放和视频播放功能</li><li>支持<code>emoji</code>表情,用<code>markdown emoji</code>语法书写直接生成对应的能<strong>跳跃</strong>的表情。</li><li>支持 <a href="http://www.daovoice.io/" target="_blank" rel="noopener">DaoVoice</a>、<a href="https://www.tidio.com/" target="_blank" rel="noopener">Tidio</a> 在线聊天功能。</li></ul><h2 id="贡献者"><a href="#贡献者" class="headerlink" title="贡献者"></a>贡献者</h2><p>感谢下面列出的贡献者,没有他们,hexo-theme-matery 不会这么完美。</p><ul><li><a href="https://github.com/HarborZeng" target="_blank" rel="noopener">@HarborZeng</a></li><li><a href="https://github.com/shw2018" target="_blank" rel="noopener">@shw2018</a></li><li><a href="https://github.com/L1cardo" target="_blank" rel="noopener">@L1cardo</a></li><li><a href="https://github.com/Five-great" target="_blank" rel="noopener">@Five-great</a></li></ul><h2 id="下载"><a href="#下载" class="headerlink" title="下载"></a>下载</h2><p>当你看到这里的时候,应该已经有一个自己的 <a href="https://hexo.io/zh-cn/" target="_blank" rel="noopener">Hexo</a> 博客了。如果还没有的话,不妨使用 Hexo 和 <a href="https://www.appinn.com/markdown/" target="_blank" rel="noopener">Markdown</a> 来写博客和文章。</p><p>点击 <a href="https://codeload.github.com/blinkfox/hexo-theme-matery/zip/master" target="_blank" rel="noopener">这里</a> 下载 <code>master</code> 分支的最新稳定版的代码,解压缩后,将 <code>hexo-theme-matery</code> 的文件夹复制到你 Hexo 的 <code>themes</code> 文件夹中即可。</p><p>当然你也可以在你的 <code>themes</code> 文件夹下使用 <code>Git clone</code> 命令来下载:</p><pre class="line-numbers language-bash"><code class="language-bash"><span class="token function">git</span> clone https://github.com/blinkfox/hexo-theme-matery.git<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><h2 id="配置"><a href="#配置" class="headerlink" title="配置"></a>配置</h2><h3 id="切换主题"><a href="#切换主题" class="headerlink" title="切换主题"></a>切换主题</h3><p>修改 Hexo 根目录下的 <code>_config.yml</code> 的 <code>theme</code> 的值:<code>theme: hexo-theme-matery</code></p><h4 id="config-yml-文件的其它修改建议"><a href="#config-yml-文件的其它修改建议" class="headerlink" title="_config.yml 文件的其它修改建议:"></a><code>_config.yml</code> 文件的其它修改建议:</h4><ul><li>请修改 <code>_config.yml</code> 的 <code>url</code> 的值为你的网站主 <code>URL</code>(如:<code>http://xxx.github.io</code>)。</li><li>建议修改两个 <code>per_page</code> 的分页条数值为 <code>6</code> 的倍数,如:<code>12</code>、<code>18</code> 等,这样文章列表在各个屏幕下都能较好的显示。</li><li>如果你是中文用户,则建议修改 <code>language</code> 的值为 <code>zh-CN</code>。</li></ul><h3 id="新建分类-categories-页"><a href="#新建分类-categories-页" class="headerlink" title="新建分类 categories 页"></a>新建分类 categories 页</h3><p><code>categories</code> 页是用来展示所有分类的页面,如果在你的博客 <code>source</code> 目录下还没有 <code>categories/index.md</code> 文件,那么你就需要新建一个,命令如下:</p><pre class="line-numbers language-bash"><code class="language-bash">hexo new page <span class="token string">"categories"</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>编辑你刚刚新建的页面文件 <code>/source/categories/index.md</code>,至少需要以下内容:</p><pre class="line-numbers language-yaml"><code class="language-yaml"><span class="token punctuation">---</span><span class="token key atrule">title</span><span class="token punctuation">:</span> categories<span class="token key atrule">date</span><span class="token punctuation">:</span> <span class="token datetime number">2018-09-30 17:25:30</span><span class="token key atrule">type</span><span class="token punctuation">:</span> <span class="token string">"categories"</span><span class="token key atrule">layout</span><span class="token punctuation">:</span> <span class="token string">"categories"</span><span class="token punctuation">---</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="新建标签-tags-页"><a href="#新建标签-tags-页" class="headerlink" title="新建标签 tags 页"></a>新建标签 tags 页</h3><p><code>tags</code> 页是用来展示所有标签的页面,如果在你的博客 <code>source</code> 目录下还没有 <code>tags/index.md</code> 文件,那么你就需要新建一个,命令如下:</p><pre class="line-numbers language-bash"><code class="language-bash">hexo new page <span class="token string">"tags"</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>编辑你刚刚新建的页面文件 <code>/source/tags/index.md</code>,至少需要以下内容:</p><pre class="line-numbers language-yaml"><code class="language-yaml"><span class="token punctuation">---</span><span class="token key atrule">title</span><span class="token punctuation">:</span> tags<span class="token key atrule">date</span><span class="token punctuation">:</span> <span class="token datetime number">2018-09-30 18:23:38</span><span class="token key atrule">type</span><span class="token punctuation">:</span> <span class="token string">"tags"</span><span class="token key atrule">layout</span><span class="token punctuation">:</span> <span class="token string">"tags"</span><span class="token punctuation">---</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="新建关于我-about-页"><a href="#新建关于我-about-页" class="headerlink" title="新建关于我 about 页"></a>新建关于我 about 页</h3><p><code>about</code> 页是用来展示<strong>关于我和我的博客</strong>信息的页面,如果在你的博客 <code>source</code> 目录下还没有 <code>about/index.md</code> 文件,那么你就需要新建一个,命令如下:</p><pre class="line-numbers language-bash"><code class="language-bash">hexo new page <span class="token string">"about"</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>编辑你刚刚新建的页面文件 <code>/source/about/index.md</code>,至少需要以下内容:</p><pre class="line-numbers language-yaml"><code class="language-yaml"><span class="token punctuation">---</span><span class="token key atrule">title</span><span class="token punctuation">:</span> about<span class="token key atrule">date</span><span class="token punctuation">:</span> <span class="token datetime number">2018-09-30 17:25:30</span><span class="token key atrule">type</span><span class="token punctuation">:</span> <span class="token string">"about"</span><span class="token key atrule">layout</span><span class="token punctuation">:</span> <span class="token string">"about"</span><span class="token punctuation">---</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="新建留言板-contact-页(可选的)"><a href="#新建留言板-contact-页(可选的)" class="headerlink" title="新建留言板 contact 页(可选的)"></a>新建留言板 contact 页(可选的)</h3><p><code>contact</code> 页是用来展示<strong>留言板</strong>信息的页面,如果在你的博客 <code>source</code> 目录下还没有 <code>contact/index.md</code> 文件,那么你就需要新建一个,命令如下:</p><pre class="line-numbers language-bash"><code class="language-bash">hexo new page <span class="token string">"contact"</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>编辑你刚刚新建的页面文件 <code>/source/contact/index.md</code>,至少需要以下内容:</p><pre class="line-numbers language-yaml"><code class="language-yaml"><span class="token punctuation">---</span><span class="token key atrule">title</span><span class="token punctuation">:</span> contact<span class="token key atrule">date</span><span class="token punctuation">:</span> <span class="token datetime number">2018-09-30 17:25:30</span><span class="token key atrule">type</span><span class="token punctuation">:</span> <span class="token string">"contact"</span><span class="token key atrule">layout</span><span class="token punctuation">:</span> <span class="token string">"contact"</span><span class="token punctuation">---</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><blockquote><p><strong>注</strong>:本留言板功能依赖于第三方评论系统,请<strong>激活</strong>你的评论系统才有效果。并且在主题的 <code>_config.yml</code> 文件中,第 <code>19</code> 至 <code>21</code> 行的“<strong>菜单</strong>”配置,取消关于留言板的注释即可。</p></blockquote><h3 id="新建友情链接-friends-页(可选的)"><a href="#新建友情链接-friends-页(可选的)" class="headerlink" title="新建友情链接 friends 页(可选的)"></a>新建友情链接 friends 页(可选的)</h3><p><code>friends</code> 页是用来展示<strong>友情链接</strong>信息的页面,如果在你的博客 <code>source</code> 目录下还没有 <code>friends/index.md</code> 文件,那么你就需要新建一个,命令如下:</p><pre class="line-numbers language-bash"><code class="language-bash">hexo new page <span class="token string">"friends"</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>编辑你刚刚新建的页面文件 <code>/source/friends/index.md</code>,至少需要以下内容:</p><pre class="line-numbers language-yaml"><code class="language-yaml"><span class="token punctuation">---</span><span class="token key atrule">title</span><span class="token punctuation">:</span> friends<span class="token key atrule">date</span><span class="token punctuation">:</span> <span class="token datetime number">2018-12-12 21:25:30</span><span class="token key atrule">type</span><span class="token punctuation">:</span> <span class="token string">"friends"</span><span class="token key atrule">layout</span><span class="token punctuation">:</span> <span class="token string">"friends"</span><span class="token punctuation">---</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>同时,在你的博客 <code>source</code> 目录下新建 <code>_data</code> 目录,在 <code>_data</code> 目录中新建 <code>friends.json</code> 文件,文件内容如下所示:</p><pre class="line-numbers language-json"><code class="language-json"><span class="token punctuation">[</span><span class="token punctuation">{</span> <span class="token property">"avatar"</span><span class="token operator">:</span> <span class="token string">"http://image.luokangyuan.com/1_qq_27922023.jpg"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"码酱"</span><span class="token punctuation">,</span> <span class="token property">"introduction"</span><span class="token operator">:</span> <span class="token string">"我不是大佬,只是在追寻大佬的脚步"</span><span class="token punctuation">,</span> <span class="token property">"url"</span><span class="token operator">:</span> <span class="token string">"http://luokangyuan.com/"</span><span class="token punctuation">,</span> <span class="token property">"title"</span><span class="token operator">:</span> <span class="token string">"前去学习"</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token property">"avatar"</span><span class="token operator">:</span> <span class="token string">"http://image.luokangyuan.com/4027734.jpeg"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"闪烁之狐"</span><span class="token punctuation">,</span> <span class="token property">"introduction"</span><span class="token operator">:</span> <span class="token string">"编程界大佬,技术牛,人还特别好,不懂的都可以请教大佬"</span><span class="token punctuation">,</span> <span class="token property">"url"</span><span class="token operator">:</span> <span class="token string">"https://blinkfox.github.io/"</span><span class="token punctuation">,</span> <span class="token property">"title"</span><span class="token operator">:</span> <span class="token string">"前去学习"</span><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token property">"avatar"</span><span class="token operator">:</span> <span class="token string">"http://image.luokangyuan.com/avatar.jpg"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"ja_rome"</span><span class="token punctuation">,</span> <span class="token property">"introduction"</span><span class="token operator">:</span> <span class="token string">"平凡的脚步也可以走出伟大的行程"</span><span class="token punctuation">,</span> <span class="token property">"url"</span><span class="token operator">:</span> <span class="token string">"https://me.csdn.net/jlh912008548"</span><span class="token punctuation">,</span> <span class="token property">"title"</span><span class="token operator">:</span> <span class="token string">"前去学习"</span><span class="token punctuation">}</span><span class="token punctuation">]</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="菜单导航配置"><a href="#菜单导航配置" class="headerlink" title="菜单导航配置"></a>菜单导航配置</h3><h4 id="配置基本菜单导航的名称、路径url和图标icon"><a href="#配置基本菜单导航的名称、路径url和图标icon" class="headerlink" title="配置基本菜单导航的名称、路径url和图标icon."></a>配置基本菜单导航的名称、路径url和图标icon.</h4><p>1.菜单导航名称可以是中文也可以是英文(如:<code>Index</code>或<code>主页</code>)<br>2.图标icon 可以在<a href="https://fontawesome.com/icons" target="_blank" rel="noopener">Font Awesome</a> 中查找 </p><pre class="line-numbers language-yaml"><code class="language-yaml"><span class="token key atrule">menu</span><span class="token punctuation">:</span> <span class="token key atrule">Index</span><span class="token punctuation">:</span> <span class="token key atrule">url</span><span class="token punctuation">:</span> / <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>home <span class="token key atrule">Tags</span><span class="token punctuation">:</span> <span class="token key atrule">url</span><span class="token punctuation">:</span> /tags <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>tags <span class="token key atrule">Categories</span><span class="token punctuation">:</span> <span class="token key atrule">url</span><span class="token punctuation">:</span> /categories <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>bookmark <span class="token key atrule">Archives</span><span class="token punctuation">:</span> <span class="token key atrule">url</span><span class="token punctuation">:</span> /archives <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>archive <span class="token key atrule">About</span><span class="token punctuation">:</span> <span class="token key atrule">url</span><span class="token punctuation">:</span> /about <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>user<span class="token punctuation">-</span>circle <span class="token key atrule">Friends</span><span class="token punctuation">:</span> <span class="token key atrule">url</span><span class="token punctuation">:</span> /friends <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>address<span class="token punctuation">-</span>book<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h4 id="二级菜单配置方法"><a href="#二级菜单配置方法" class="headerlink" title="二级菜单配置方法"></a>二级菜单配置方法</h4><p>如果你需要二级菜单则可以在原基本菜单导航的基础上如下操作<br>1.在需要添加二级菜单的一级菜单下添加<code>children</code>关键字(如:<code>About</code>菜单下添加<code>children</code>)<br>2.在<code>children</code>下创建二级菜单的 名称name,路径url和图标icon.<br>3.注意每个二级菜单模块前要加 <code>-</code>.<br>4.注意缩进格式 </p><pre class="line-numbers language-yaml"><code class="language-yaml"><span class="token key atrule">menu</span><span class="token punctuation">:</span> <span class="token key atrule">Index</span><span class="token punctuation">:</span> <span class="token key atrule">url</span><span class="token punctuation">:</span> / <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>home <span class="token key atrule">Tags</span><span class="token punctuation">:</span> <span class="token key atrule">url</span><span class="token punctuation">:</span> /tags <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>tags <span class="token key atrule">Categories</span><span class="token punctuation">:</span> <span class="token key atrule">url</span><span class="token punctuation">:</span> /categories <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>bookmark <span class="token key atrule">Archives</span><span class="token punctuation">:</span> <span class="token key atrule">url</span><span class="token punctuation">:</span> /archives <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>archive <span class="token key atrule">About</span><span class="token punctuation">:</span> <span class="token key atrule">url</span><span class="token punctuation">:</span> /about <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>user<span class="token punctuation">-</span>circle<span class="token punctuation">-</span>o <span class="token key atrule">Friends</span><span class="token punctuation">:</span> <span class="token key atrule">url</span><span class="token punctuation">:</span> /friends <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>address<span class="token punctuation">-</span>book <span class="token key atrule">Medias</span><span class="token punctuation">:</span> <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>list <span class="token key atrule">children</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> Musics <span class="token key atrule">url</span><span class="token punctuation">:</span> /musics <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>music <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> Movies <span class="token key atrule">url</span><span class="token punctuation">:</span> /movies <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>film <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> Books <span class="token key atrule">url</span><span class="token punctuation">:</span> /books <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>book <span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> Galleries <span class="token key atrule">url</span><span class="token punctuation">:</span> /galleries <span class="token key atrule">icon</span><span class="token punctuation">:</span> fas fa<span class="token punctuation">-</span>image<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>执行 <code>hexo clean && hexo g</code> 重新生成博客文件,然后就可以在文章中对应位置看到你用<code>emoji</code>语法写的表情了。</p><h3 id="代码高亮"><a href="#代码高亮" class="headerlink" title="代码高亮"></a>代码高亮</h3><p>由于 Hexo 自带的代码高亮主题显示不好看,所以主题中使用到了 <a href="https://github.com/ele828/hexo-prism-plugin" target="_blank" rel="noopener">hexo-prism-plugin</a> 的 Hexo 插件来做代码高亮,安装命令如下:</p><pre class="line-numbers language-bash"><code class="language-bash"><span class="token function">npm</span> i -S hexo-prism-plugin<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>然后,修改 Hexo 根目录下 <code>_config.yml</code> 文件中 <code>highlight.enable</code> 的值为 <code>false</code>,并新增 <code>prism</code> 插件相关的配置,主要配置如下:</p><pre class="line-numbers language-yaml"><code class="language-yaml"><span class="token key atrule">highlight</span><span class="token punctuation">:</span> <span class="token key atrule">enable</span><span class="token punctuation">:</span> <span class="token boolean important">false</span><span class="token key atrule">prism_plugin</span><span class="token punctuation">:</span> <span class="token key atrule">mode</span><span class="token punctuation">:</span> <span class="token string">'preprocess'</span> <span class="token comment" spellcheck="true"># realtime/preprocess</span> <span class="token key atrule">theme</span><span class="token punctuation">:</span> <span class="token string">'tomorrow'</span> <span class="token key atrule">line_number</span><span class="token punctuation">:</span> <span class="token boolean important">false </span><span class="token comment" spellcheck="true"># default false</span> custom_css<span class="token punctuation">:</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="搜索"><a href="#搜索" class="headerlink" title="搜索"></a>搜索</h3><p>本主题中还使用到了 <a href="https://github.com/wzpan/hexo-generator-search" target="_blank" rel="noopener">hexo-generator-search</a> 的 Hexo 插件来做内容搜索,安装命令如下:</p><pre class="line-numbers language-bash"><code class="language-bash"><span class="token function">npm</span> <span class="token function">install</span> hexo-generator-search --save<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>在 Hexo 根目录下的 <code>_config.yml</code> 文件中,新增以下的配置项:</p><pre class="line-numbers language-yaml"><code class="language-yaml"><span class="token key atrule">search</span><span class="token punctuation">:</span> <span class="token key atrule">path</span><span class="token punctuation">:</span> search.xml <span class="token key atrule">field</span><span class="token punctuation">:</span> post<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><h3 id="中文链接转拼音(建议安装)"><a href="#中文链接转拼音(建议安装)" class="headerlink" title="中文链接转拼音(建议安装)"></a>中文链接转拼音(建议安装)</h3><p>如果你的文章名称是中文的,那么 Hexo 默认生成的永久链接也会有中文,这样不利于 <code>SEO</code>,且 <code>gitment</code> 评论对中文链接也不支持。我们可以用 <a href="https://github.com/viko16/hexo-permalink-pinyin" target="_blank" rel="noopener">hexo-permalink-pinyin</a> Hexo 插件使在生成文章时生成中文拼音的永久链接。</p><p>安装命令如下:</p><pre class="line-numbers language-bash"><code class="language-bash"><span class="token function">npm</span> i hexo-permalink-pinyin --save<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>在 Hexo 根目录下的 <code>_config.yml</code> 文件中,新增以下的配置项:</p><pre class="line-numbers language-yaml"><code class="language-yaml"><span class="token key atrule">permalink_pinyin</span><span class="token punctuation">:</span> <span class="token key atrule">enable</span><span class="token punctuation">:</span> <span class="token boolean important">true</span> <span class="token key atrule">separator</span><span class="token punctuation">:</span> <span class="token string">'-'</span> <span class="token comment" spellcheck="true"># default: '-'</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span></span></code></pre><blockquote><p><strong>注</strong>:除了此插件外,<a href="https://github.com/rozbo/hexo-abbrlink" target="_blank" rel="noopener">hexo-abbrlink</a> 插件也可以生成非中文的链接。</p></blockquote><h3 id="文章字数统计插件(建议安装)"><a href="#文章字数统计插件(建议安装)" class="headerlink" title="文章字数统计插件(建议安装)"></a>文章字数统计插件(建议安装)</h3><p>如果你想要在文章中显示文章字数、阅读时长信息,可以安装 <a href="https://github.com/willin/hexo-wordcount" target="_blank" rel="noopener">hexo-wordcount</a>插件。</p><p>安装命令如下:</p><pre class="line-numbers language-bash"><code class="language-bash"><span class="token function">npm</span> i --save hexo-wordcount<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>然后只需在本主题下的 <code>_config.yml</code> 文件中,将各个文章字数相关的配置激活即可:</p><pre class="line-numbers language-yaml"><code class="language-yaml"><span class="token key atrule">postInfo</span><span class="token punctuation">:</span> <span class="token key atrule">date</span><span class="token punctuation">:</span> <span class="token boolean important">true</span> <span class="token key atrule">update</span><span class="token punctuation">:</span> <span class="token boolean important">false</span> <span class="token key atrule">wordCount</span><span class="token punctuation">:</span> <span class="token boolean important">false </span><span class="token comment" spellcheck="true"># 设置文章字数统计为 true.</span> <span class="token key atrule">totalCount</span><span class="token punctuation">:</span> <span class="token boolean important">false </span><span class="token comment" spellcheck="true"># 设置站点文章总字数统计为 true.</span> <span class="token key atrule">min2read</span><span class="token punctuation">:</span> <span class="token boolean important">false </span><span class="token comment" spellcheck="true"># 阅读时长.</span> <span class="token key atrule">readCount</span><span class="token punctuation">:</span> <span class="token boolean important">false </span><span class="token comment" spellcheck="true"># 阅读次数.</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="添加emoji表情支持(可选的)"><a href="#添加emoji表情支持(可选的)" class="headerlink" title="添加emoji表情支持(可选的)"></a>添加emoji表情支持(可选的)</h3><p>本主题新增了对<code>emoji</code>表情的支持,使用到了 <a href="https://npm.taobao.org/package/hexo-filter-github-emojis" target="_blank" rel="noopener">hexo-filter-github-emojis</a> 的 Hexo 插件来支持 <code>emoji</code>表情的生成,把对应的<code>markdown emoji</code>语法(<code>::</code>,例如:<code>:smile:</code>)转变成会跳跃的<code>emoji</code>表情,安装命令如下:</p><pre class="line-numbers language-bash"><code class="language-bash"><span class="token function">npm</span> <span class="token function">install</span> hexo-filter-github-emojis --save<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>在 Hexo 根目录下的 <code>_config.yml</code> 文件中,新增以下的配置项:</p><pre class="line-numbers language-yaml"><code class="language-yaml"><span class="token key atrule">githubEmojis</span><span class="token punctuation">:</span> <span class="token key atrule">enable</span><span class="token punctuation">:</span> <span class="token boolean important">true</span> <span class="token key atrule">className</span><span class="token punctuation">:</span> github<span class="token punctuation">-</span>emoji <span class="token key atrule">inject</span><span class="token punctuation">:</span> <span class="token boolean important">true</span> <span class="token key atrule">styles</span><span class="token punctuation">:</span> customEmojis<span class="token punctuation">:</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="添加-RSS-订阅支持(可选的)"><a href="#添加-RSS-订阅支持(可选的)" class="headerlink" title="添加 RSS 订阅支持(可选的)"></a>添加 RSS 订阅支持(可选的)</h3><p>本主题中还使用到了 <a href="https://github.com/hexojs/hexo-generator-feed" target="_blank" rel="noopener">hexo-generator-feed</a> 的 Hexo 插件来做 <code>RSS</code>,安装命令如下:</p><pre class="line-numbers language-bash"><code class="language-bash"><span class="token function">npm</span> <span class="token function">install</span> hexo-generator-feed --save<span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>在 Hexo 根目录下的 <code>_config.yml</code> 文件中,新增以下的配置项:</p><pre class="line-numbers language-yaml"><code class="language-yaml"><span class="token key atrule">feed</span><span class="token punctuation">:</span> <span class="token key atrule">type</span><span class="token punctuation">:</span> atom <span class="token key atrule">path</span><span class="token punctuation">:</span> atom.xml <span class="token key atrule">limit</span><span class="token punctuation">:</span> <span class="token number">20</span> <span class="token key atrule">hub</span><span class="token punctuation">:</span> <span class="token key atrule">content</span><span class="token punctuation">:</span> <span class="token key atrule">content_limit</span><span class="token punctuation">:</span> <span class="token number">140</span> <span class="token key atrule">content_limit_delim</span><span class="token punctuation">:</span> <span class="token string">' '</span> <span class="token key atrule">order_by</span><span class="token punctuation">:</span> <span class="token punctuation">-</span>date<span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>执行 <code>hexo clean && hexo g</code> 重新生成博客文件,然后在 <code>public</code> 文件夹中即可看到 <code>atom.xml</code> 文件,说明你已经安装成功了。</p><h3 id="添加-DaoVoice-在线聊天功能(可选的)"><a href="#添加-DaoVoice-在线聊天功能(可选的)" class="headerlink" title="添加 DaoVoice 在线聊天功能(可选的)"></a>添加 <a href="http://www.daovoice.io/" target="_blank" rel="noopener">DaoVoice</a> 在线聊天功能(可选的)</h3><p>前往 <a href="http://www.daovoice.io/" target="_blank" rel="noopener">DaoVoice</a> 官网注册并且获取 <code>app_id</code>,并将 <code>app_id</code> 填入主题的 <code>_config.yml</code> 文件中。</p><h3 id="添加-Tidio-在线聊天功能(可选的)"><a href="#添加-Tidio-在线聊天功能(可选的)" class="headerlink" title="添加 Tidio 在线聊天功能(可选的)"></a>添加 <a href="https://www.tidio.com/" target="_blank" rel="noopener">Tidio</a> 在线聊天功能(可选的)</h3><p>前往 <a href="https://www.tidio.com/" target="_blank" rel="noopener">Tidio</a> 官网注册并且获取 <code>Public Key</code>,并将 <code>Public Key</code> 填入主题的 <code>_config.yml</code> 文件中。</p><h3 id="修改页脚"><a href="#修改页脚" class="headerlink" title="修改页脚"></a>修改页脚</h3><p>页脚信息可能需要做定制化修改,而且它不便于做成配置信息,所以可能需要你自己去再修改和加工。修改的地方在主题文件的 <code>/layout/_partial/footer.ejs</code> 文件中,包括站点、使用的主题、访问量等。</p><h3 id="修改社交链接"><a href="#修改社交链接" class="headerlink" title="修改社交链接"></a>修改社交链接</h3><p>在主题的 <code>_config.yml</code> 文件中,默认支持 <code>QQ</code>、<code>GitHub</code> 和邮箱等的配置,你可以在主题文件的 <code>/layout/_partial/social-link.ejs</code> 文件中,新增、修改你需要的社交链接地址,增加链接可参考如下代码:</p><pre class="line-numbers language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>%</span> <span class="token attr-name">if</span> <span class="token attr-name">(theme.socialLink.github)</span> <span class="token attr-name">{</span> <span class="token attr-name">%</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span><%<span class="token punctuation">=</span> theme.socialLink.github %<span class="token punctuation">></span><span class="token punctuation">"</span></span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>tooltipped<span class="token punctuation">"</span></span> <span class="token attr-name">target</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>_blank<span class="token punctuation">"</span></span> <span class="token attr-name">data-tooltip</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>访问我的GitHub<span class="token punctuation">"</span></span> <span class="token attr-name">data-position</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>top<span class="token punctuation">"</span></span> <span class="token attr-name">data-delay</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>50<span class="token punctuation">"</span></span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>i</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>fab fa-github<span class="token punctuation">"</span></span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>i</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>a</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>%</span> <span class="token attr-name">}</span> <span class="token attr-name">%</span><span class="token punctuation">></span></span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span></span></code></pre><p>其中,社交图标(如:<code>fa-github</code>)你可以在 <a href="https://fontawesome.com/icons" target="_blank" rel="noopener">Font Awesome</a> 中搜索找到。以下是常用社交图标的标识,供你参考:</p><ul><li>Facebook: <code>fab fa-facebook</code></li><li>Twitter: <code>fab fa-twitter</code></li><li>Google-plus: <code>fab fa-google-plus</code></li><li>Linkedin: <code>fab fa-linkedin</code></li><li>Tumblr: <code>fab fa-tumblr</code></li><li>Medium: <code>fab fa-medium</code></li><li>Slack: <code>fab fa-slack</code></li><li>Sina Weibo: <code>fab fa-weibo</code></li><li>Wechat: <code>fab fa-weixin</code></li><li>QQ: <code>fab fa-qq</code></li><li>Zhihu: <code>fab fa-zhihu</code></li></ul><blockquote><p><strong>注意</strong>: 本主题中使用的 <code>Font Awesome</code> 版本为 <code>5.11.0</code>。</p></blockquote><h3 id="修改打赏的二维码图片"><a href="#修改打赏的二维码图片" class="headerlink" title="修改打赏的二维码图片"></a>修改打赏的二维码图片</h3><p>在主题文件的 <code>source/medias/reward</code> 文件中,你可以替换成你的的微信和支付宝的打赏二维码图片。</p><h3 id="配置音乐播放器(可选的)"><a href="#配置音乐播放器(可选的)" class="headerlink" title="配置音乐播放器(可选的)"></a>配置音乐播放器(可选的)</h3><p>要支持音乐播放,在主题的 <code>_config.yml</code> 配置文件中激活music配置即可:</p><pre class="line-numbers language-yaml"><code class="language-yaml"><span class="token comment" spellcheck="true"># 是否在首页显示音乐</span><span class="token key atrule">music</span><span class="token punctuation">:</span> <span class="token key atrule">enable</span><span class="token punctuation">:</span> <span class="token boolean important">true</span> <span class="token key atrule">title</span><span class="token punctuation">:</span> <span class="token comment" spellcheck="true">#非吸底模式有效</span> <span class="token key atrule">enable</span><span class="token punctuation">:</span> <span class="token boolean important">true</span> <span class="token key atrule">show</span><span class="token punctuation">:</span> 听听音乐 <span class="token key atrule">server</span><span class="token punctuation">:</span> netease <span class="token comment" spellcheck="true">#require music platform: netease, tencent, kugou, xiami, baidu</span> <span class="token key atrule">type</span><span class="token punctuation">:</span> playlist <span class="token comment" spellcheck="true">#require song, playlist, album, search, artist</span> <span class="token key atrule">id</span><span class="token punctuation">:</span> <span class="token number">503838841 </span><span class="token comment" spellcheck="true">#require song id / playlist id / album id / search keyword</span> <span class="token key atrule">fixed</span><span class="token punctuation">:</span> <span class="token boolean important">false </span><span class="token comment" spellcheck="true"># 开启吸底模式</span> <span class="token key atrule">autoplay</span><span class="token punctuation">:</span> <span class="token boolean important">false </span><span class="token comment" spellcheck="true"># 是否自动播放</span> <span class="token key atrule">theme</span><span class="token punctuation">:</span> '<span class="token comment" spellcheck="true">#42b983'</span> <span class="token key atrule">loop</span><span class="token punctuation">:</span> <span class="token string">'all'</span> <span class="token comment" spellcheck="true"># 音频循环播放, 可选值: 'all', 'one', 'none'</span> <span class="token key atrule">order</span><span class="token punctuation">:</span> <span class="token string">'random'</span> <span class="token comment" spellcheck="true"># 音频循环顺序, 可选值: 'list', 'random'</span> <span class="token key atrule">preload</span><span class="token punctuation">:</span> <span class="token string">'auto'</span> <span class="token comment" spellcheck="true"># 预加载,可选值: 'none', 'metadata', 'auto'</span> <span class="token key atrule">volume</span><span class="token punctuation">:</span> <span class="token number">0.7 </span><span class="token comment" spellcheck="true"># 默认音量,请注意播放器会记忆用户设置,用户手动设置音量后默认音量即失效</span> <span class="token key atrule">listFolded</span><span class="token punctuation">:</span> <span class="token boolean important">true </span><span class="token comment" spellcheck="true"># 列表默认折叠</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><blockquote><p><code>server</code>可选<code>netease</code>(网易云音乐),<code>tencent</code>(QQ音乐),<code>kugou</code>(酷狗音乐),<code>xiami</code>(虾米音乐),</p><p><code>baidu</code>(百度音乐)。</p><p><code>type</code>可选<code>song</code>(歌曲),<code>playlist</code>(歌单),<code>album</code>(专辑),<code>search</code>(搜索关键字),<code>artist</code>(歌手)</p><p><code>id</code>获取示例: 浏览器打开网易云音乐,点击我喜欢的音乐歌单,地址栏有一串数字,<code>playlist</code>的<code>id</code>即为这串数字。</p></blockquote><h2 id="文章-Front-matter-介绍"><a href="#文章-Front-matter-介绍" class="headerlink" title="文章 Front-matter 介绍"></a>文章 Front-matter 介绍</h2><h3 id="Front-matter-选项详解"><a href="#Front-matter-选项详解" class="headerlink" title="Front-matter 选项详解"></a>Front-matter 选项详解</h3><p><code>Front-matter</code> 选项中的所有内容均为<strong>非必填</strong>的。但我仍然建议至少填写 <code>title</code> 和 <code>date</code> 的值。</p><table><thead><tr><th>配置选项</th><th>默认值</th><th>描述</th></tr></thead><tbody><tr><td>title</td><td><code>Markdown</code> 的文件标题</td><td>文章标题,强烈建议填写此选项</td></tr><tr><td>date</td><td>文件创建时的日期时间</td><td>发布时间,强烈建议填写此选项,且最好保证全局唯一</td></tr><tr><td>author</td><td>根 <code>_config.yml</code> 中的 <code>author</code></td><td>文章作者</td></tr><tr><td>img</td><td><code>featureImages</code> 中的某个值</td><td>文章特征图,推荐使用图床(腾讯云、七牛云、又拍云等)来做图片的路径.如: <code>http://xxx.com/xxx.jpg</code></td></tr><tr><td>top</td><td><code>true</code></td><td>推荐文章(文章是否置顶),如果 <code>top</code> 值为 <code>true</code>,则会作为首页推荐文章</td></tr><tr><td>cover</td><td><code>false</code></td><td><code>v1.0.2</code>版本新增,表示该文章是否需要加入到首页轮播封面中</td></tr><tr><td>coverImg</td><td>无</td><td><code>v1.0.2</code>版本新增,表示该文章在首页轮播封面需要显示的图片路径,如果没有,则默认使用文章的特色图片</td></tr><tr><td>password</td><td>无</td><td>文章阅读密码,如果要对文章设置阅读验证密码的话,就可以设置 <code>password</code> 的值,该值必须是用 <code>SHA256</code> 加密后的密码,防止被他人识破。前提是在主题的 <code>config.yml</code> 中激活了 <code>verifyPassword</code> 选项</td></tr><tr><td>toc</td><td><code>true</code></td><td>是否开启 TOC,可以针对某篇文章单独关闭 TOC 的功能。前提是在主题的 <code>config.yml</code> 中激活了 <code>toc</code> 选项</td></tr><tr><td>mathjax</td><td><code>false</code></td><td>是否开启数学公式支持 ,本文章是否开启 <code>mathjax</code>,且需要在主题的 <code>_config.yml</code> 文件中也需要开启才行</td></tr><tr><td>summary</td><td>无</td><td>文章摘要,自定义的文章摘要内容,如果这个属性有值,文章卡片摘要就显示这段文字,否则程序会自动截取文章的部分内容作为摘要</td></tr><tr><td>categories</td><td>无</td><td>文章分类,本主题的分类表示宏观上大的分类,只建议一篇文章一个分类</td></tr><tr><td>tags</td><td>无</td><td>文章标签,一篇文章可以多个标签</td></tr><tr><td>keywords</td><td>文章标题</td><td>文章关键字,SEO 时需要</td></tr><tr><td>reprintPolicy</td><td>cc_by</td><td>文章转载规则, 可以是 cc_by, cc_by_nd, cc_by_sa, cc_by_nc, cc_by_nc_nd, cc_by_nc_sa, cc0, noreprint 或 pay 中的一个</td></tr></tbody></table><blockquote><p><strong>注意</strong>:</p><ol><li>如果 <code>img</code> 属性不填写的话,文章特色图会根据文章标题的 <code>hashcode</code> 的值取余,然后选取主题中对应的特色图片,从而达到让所有文章都的特色图<strong>各有特色</strong>。</li><li><code>date</code> 的值尽量保证每篇文章是唯一的,因为本主题中 <code>Gitalk</code> 和 <code>Gitment</code> 识别 <code>id</code> 是通过 <code>date</code> 的值来作为唯一标识的。</li><li>如果要对文章设置阅读验证密码的功能,不仅要在 Front-matter 中设置采用了 SHA256 加密的 password 的值,还需要在主题的 <code>_config.yml</code> 中激活了配置。有些在线的 SHA256 加密的地址,可供你使用:<a href="http://tool.oschina.net/encrypt?type=2" target="_blank" rel="noopener">开源中国在线工具</a>、<a href="http://encode.chahuo.com/" target="_blank" rel="noopener">chahuo</a>、<a href="http://tool.chinaz.com/tools/hash.aspx" target="_blank" rel="noopener">站长工具</a>。</li><li>您可以在文章md文件的 front-matter 中指定 reprintPolicy 来给单个文章配置转载规则</li></ol></blockquote><p>以下为文章的 <code>Front-matter</code> 示例。</p><h3 id="最全示例"><a href="#最全示例" class="headerlink" title="最全示例"></a>最全示例</h3><pre class="line-numbers language-yaml"><code class="language-yaml"><span class="token punctuation">---</span><span class="token key atrule">title</span><span class="token punctuation">:</span> typora<span class="token punctuation">-</span>vue<span class="token punctuation">-</span>theme主题介绍<span class="token key atrule">date</span><span class="token punctuation">:</span> <span class="token datetime number">2018-09-07 09:25:00</span><span class="token key atrule">author</span><span class="token punctuation">:</span> 赵奇<span class="token key atrule">img</span><span class="token punctuation">:</span> /source/images/xxx.jpg<span class="token key atrule">top</span><span class="token punctuation">:</span> <span class="token boolean important">true</span><span class="token key atrule">cover</span><span class="token punctuation">:</span> <span class="token boolean important">true</span><span class="token key atrule">coverImg</span><span class="token punctuation">:</span> /images/1.jpg<span class="token key atrule">password</span><span class="token punctuation">:</span> 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92<span class="token key atrule">toc</span><span class="token punctuation">:</span> <span class="token boolean important">false</span><span class="token key atrule">mathjax</span><span class="token punctuation">:</span> <span class="token boolean important">false</span><span class="token key atrule">summary</span><span class="token punctuation">:</span> 这是你自定义的文章摘要内容,如果这个属性有值,文章卡片摘要就显示这段文字,否则程序会自动截取文章的部分内容作为摘要<span class="token key atrule">categories</span><span class="token punctuation">:</span> Markdown<span class="token key atrule">tags</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> Typora <span class="token punctuation">-</span> Markdown<span class="token punctuation">---</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h2 id="自定制修改"><a href="#自定制修改" class="headerlink" title="自定制修改"></a>自定制修改</h2><p>在本主题的 <code>_config.yml</code> 中可以修改部分自定义信息,有以下几个部分:</p><ul><li>菜单</li><li>我的梦想</li><li>首页的音乐播放器和视频播放器配置</li><li>是否显示推荐文章名称和按钮配置</li><li><code>favicon</code> 和 <code>Logo</code></li><li>个人信息</li><li>TOC 目录</li><li>文章打赏信息</li><li>复制文章内容时追加版权信息</li><li>MathJax</li><li>文章字数统计、阅读时长</li><li>点击页面的’爱心’效果</li><li>我的项目</li><li>我的技能</li><li>我的相册</li><li><code>Gitalk</code>、<code>Gitment</code>、<code>Valine</code> 和 <code>disqus</code> 评论配置</li><li><a href="http://busuanzi.ibruce.info/" target="_blank" rel="noopener">不蒜子统计</a>和谷歌分析(<code>Google Analytics</code>)</li><li>默认特色图的集合。当文章没有设置特色图时,本主题会根据文章标题的 <code>hashcode</code> 值取余,来选择展示对应的特色图</li></ul><p><strong>我认为个人博客应该都有自己的风格和特色</strong>。如果本主题中的诸多功能和主题色彩你不满意,可以在主题中自定义修改,很多更自由的功能和细节点的修改难以在主题的 <code>_config.yml</code> 中完成,需要修改源代码才来完成。以下列出了可能对你有用的地方:</p><h3 id="修改主题颜色"><a href="#修改主题颜色" class="headerlink" title="修改主题颜色"></a>修改主题颜色</h3><p>在主题文件的 <code>/source/css/matery.css</code> 文件中,搜索 <code>.bg-color</code> 来修改背景颜色:</p><pre class="line-numbers language-css"><code class="language-css"><span class="token comment" spellcheck="true">/* 整体背景颜色,包括导航、移动端的导航、页尾、标签页等的背景颜色. */</span><span class="token selector"><span class="token class">.bg-color</span> </span><span class="token punctuation">{</span> <span class="token property">background-image</span><span class="token punctuation">:</span> <span class="token function">linear-gradient</span><span class="token punctuation">(</span>to right, <span class="token hexcode">#4cbf30</span> <span class="token number">0%</span>, <span class="token hexcode">#0f9d58</span> <span class="token number">100%</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token atrule"><span class="token rule">@-webkit-keyframes</span> rainbow</span> <span class="token punctuation">{</span> <span class="token comment" spellcheck="true">/* 动态切换背景颜色. */</span><span class="token punctuation">}</span><span class="token atrule"><span class="token rule">@keyframes</span> rainbow</span> <span class="token punctuation">{</span> <span class="token comment" spellcheck="true">/* 动态切换背景颜色. */</span><span class="token punctuation">}</span><span aria-hidden="true" class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></code></pre><h3 id="修改-banner-图和文章特色图"><a href="#修改-banner-图和文章特色图" class="headerlink" title="修改 banner 图和文章特色图"></a>修改 banner 图和文章特色图</h3><p>你可以直接在 <code>/source/medias/banner</code> 文件夹中更换你喜欢的 <code>banner</code> 图片,主题代码中是每天动态切换一张,只需 <code>7</code> 张即可。如果你会 <code>JavaScript</code> 代码,可以修改成你自己喜欢切换逻辑,如:随机切换等,<code>banner</code> 切换的代码位置在 <code>/layout/_partial/bg-cover-content.ejs</code> 文件的 <code><script></script></code> 代码中:</p><pre class="line-numbers language-javascript"><code class="language-javascript"><span class="token function">$</span><span class="token punctuation">(</span><span class="token string">'.bg-cover'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">css</span><span class="token punctuation">(</span><span class="token string">'background-image'</span><span class="token punctuation">,</span> <span class="token string">'url(/medias/banner/'</span> <span class="token operator">+</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getDay</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token string">'.jpg)'</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span aria-hidden="true" class="line-numbers-rows"><span></span></span></code></pre><p>在 <code>/source/medias/featureimages</code> 文件夹中默认有 24 张特色图片,你可以再增加或者减少,并需要在 <code>_config.yml</code> 做同步修改。</p><script> document.querySelectorAll('.github-emoji') .forEach(el => { if (!el.dataset.src) { return; } const img = document.createElement('img'); img.style = 'display:none !important;'; img.src = el.dataset.src; img.addEventListener('error', () => { img.remove(); el.style.color = 'inherit'; el.style.backgroundImage = 'none'; el.style.background = 'none'; }); img.addEventListener('load', () => { img.remove(); }); document.body.appendChild(img); }); </script>]]></content>
<summary type="html">
<h1 id="hexo-theme-matery"><a href="#hexo-theme-matery" class="headerlink" title="hexo-theme-matery"></a>hexo-theme-matery</h1><blockquote>
</summary>
<category term="other" scheme="http://www.vnnznn.cn/categories/other/"/>
</entry>
</feed>