-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.xml
2061 lines (1953 loc) · 226 KB
/
index.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
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>SanmuDang的博客</title>
<link>http://localhost:7447/</link>
<description>Recent content on SanmuDang的博客</description>
<generator>Hugo -- gohugo.io</generator>
<language>zh-Hans</language>
<lastBuildDate>Sun, 11 Aug 2024 12:53:36 +0800</lastBuildDate><atom:link href="http://localhost:7447/index.xml" rel="self" type="application/rss+xml" /><item>
<title>搭建Minecraft联机服务器教程</title>
<link>http://localhost:7447/post/minecraft-server/</link>
<pubDate>Sun, 11 Aug 2024 12:53:36 +0800</pubDate>
<guid>http://localhost:7447/post/minecraft-server/</guid>
<description><img src="http://localhost:7447/post/minecraft-server/MCSM.png" alt="Featured image of post 搭建Minecraft联机服务器教程" /><h2 id="创建一个单独的用户运行mcsmanager非必需">创建一个单独的用户运行MCSManager(非必需)
</h2><blockquote>
<p>对于一般的服务器,只运行单个应用,因此在非root用户下直接构建应用并运行即可。但对于博主的服务器,同时运行多个应用,因此每个用户分别管理与控制一个应用有利于管理权限等方面内容。<strong>需要注意的是:如果之后不考虑权限管理,可以跳过该步骤</strong></p>
</blockquote>
<h3 id="远程ssh连接服务器">远程ssh连接服务器。
</h3><blockquote>
<p>此类教程有许多,这里随便列几个链接,就不过多赘述了。
<a class="link" href="https://blog.csdn.net/Escorts/article/details/119180620" target="_blank" rel="noopener"
>通过SSH连接到Linux服务器</a>、<a class="link" href="https://blog.csdn.net/weixin_72910567/article/details/132418542" target="_blank" rel="noopener"
>Windows 系统下:SSH 远程连接 Linux 服务器的完整指南</a></p>
</blockquote>
<h3 id="创建用户并修改用户密码">创建用户并修改用户密码
</h3><p>这个步骤需要保证当前用户拥有管理权限或拥有sudo权限。
若当前用户不为<em>root</em>尝试以下命令</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 创建用户</span>
</span></span><span class="line"><span class="cl">sudo useradd -m -s <span class="s2">&#34;/bin/bash&#34;</span> mcsmanager
</span></span><span class="line"><span class="cl"><span class="c1"># 修改用户密码</span>
</span></span><span class="line"><span class="cl">sudo passwd mcsmanager
</span></span></code></pre></td></tr></table>
</div>
</div><p>若上述命令执行后弹出“xxx is not in the sudoers file.”其中xxx为当前用户名,这表明当前用户没sudo权限,请参考<a class="link" href="https://www.cnblogs.com/huangjiabobk/p/18098101" target="_blank" rel="noopener"
>在Linux中,如何添加和管理用户账户以及如何设置sudo权限?</a>或<a class="link" href="https://blog.csdn.net/m0_51764535/article/details/114701598" target="_blank" rel="noopener"
>linux中创建用户并赋予用户sudo权限</a>给当前用户赋予sudo权限后重新进行上述操作,或使用如下命令切换至root用户后执行后续命令。<strong>需要注意的是:切换用户时会要求输入密码,linux输入密码类操作时不会显示密码,并不是你没有输入</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 切换至root用户</span>
</span></span><span class="line"><span class="cl">su root
</span></span></code></pre></td></tr></table>
</div>
</div><p>若当前用户为<em>root</em>尝试以下命令</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 创建用户</span>
</span></span><span class="line"><span class="cl">useradd -m -s <span class="s2">&#34;/bin/bash&#34;</span> mcsmanager
</span></span><span class="line"><span class="cl"><span class="c1"># 修改用户密码</span>
</span></span><span class="line"><span class="cl">passwd mcsmanager
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="安装mcsmanager">安装MCSManager
</h2><blockquote>
<p>这里可以使用MCSManager官方提供的Linux一键安装脚本(本教程不推荐)</p>
</blockquote>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 获取一键安装脚本并执行</span>
</span></span><span class="line"><span class="cl">sudo su -c <span class="s2">&#34;wget -qO- https://script.mcsmanager.com/setup_cn.sh | bash&#34;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><blockquote>
<p>推荐使用如下方法安装(即 Linux 手动安装)</p>
</blockquote>
<h3 id="安装nodejs">安装nodejs
</h3><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 回到当前用户的家目录</span>
</span></span><span class="line"><span class="cl"><span class="nb">cd</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 创建PATH目录</span>
</span></span><span class="line"><span class="cl">mkdir bin
</span></span><span class="line"><span class="cl"><span class="c1"># 创建nodejs存储目录</span>
</span></span><span class="line"><span class="cl">mkdir env
</span></span><span class="line"><span class="cl"><span class="c1"># 移动到nodejs存储目录</span>
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> env
</span></span><span class="line"><span class="cl"><span class="c1"># 下载运行时环境(Node.js)。如果你已经安装了Node.js 16+,请忽略此步骤。(如果下述指令执行失败,请在网上自行百度“linux 安装wget”)</span>
</span></span><span class="line"><span class="cl">wget https://nodejs.org/dist/v20.16.0/node-v20.16.0-linux-x64.tar.xz
</span></span><span class="line"><span class="cl"><span class="c1"># 解压档案</span>
</span></span><span class="line"><span class="cl">tar -xvf node-v20.16.0-linux-x64.tar.xz
</span></span><span class="line"><span class="cl"><span class="c1"># 添加程序到系统环境变量</span>
</span></span><span class="line"><span class="cl">ln -s /home/mcsmanager/env/node-v20.16.0-linux-x64/bin/node bin/node
</span></span><span class="line"><span class="cl">ln -s /home/mcsmanager/env/node-v20.16.0-linux-x64/bin/npm bin/npm
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>注意:这里需要断开ssh连接,重新连接</strong>
再次连接上ssh后执行以下命令检验是否安装正确</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 查看nodejs版本</span>
</span></span><span class="line"><span class="cl">node -v
</span></span><span class="line"><span class="cl"><span class="c1"># 查看npm包管理器版本</span>
</span></span><span class="line"><span class="cl">npm -v
</span></span></code></pre></td></tr></table>
</div>
</div><p>执行上述指令后返回诸如以下结果即表明正确安装</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">mcsmanager@Server:~$ node -v
</span></span><span class="line"><span class="cl">v20.16.0
</span></span><span class="line"><span class="cl">mcsmanager@Server:~$ npm -v
</span></span><span class="line"><span class="cl">10.8.1
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="安装docker">安装docker
</h3><blockquote>
<p>此步骤也非必须内容,但为了更好的隔离各个我的时间服务器环境,推荐安装docker。此处安装请参考以下博客<strong>注意:该过程中指令请全程使用root用户操作</strong></p>
</blockquote>
<ul>
<li>对于yum包管理的linux:<a class="link" href="https://blog.csdn.net/weixin_43755251/article/details/127512751" target="_blank" rel="noopener"
>Linux安装最新版Docker完整教程</a></li>
<li>对于apt包管理的linux:<a class="link" href="https://blog.csdn.net/weixin_44355653/article/details/140267707" target="_blank" rel="noopener"
>Ubuntu 22.04安装Docker(最全教程,无需科学上网)</a></li>
</ul>
<p>**如何区分是yum包管理的linux还是apt包管理的linux?**如何输入以下指令能返回如下所示结果即为apt包管理的linux,否则大概率是yum包管理的linux。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">root@Server:~$ apt --version
</span></span><span class="line"><span class="cl">apt 2.6.1 <span class="o">(</span>amd64<span class="o">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>安装成功后执行以下命令把用户添加到docker组中</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 将用户添加到sudo组</span>
</span></span><span class="line"><span class="cl">usermod -aG docker mcsmanager
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>注意:这里需要断开ssh连接,重新连接用户为mcsmanager</strong>
再次连接上ssh后执行以下命令检验是否安装正确</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">mcsmanager@Server:~$ docker --version
</span></span><span class="line"><span class="cl">Docker version 20.10.24+dfsg1, build 297e128
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="下载mcsmanager">下载MCSManager
</h3><p>使用mcsmanager用户执行下述指令</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span><span class="lnt">9
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 返回家目录</span>
</span></span><span class="line"><span class="cl"><span class="nb">cd</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 准备好安装目录</span>
</span></span><span class="line"><span class="cl">mkdir mcsmanager/
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> mcsmanager/
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 下载MCSManager</span>
</span></span><span class="line"><span class="cl">wget https://github.com/MCSManager/MCSManager/releases/latest/download/mcsmanager_linux_release.tar.gz
</span></span><span class="line"><span class="cl">tar -zxf mcsmanager_linux_release.tar.gz
</span></span></code></pre></td></tr></table>
</div>
</div><p>这里下载是用github源下载的,可能会下载缓慢,或下载失败。如果下载失败可从如下a、b两种方式中任选一种操作</p>
<p>a. 使用gitee源下载</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 下载MCSManager</span>
</span></span><span class="line"><span class="cl">wget https://gitee.com/mcsmanager/MCSManager/releases/download/v10.1.0/MCSManager-v10-linux-x64.tar.gz
</span></span><span class="line"><span class="cl">tar -zxf MCSManager-v10-linux-x64.tar.gz
</span></span></code></pre></td></tr></table>
</div>
</div><p>b. 本地电脑下载使用scp上传到服务器
访问<a class="link" href="https://github.com/MCSManager/MCSManager/releases/latest/download/mcsmanager_linux_release.tar.gz" target="_blank" rel="noopener"
>https://github.com/MCSManager/MCSManager/releases/latest/download/mcsmanager_linux_release.tar.gz</a>。下载成功后参考<a class="link" href="https://blog.csdn.net/netlai/article/details/79756260" target="_blank" rel="noopener"
>SCP:将本地文件上传到Linux服务器</a>或<a class="link" href="https://blog.csdn.net/fuhanghang/article/details/134665553" target="_blank" rel="noopener"
>通过 SSH 在远程和本地系统之间传输文件的 4 种方法</a>将文件上传至“/home/mcsmanager/mcsmanager”目录下。之后连接服务器输入以下指令</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nb">cd</span> /home/mcsmanager/mcsmanager
</span></span><span class="line"><span class="cl">tar -zxf mcsmanager_linux_release.tar.gz
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="安装nodejs相关依赖">安装nodejs相关依赖
</h3><p>执行以下命令</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 进入安装目录</span>
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> /home/mcsmanager/mcsmanager
</span></span><span class="line"><span class="cl"><span class="c1"># 安装依赖库</span>
</span></span><span class="line"><span class="cl">./install.sh
</span></span></code></pre></td></tr></table>
</div>
</div><p>如果出现以下响应</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">-bash: ./install.sh: No such file or directory
</span></span></code></pre></td></tr></table>
</div>
</div><p>请从a、b、c三种途径中任选一种</p>
<p>a. 自己在当前目录(/home/mcsmanager/mcsmanager)中创建一个文件,内容如下</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="cp">#!/bin/bash
</span></span></span><span class="line"><span class="cl"><span class="cp"></span>
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> web
</span></span><span class="line"><span class="cl">npm install --production
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> ../daemon
</span></span><span class="line"><span class="cl">npm install --production
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> Dependencies are installed!
</span></span></code></pre></td></tr></table>
</div>
</div><p>b. 执行如下指令下载</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">wget https://raw.githubusercontent.com/mokuaisp/LFS-provider/main/blog/shenghongzha/Minecraft_Server/install.sh
</span></span></code></pre></td></tr></table>
</div>
</div><p>c. 自行下载install.sh利用scp上传到“/home/mcsmanager/mcsmanager”目录下</p>
<p><a class="link" href="https://github.com/mokuaisp/LFS-provider/blob/main/blog/shenghongzha/Minecraft_Server/install.sh" target="_blank" rel="noopener"
>下载链接</a>
上传教程见安装2.3.b分享的博客</p>
<p><strong>注意以上三种方式补全install.sh后请执行以下命令</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">chmod +x install.sh
</span></span></code></pre></td></tr></table>
</div>
</div><p>之后继续尝试安装依赖,若长时间转圈并未有响应,请参考博客<a class="link" href="https://blog.csdn.net/qq_43940789/article/details/131449710" target="_blank" rel="noopener"
>国内npm源镜像(npm加速下载) 指定npm镜像</a>对npm换源后重新尝试下载</p>
<h3 id="注册到-linux-系统服务">注册到 Linux 系统服务
</h3><p>切换至<em>root</em>用户</p>
<p>在“/etc/systemd/system/”目录下创建mcsm-daemon.service文件(创建方法参考2.4a、b、c,将连接替换成<a class="link" href="https://raw.githubusercontent.com/mokuaisp/LFS-provider/main/blog/shenghongzha/Minecraft_Server/mcsm-daemon.service" target="_blank" rel="noopener"
>mcsm-daemon.service下载链接</a>),内容如下</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="o">[</span>Unit<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">Description</span><span class="o">=</span>MCSManager Daemon
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">[</span>Service<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">User</span><span class="o">=</span>mcsmanager
</span></span><span class="line"><span class="cl"><span class="nv">WorkingDirectory</span><span class="o">=</span>/home/mcsmanager/mcsmanager/daemon
</span></span><span class="line"><span class="cl"><span class="nv">ExecStart</span><span class="o">=</span>/home/mcsmanager/bin/node app.js
</span></span><span class="line"><span class="cl"><span class="nv">ExecReload</span><span class="o">=</span>/bin/kill -s HUP <span class="nv">$MAINPID</span>
</span></span><span class="line"><span class="cl"><span class="nv">ExecStop</span><span class="o">=</span>/bin/kill -s QUIT <span class="nv">$MAINPID</span>
</span></span><span class="line"><span class="cl"><span class="nv">Environment</span><span class="o">=</span><span class="s2">&#34;PATH=/home/mcsmanager/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">[</span>Install<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">WantedBy</span><span class="o">=</span>multi-user.target
</span></span></code></pre></td></tr></table>
</div>
</div><p>在“/etc/systemd/system/”目录下创建mcsm-web.service文件(创建方法参考2.4a、b、c,将连接替换成<a class="link" href="https://raw.githubusercontent.com/mokuaisp/LFS-provider/main/blog/shenghongzha/Minecraft_Server/mcsm-web.service" target="_blank" rel="noopener"
>mcsm-web.service下载链接</a>),内容如下</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="o">[</span>Unit<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">Description</span><span class="o">=</span>MCSManager Web
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">[</span>Service<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">User</span><span class="o">=</span>mcsmanager
</span></span><span class="line"><span class="cl"><span class="nv">WorkingDirectory</span><span class="o">=</span>/home/mcsmanager/mcsmanager/web
</span></span><span class="line"><span class="cl"><span class="nv">ExecStart</span><span class="o">=</span>/home/mcsmanager/bin/node app.js
</span></span><span class="line"><span class="cl"><span class="nv">ExecReload</span><span class="o">=</span>/bin/kill -s HUP <span class="nv">$MAINPID</span>
</span></span><span class="line"><span class="cl"><span class="nv">ExecStop</span><span class="o">=</span>/bin/kill -s QUIT <span class="nv">$MAINPID</span>
</span></span><span class="line"><span class="cl"><span class="nv">Environment</span><span class="o">=</span><span class="s2">&#34;PATH=/home/mcsmanager/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="o">[</span>Install<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">WantedBy</span><span class="o">=</span>multi-user.target
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="启动mcsmanager">启动MCSManager
</h3><p>在<em>root</em>用户下执行以下命令</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">systemctl start mcsm-daemon.service
</span></span><span class="line"><span class="cl">systemctl start mcsm-web.service
</span></span><span class="line"><span class="cl">systemctl <span class="nb">enable</span> mcsm-daemon.service
</span></span><span class="line"><span class="cl">systemctl <span class="nb">enable</span> mcsm-web.service
</span></span></code></pre></td></tr></table>
</div>
</div><p>检验启动结果,输入以下指令返回类似结果即算成功</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">systemctl status mcsm-daemon.service
</span></span><span class="line"><span class="cl">● mcsm-daemon.service - MCSManager Daemon
</span></span><span class="line"><span class="cl"> Loaded: loaded <span class="o">(</span>/etc/systemd/system/mcsm-daemon.service<span class="p">;</span> enabled<span class="p">;</span> preset: enabled<span class="o">)</span>
</span></span><span class="line"><span class="cl"> Active: active <span class="o">(</span>running<span class="o">)</span> since Sun 2024-08-11 16:17:20 CST<span class="p">;</span> 35s ago
</span></span><span class="line"><span class="cl"> Main PID: <span class="m">245529</span> <span class="o">(</span>node<span class="o">)</span>
</span></span><span class="line"><span class="cl"> Tasks: <span class="m">11</span> <span class="o">(</span>limit: 2025<span class="o">)</span>
</span></span><span class="line"><span class="cl"> Memory: 30.4M
</span></span><span class="line"><span class="cl"> CPU: 533ms
</span></span><span class="line"><span class="cl"> CGroup: /system.slice/mcsm-daemon.service
</span></span><span class="line"><span class="cl"> └─245529 /home/mcsmanager/bin/node app.js
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Aug <span class="m">11</span> 16:17:20 iZ2vcimj6d96eq555um1leZ node<span class="o">[</span>245529<span class="o">]</span>: <span class="o">[</span>08/11 16:17:20<span class="o">]</span> <span class="o">[</span>INFO<span class="o">]</span> 所有应用实例已加载,总计 <span class="m">0</span> 个
</span></span><span class="line"><span class="cl">Aug <span class="m">11</span> 16:17:20 iZ2vcimj6d96eq555um1leZ node<span class="o">[</span>245529<span class="o">]</span>: <span class="o">[</span>08/11 16:17:20<span class="o">]</span> <span class="o">[</span>INFO<span class="o">]</span> ----------------------------
</span></span><span class="line"><span class="cl">Aug <span class="m">11</span> 16:17:20 iZ2vcimj6d96eq555um1leZ node<span class="o">[</span>245529<span class="o">]</span>: <span class="o">[</span>08/11 16:17:20<span class="o">]</span> <span class="o">[</span>INFO<span class="o">]</span> 守护进程现已成功启动
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"> systemctl status mcsm-web.service
</span></span><span class="line"><span class="cl">● mcsm-web.service - MCSManager Web
</span></span><span class="line"><span class="cl"> Loaded: loaded <span class="o">(</span>/etc/systemd/system/mcsm-web.service<span class="p">;</span> enabled<span class="p">;</span> preset: enabled<span class="o">)</span>
</span></span><span class="line"><span class="cl"> Active: active <span class="o">(</span>running<span class="o">)</span> since Sun 2024-08-11 16:04:56 CST<span class="p">;</span> 17min ago
</span></span><span class="line"><span class="cl"> Main PID: <span class="m">245187</span> <span class="o">(</span>node<span class="o">)</span>
</span></span><span class="line"><span class="cl"> Tasks: <span class="m">11</span> <span class="o">(</span>limit: 2025<span class="o">)</span>
</span></span><span class="line"><span class="cl"> Memory: 45.8M
</span></span><span class="line"><span class="cl"> CPU: 2.777s
</span></span><span class="line"><span class="cl"> CGroup: /system.slice/mcsm-web.service
</span></span><span class="line"><span class="cl"> └─245187 /home/mcsmanager/bin/node app.js
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Aug <span class="m">11</span> 16:04:57 iZ2vcimj6d96eq555um1leZ node<span class="o">[</span>245187<span class="o">]</span>: <span class="o">[</span>08/11 16:04:57<span class="o">]</span> <span class="o">[</span>INFO<span class="o">]</span> 本地用户数:1
</span></span><span class="line"><span class="cl">Aug <span class="m">11</span> 16:04:57 iZ2vcimj6d96eq555um1leZ node<span class="o">[</span>245187<span class="o">]</span>: <span class="o">[</span>08/11 16:04:57<span class="o">]</span> <span class="o">[</span>INFO<span class="o">]</span> 正在尝试连接远程节点:<span class="o">[</span>xxx<span class="o">]</span>
</span></span><span class="line"><span class="cl">Aug <span class="m">11</span> 16:04:57 iZ2vcimj6d96eq555um1leZ node<span class="o">[</span>245187<span class="o">]</span>: <span class="o">[</span>08/11 16:04:57<span class="o">]</span> <span class="o">[</span>INFO<span class="o">]</span> 远程节点数:1
</span></span><span class="line"><span class="cl">Aug <span class="m">11</span> 16:04:57 iZ2vcimj6d96eq555um1leZ node<span class="o">[</span>245187<span class="o">]</span>: <span class="o">[</span>08/11 16:04:57<span class="o">]</span> <span class="o">[</span>INFO<span class="o">]</span> <span class="o">==================================</span>
</span></span><span class="line"><span class="cl">Aug <span class="m">11</span> 16:04:57 iZ2vcimj6d96eq555um1leZ node<span class="o">[</span>245187<span class="o">]</span>: <span class="o">[</span>08/11 16:04:57<span class="o">]</span> <span class="o">[</span>INFO<span class="o">]</span> 控制面板端已启动
</span></span></code></pre></td></tr></table>
</div>
</div></description>
</item>
<item>
<title>各怀鬼胎</title>
<link>http://localhost:7447/post/electronic-design-competition/</link>
<pubDate>Fri, 09 Aug 2024 13:31:08 +0800</pubDate>
<guid>http://localhost:7447/post/electronic-design-competition/</guid>
<description><img src="http://localhost:7447/post/electronic-design-competition/EDC-2024-post-question.png" alt="Featured image of post 各怀鬼胎" /><h2 id="2024年c题">2024年C题
</h2><blockquote>
<p><a class="link" href="https://raw.githubusercontent.com/mokuaisp/LFS-provider/main/blog/shenghongzha/Electronic_Design_Competition/C%E9%A2%98_%E6%97%A0%E7%BA%BF%E4%BC%A0%E8%BE%93%E4%BF%A1%E5%8F%B7%E6%A8%A1%E6%8B%9F%E7%B3%BB%E7%BB%9F.pdf" target="_blank" rel="noopener"
>题目下载</a> <br>
<a class="link" href="https://raw.githubusercontent.com/mokuaisp/LFS-provider/main/blog/shenghongzha/Electronic_Design_Competition/2024%E5%B9%B4%E7%94%B5%E8%B5%9B%E7%AD%94%E7%96%91.txt" target="_blank" rel="noopener"
>答疑</a></p>
<ul>
<li>参考资料</li>
</ul>
<ol>
<li><a class="link" href="https://blog.csdn.net/qq_39376872/article/details/130616192" target="_blank" rel="noopener"
>AM调制</a></li>
<li><a class="link" href="https://raw.githubusercontent.com/mokuaisp/LFS-provider/main/blog/shenghongzha/Electronic_Design_Competition/AD9959_en.pdf" target="_blank" rel="noopener"
>AD9959</a></li>
</ol>
</blockquote>
<h3 id="题干重新提炼">题干重新提炼
</h3><ol>
<li>测试点应为 $S_D$ 、 $S_M$ 与 $S_{Out}$</li>
<li>$S_D$ 与 $S_M$ 均为合成信号(最好高度可调),且$S_M$与$S_D$应满足$S_M(t) = \alpha *S_D(t + \tau)*e^{j\varphi}$</li>
<li>$S_D$(无线传输信号的直达信号) 可以看作做$W_c$载波信号与$W_m$调制信号的两者相乘的结果。因此$S_M$亦可以看作俩种信号的相乘。</li>
<li>题目要求$W_c$信号的频率$f_c$与有效值$EV_c$可调,对于$W_m$信号其幅度可调。对于无线传输信号而言要求其调制可调,对于$S_M$与$S_D$关系式中的$\alpha$、$\tau$、$\varphi$可调</li>
</ol>
<h3 id="系统架构框图展示">系统架构框图展示
</h3><p><img src="http://localhost:7447/post/electronic-design-competition/2024-C-structure.png"
width="925"
height="346"
srcset="http://localhost:7447/post/electronic-design-competition/2024-C-structure_hu5a743cc8aaeacd7e758a7e4782ecb07c_102998_480x0_resize_box_3.png 480w, http://localhost:7447/post/electronic-design-competition/2024-C-structure_hu5a743cc8aaeacd7e758a7e4782ecb07c_102998_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="框图展示"
class="gallery-image"
data-flex-grow="267"
data-flex-basis="641px"
></p>
<h3 id="方案详解">方案详解
</h3><blockquote>
<p>本部分详细从每个小题目出发,总结我们需要到达的指标,以及每个题目本质上是在考察什么。</p>
</blockquote>
<h4 id="题目一">题目一
</h4><blockquote>
<p>模拟产生一个固定载波频率的无线传输信号,载波频率 $f_c$ 介于30MHz ~ 40MHz 之间,其中直达传输信号$S_D$和多径传输信号$S_M$满足以下要求</p>
</blockquote>
<ol>
<li>可设置无线传输信号为连续波(CW)信号或调幅(AM)信号。对于 AM 信号,其调制信号为 2MHz 频率的正弦信号。</li>
</ol>
<p>第一题第一问要求相对简单,要求我们产生的无线传输信号为CW信号或AM信号即可。需要注意的是<strong>此处所说的是无线传输信号</strong>,无论是直达信号还是多径信号都是无线传输信号。而且要求为CW或AM信号,即既需要做到无线传输信号为CW信号,又需要无线传输信号为AM信号。这里我们需要$\textcolor{red}{无线传输信号可进行切换,自由选择输出AM信号还是CW信号}$</p>
<p>研究AM信号的产生原理见<a class="link" href="https://blog.csdn.net/qq_39376872/article/details/130616192" target="_blank" rel="noopener"
>参考资料1</a>
<img src="http://localhost:7447/post/electronic-design-competition/make-AM-signal.png"
width="1012"
height="382"
srcset="http://localhost:7447/post/electronic-design-competition/make-AM-signal_hufeddb4cc86431bca8addbeff4aea786d_41091_480x0_resize_box_3.png 480w, http://localhost:7447/post/electronic-design-competition/make-AM-signal_hufeddb4cc86431bca8addbeff4aea786d_41091_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="产生AM"
class="gallery-image"
data-flex-grow="264"
data-flex-basis="635px"
></p>
<p>我们巧合发现,只需使调制信号为0,此时的$s(t)$即为连续波信号。</p>
<ul>
<li><strong>因此做完第一题第一问,我们至少需要三路信号,其中俩路信号是正弦波信号,一路信号为直流量。正弦型号一路保持频率保持30MHz ~ 40MHz之间,一路信号频率保持2Mhz,但其幅值至少在俩个不连续的挡位间可切换(0与非0)。本问并不要求$S_D$与$S_M$之间的差异,因此目前可以使$S_D$与$S_M$保持一致</strong></li>
</ul>
<ol start="2">
<li>模拟产生直达传输信号 SD,载波幅度有效值可设置,有效值范围为100mV ~ 1V ,以 100mV 的步进可调,要求幅度有效值误差不大于10mV;对于 AM 信号,其 AM 调制度可设置,调制度范围为 30%~90%,以 10%的步进可调,误差不大于 5%。</li>
</ol>
<p>本题要求$S_D$的$W_c$的有效值$EV_c$可调,需要注意这里的隐含条件。换个角度思考一下,对于测量时,如何从仅有三个测试点$S_D$ 、 $S_M$ 与 $S_{Out}$测量合成前的信号的有效值。对于题目而言他并未要求调制信号的有效值,因此如果测量让使用AM信号测量有效值,对于每个参赛选手的结果必定是不同的,那么他会采用什么方式测量?没错CW信号的有效值。</p>
<p>本题还要求AM信号的调制度可调,便要求直流信号连续可调,调制信号幅值可调。</p>
<p><strong>因此做完第一题第二问,我们至少需要三路信号,其中俩路信号是正弦波信号,一路信号为直流量,其直流量连续可调。正弦型号一路保持频率保持30MHz ~ 40MHz之间,一路信号频率保持2Mhz,但其幅值可以连续可调。本问并不要求$S_D$与$S_M$之间的差异,因此目前可以使$S_D$与$S_M$保持一致</strong></p>
<ol start="3">
<li>模拟产生的多径传输信号 SM,其幅度衰减和时延可设置。相对直达信号,多径信号的时延范围为 50 ~ 200 ns ,以 30ns 的步距步进可调,要求时延误差不大于 10ns;幅度的衰减范围为 0 ~ 20 dB ,以 2 dB 的步进可调,要求衰减误差不大于 1dB。</li>
</ol>
<p>本题需要接触$S_M$与$S_D$之间的关系式$S_M(t) = \alpha *S_D(t + \tau)*e^{j\varphi}$,我们的理解是
<img src="http://localhost:7447/post/electronic-design-competition/SD2SM.png"
width="882"
height="835"
srcset="http://localhost:7447/post/electronic-design-competition/SD2SM_hu4f8b466a9dcc5089176b49130954affe_105596_480x0_resize_box_3.png 480w, http://localhost:7447/post/electronic-design-competition/SD2SM_hu4f8b466a9dcc5089176b49130954affe_105596_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="SD2SM"
class="gallery-image"
data-flex-grow="105"
data-flex-basis="253px"
>
但后来测试过程时延我得知,时延是针对于载波的,二相移是针对与调制信号,我就😥</p>
<p><strong>因此做完第一题第三问,我们至少需要六路信号,其中四路路信号是正弦波信号,两路路信号为直流量,其直流量分别连续可调。正弦型号俩路保持频率保持30MHz ~ 40MHz之间且频率一致,初始相位分别可调,幅度分别可调,两路路信号频率保持2Mhz,但其幅值可以分别连续可调。</strong></p>
<h4 id="题目二">题目二
</h4><ol>
<li>模拟产生直达传输信号 SD,在30MHz ~ 40MHz 范围内设置载波频率,要求频率误差不大于 2%;其他可设置参数满足(1)中 1)和 2)的指标要求。</li>
</ol>
<p>此问只需保证载波频率可调,需要注意的是保证多径信号的载波与直达信号的载波频率一致即可。</p>
<p><strong>因此做完第二题第一问,我们至少需要六路信号,其中四路路信号是正弦波信号,两路路信号为直流量,其直流量分别连续可调。正弦型号俩路保持频率保持30MHz ~ 40MHz之间连续可调且频率一致,初始相位分别可调,幅度分别可调,两路路信号频率保持2Mhz,但其幅值可以分别连续可调。</strong></p>
<ol start="2">
<li>模拟产生多径传输信号 SM,相对直达信号 SD 的初始相位可设置,设置范围为 0° ~ 180° ,以 30°的步进可调,要求初始相位误差不大于10°;其他可设置参数满足(1)中 3)的指标要求。</li>
</ol>
<p><strong>因此做完第二题第二问,我们至少需要六路信号,其中四路路信号是正弦波信号,两路路信号为直流量,其直流量分别连续可调。正弦型号俩路保持频率保持30MHz ~ 40MHz之间连续可调且频率一致,初始相位分别可调,幅度分别可调,两路路信号频率保持2Mhz,但其幅值可以分别连续可调,初始相位可分别调整。</strong></p>
<h4 id="器件选型与代码书写">器件选型与代码书写
</h4><p>对于上述要求需要产生4路正弦信号,幅度、相位、频率可调。推荐使用<strong>AD9959</strong>。两路直流量使用<strong>DAC</strong>产生,推荐一个带两路DA单片机。,计算在单片机内统一运算。系统搭建采用如上框图构建。考虑到ad9959信号出来后最大幅值与频率有关。可以在其信号出来后先接AGC,后接放大器,这样一切幅值控制全靠放大器,避免寻找ad9959信号出来后最大幅值与频率的关系。</p>
<h2 id="2023年h题">2023年H题
</h2><blockquote>
<p><a class="link" href="https://raw.githubusercontent.com/mokuaisp/LFS-provider/main/blog/shenghongzha/Electronic_Design_Competition/H%E9%A2%98_%E4%BF%A1%E5%8F%B7%E5%88%86%E7%A6%BB%E8%A3%85%E7%BD%AE.pdf" target="_blank" rel="noopener"
>题目下载</a></p>
<ul>
<li>参考资料</li>
</ul>
<ol>
<li><a class="link" href="https://doc.embedfire.com/fpga/altera/ep4ce10_pro/zh/latest/code/ip.html#ippll" target="_blank" rel="noopener"
>PLL倍频原理</a></li>
<li><a class="link" href="https://doc.embedfire.com/fpga/altera/ep4ce10_pro/zh/latest/code/dds.html" target="_blank" rel="noopener"
>简易DDS原理</a></li>
</ol>
</blockquote>
<h3 id="难点">难点
</h3><p>本次题目中难点为如何实现<strong>稳定同频显示</strong></p>
<p>这里不采用滤波方案,而是采用分析波形组成(对波形进行FFT即可),重新利用DDS生成合成前的波形。这时便会发现重新产生的波形原信号无法同频显示。网上分析原因的文章已经很多了,这里我就直接说结论,无法实现稳定同频显示的原因是<strong>新产生的产生波形</strong>与<strong>合成前的波形</strong>不是同一个时钟源。也就是解决时钟源同步问题就可以解决同频显示问题。</p>
<p>我们知道合成前波形的频率一定是5khz的倍数。我们取对合成后的波形与地电位进行比较,产生时钟源,然后对其使用锁相环倍频,倍频后作为DDS时钟,使DDS产生波形。需要注意的是倍频倍数与DDS相位累加寄存器的值相关与产生波形与当前时钟的的频率有关。</p>
<p>举个简单的例子,对于20khz的正弦波与30khz的正弦波相加。其合成后的波形频率为10khz,因此要产生20khz的正弦波就需要倍频2*相位数。</p>
<h2 id="各怀鬼胎">各怀鬼胎
</h2><p>说了两道题,现在该瞎聊一下了。先说说队友选择。</p>
<h3 id="队友选择">队友选择
</h3><p>我认为电赛选择队友要先以兴趣为主。即你的队友对电工电子之类的内容比较感兴趣。平常有接触此类内容,或者在你的引导下对此方面有兴趣。单论上课(诸如模电、电路分析之类的)这种,对于解决电赛中的问题太浅薄,是万万不足的,需要平常对电工电子常识有所了解。其次,避免选择专心投身于学习培养方案内课程的人,这类人有一特点,普遍专注于课程学习、理论学习,往往忽视了动手实践的能力,这也是现在大部分大学所面临的一个问题(我认为,不代表就是这样),学生动手实践能力差,即使安排有实验课程,但是学生甚至不做实验,直接剽窃他人数据。或者直接让他人代做。电赛是一个需要把想法快速落地的比赛。没有很好的动手实践能力,很难在电赛中取得好成绩。最后,队友慎重选择熟人,熟人之间不好交流。</p>
<p>队友选择————平常成绩一般,乞求当前竞赛挽救自己的命运,孤注一掷的人。只有在悬崖之巅、绝境之中,人才会拼劲全力!</p>
<h3 id="瞎谈谈">瞎谈谈
</h3><p>说说自己的个人经历吧,我从今年年初开始到8月总计参加了3场电赛,分别是“电赛校赛”、“陕西省工科联赛”、“陕西省TI杯”。短期来看,我的参赛密度算相对较高的。那获奖结果呢?无一列外,没有一个获奖的。原因在哪里?我认为对竞赛不认真对待占大头。要说不认真对待,我认为我所处的实验室有一定的原因,我们实验室学长告诉我们,电赛就是到时候买一点模块拼一拼就好了,我们教练就在培训群里转发消息就再没有具体的培训行为了。可话说到底,我们自己就没有什么问题了吗?为何把错误归咎于他人。我们自己对待一点也不认真,电赛校赛比赛整个五一假期,队友说买几个模块,他有事要回家(呵呵),另一个队友我看其成绩好便拉了进来,但电赛期间连个电路都不会焊接,然后对方案一点想法与建议都没有。平时我在实验室更是难以见到那俩人。工科联赛期间,一个队友要复习数竞。一个队友我已经不记得他在干什么了。因为是熟人,所以也不好说辞别人。7月不出意外,放假了留校总能来实验室了吧。但只有7月25号左右之后才来实验室。属于一点也不懂直接上战场。不错完美。</p>
<p>$\textcolor{red}{努力会有结果吗?}$</p>
<p>$\textcolor{red}{不努力一定不会有,世上永远没有捷径可言}$</p>
</description>
</item>
<item>
<title>语录</title>
<link>http://localhost:7447/page/saying/</link>
<pubDate>Mon, 13 May 2024 00:00:00 +0000</pubDate>
<guid>http://localhost:7447/page/saying/</guid>
<description><ol>
<li>抱怨实质上就是因为事物并未符合自己所构想的方向发展罢了.</li>
<li>努力不一定有回报,但你的钢铁身躯会记住的你的经历.</li>
<li>人总会在接近死亡时才会害怕死亡.</li>
<li>现在失败可能是在还过去的债.</li>
<li>只有在悬崖之巅、绝境之中,人才会拼劲全力!</li>
</ol>
</description>
</item>
<item>
<title>努力一定有结果吗?</title>
<link>http://localhost:7447/post/hard-work-leads-to-success/</link>
<pubDate>Sun, 05 May 2024 21:06:45 +0800</pubDate>
<guid>http://localhost:7447/post/hard-work-leads-to-success/</guid>
<description><img src="http://localhost:7447/post/hard-work-leads-to-success/the-harder-the-luck.png" alt="Featured image of post 努力一定有结果吗?" /><p>如果听一万遍反方向的钟能回到五一放假第一天就好了。如果真的回到五一,在我不知情上次五一所作时,我的选择会不同吗?我很难给出一个确切的答案,毕竟无法回到过去😂。</p>
<p>说来也奇怪,学校的许多比赛的校赛总喜欢在五一举行,或许五一大家都有时间,而且时间足够长?今年五一不出意外,我参加了电赛校赛(又没有出去玩😭),这篇文章算是对我五一假期参赛过程的一个记录,也是对失败的一种反思吧,同时总结一下我从上大学开始到现在参加许多比赛的所见所闻所感。</p>
<p>无论是什么校赛,在五一期间举办总有一个特点,赛程总是比正式比赛(省赛或国赛)长不少,这样也挺好,兼顾了更多的学生,同时也避免了像正式比赛那样的高强度,熬夜伤身体。</p>
<h2 id="回顾电赛校赛">回顾电赛校赛
</h2><p>今年电赛4月28日上午8:00发题,5月5日上午8:00截止(<a class="link" href="https://edc.xidian.edu.cn/html/notices/20240417/198.html" target="_blank" rel="noopener"
>校赛通知</a>)。我在假期前几天课比较多多,虽说时间比较长,但我也是4月30日晚才开始读题。总体来说算是起步比较晚了,但是相较于正式比赛而已,还是比较充裕的,我们这次选的题(<a class="link" href="https://edc.xidian.edu.cn/html/notices/20240428/201.html" target="_blank" rel="noopener"
>A题</a>)也算比较简单。按照这个时间,这个难度,我们应对起来算是比较惬意的。</p>
<p>但也正是因为这种惬意,导致我们大意而错失良机,我们简单阅读题干之后,得出大致方案:方波发生器、滤波器,移相器,加法器、直流偏置、分压电路。这不轻轻松松,游戏结束,至于代码,早已写过相同的,直接秒了。对于滤波器、移相器,我们认为这种重复组件,今年参加省赛(小年)的时候一定会用到,直接上高精度模块,轻轻松松,秒了,上网购置模块,制作方波发生电路,结束。开始摸鱼,或许因为这样的随意对待,造成了我们的失败。</p>
<p>网购的东西不到,我们也没有进行后续操作,只是嘴上一直在说,要个啥,要个啥,却从未动手操作。我代码早已结束,稍微修正了一下精度,控制到99.5%就停了。每天就中午吃完饭去一下实验室,坐到晚上,晚上回去深夜打“塔克夫”,第二天又是12点起床,这样重复了几天,才发现好像一切没有这么容易。事情好像不再按计划进行了。或许人生的轨迹就是在一个个微小的决定中一点点偏航又返航的循环中。</p>
<p>5月3日,先是出现第一天(5月1日)做好且测试了的方波发生电路无法产生方波的消息,再出现硬件(5月2号一个做硬件的回家了,另一个前一段时间在忙数竞国赛,并未投身到电赛训练中)这边焊接的加法电路好像也存在问题,我不能再摸鱼了,便转身开始辅助硬件这边做加法电路,同时嘱咐其去完成报告(我其实在前一天5月2日下午便说,我要做的早都做完了,写会报告吧,但其实我只是改了封面的队号)。</p>
<p>就这样在最后时间,我们开始马马虎虎的赶,要修改方波发生电路,要做加法电路、直流偏置、分压电路。这样看来我们好像什么都没做,所以我在那天开始就开始吐槽,我们好像什么都没做。买的模块只到了移相器,半天也测不明白。5月3日,晚上我紧赶慢赶终于把俩个加法器电路制作完成。我的那个队友也成功把方波发生电路修缮完成。这样看来一切好似都在向好的方向发展。但世事难料,一分耕耘一分收获。我们的大意致使我们的失败已成一种不可避免的事实。</p>
<p>第二天,也是交题前的最后一天,中午工作前滤波模块到达,开始调试。调试好,方波电路又出问题,产生方波的频率变成了3k!!,这时我室友也来找我求程序,我已经有点想要放了的节奏,便帮我室友移植我的代码到他的板子上,我开发STM32使用的稚晖君“<a class="link" href="https://zhuanlan.zhihu.com/p/145801160" target="_blank" rel="noopener"
>配置CLion用于STM32开发【优雅の嵌入式开发】</a>”的这套方案,有时使用PlatformIO进行开发,我的室友使用Keil,同时我会使用git管理代码,我并不想将git的所有分支全部拷贝到室友电脑上,于是我便单独将源码拷出来,重新配置工程,其中也遇到一些困难,同时也去我室友的实验室参观了一下,他的作品如下图。
<img src="http://localhost:7447/post/hard-work-leads-to-success/edc-school-outstanding.jpg"
width="1080"
height="1920"
srcset="http://localhost:7447/post/hard-work-leads-to-success/edc-school-outstanding_hu7fff69ee2247de4231ecae08e1dc737f_551758_480x0_resize_q75_box.jpg 480w, http://localhost:7447/post/hard-work-leads-to-success/edc-school-outstanding_hu7fff69ee2247de4231ecae08e1dc737f_551758_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
alt="室友作品"
class="gallery-image"
data-flex-grow="56"
data-flex-basis="135px"
></p>
<p>参观了他的实验室,听了他的讲解,我其实有点退缩了。我在想到底要不要实物评测(我们的实物感觉十分恶心)。
<img src="http://localhost:7447/post/hard-work-leads-to-success/give-up-show.jpg"
width="951"
height="1807"
srcset="http://localhost:7447/post/hard-work-leads-to-success/give-up-show_hu3e2da94e5f04e406052c3988601c87e3_131605_480x0_resize_q75_box.jpg 480w, http://localhost:7447/post/hard-work-leads-to-success/give-up-show_hu3e2da94e5f04e406052c3988601c87e3_131605_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
alt="放弃实物展示"
class="gallery-image"
data-flex-grow="52"
data-flex-basis="126px"
></p>
<p>或许是这放弃,让我不再想着赶工了,我也开始渐渐冷静下来,不是那么着急了。开始反思了。这次落得这样的结果的原因是什么,为什么他开始慢慢脱离我们的掌控了。如何把一手好牌大的稀烂?</p>
<h2 id="电赛校赛教训">电赛校赛教训
</h2><p>俗话说的,吃一堑、长一智。现在踩得坑越深,之后的遇到浅坑就和平地一样。对于电赛校赛,我总结了以下以下经验,也希望对想参与电赛的同学有所启发吧。</p>
<ol>
<li>获取题的第一时间,队伍内所有人确定技术方案。一定要所有人!!之后可以在队长的主导下,分配一人完成仿真,一人开始写报告开始的方案部分,一人开始简单代码工作。</li>
<li>焊接相关,使用滑动变阻器代替要使用的特殊位置的定值电阻。对于仪器仪表类(信号处理),精度是十分关键的。但对于电阻,其本身存在一定的误差,难以做到与仿真结果一致,同时焊接过程中可能存在电阻损坏或短路导致短路,从而导致误差,因此使用滑动变阻器可以为之后留有一定的修改空间。</li>
<li>整理清楚当前所用材料,使用完放回原位。就本次题目而言,其实即使最后一天也是来得及的,但由于最后的慌乱与实验室的杂乱,导致找东西也浪费不少时间。</li>
</ol>
<h2 id="回归正题">回归正题
</h2><p>说了这么多题外话,该说一说正题了。</p>
<p><strong>努力一定有结果吗?</strong></p>
<p>在回答这个问题之前,我觉得首先有必要确定一个概念:要什么样的结果?努力就要有回报、努力就要有比不努力的人更多的回报。</p>
<p>我认为“越努力,越幸运”。<code>努力不一定有回报,但你的钢铁身躯会记住的你的经历</code>。接下来,我将以我个人在大学俩年期间的竞赛经历与从小到大的学习经历为例。逐渐论证这个观点。</p>
<p>前一阵的时候,我总被我身边的说起,我很聪明之类的话,说我不学也能会诸如此类的话。这么说,我的内心是幸喜若狂的。毕竟谁不喜欢被同龄所认同与夸赞,不可否认,我是一个世俗的人。他们这么说,我也这么相信。毕竟我是真的没有怎么认真学习过,高中边玩边学,也没怎么努力,考上了一个末流211,在别人眼中,好似别人家长眼中的“别人家的孩子”。但对我而言,好像真的什么都未做。大学也是浑浑噩噩,瞎混,瞎搞。但最后成绩好像也还行。</p>
<p>这一切的一切让我沉浸于“我就是聪明,不努力也行”。时间很快,距离六级考试就差一个多月时间,<code>人总会在接近死亡时才会害怕死亡</code>。对我而言,以目前我所掌握的数据,我只要正常发挥,之后保研将是稳定的,但在我们学校有一要求,保研的硬性要求——过六级。对我而言,我在大一6月并未考六级,去年12月首战六级,以相差一百多分而败北。如果我还想保研,我就必须在今年6月或12月通过六级,明年6月即使通过也无法在保研时间点前获得成绩。对我而言,我仅剩最后2次机会。但我仍记得,我的同学,夸我聪明的其中一人,他裸考六级600+,他好像很聪明?而我却没过六级。</p>
<p>我聪明吗?有人会说,每个人都有擅长的领域,术业有专攻,我聪明,他也聪明。可真是如此吗?他们总说“我很聪明”之类的话,我便向着聪明的方向发展,他对我的期望成为我的自我实现的预言,而我相当于完成了他的预言?这是“皮格马利翁效应<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>”,有心理学效应支撑,没错,一定是这样。但好像有问题呀,难道别人说一说你可以,你就可以吗?好像并不行,别人的话语只是对自己的一种暗示,这种暗示只是导火索,爆炸还得靠自己。</p>
<p>我没有怎么认真学习过?我好像否定了自己的努力,我有认真学习过。我从小到大都在认真学习!小时候我很好学,我至今仍记得俩件事,我小学的时候,总喜欢找数学老师去问题,刚开始是去问问题,但后来,我总觉得觉得自己很厉害,便开始研究怎么把老师难住(那个时候网络还不发达,没有什么拍照搜题之类的工具),现在或许回头看问的问题或许很幼稚,但真是当初那位数学老师<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>不断的解答,我不断出题,锻炼我在该方面思维。另一件事是我小学有一段时间沉迷于研究找规律,当初学了能除以3的数所有位数相加都是3的倍数,我便在想别的数呢,如何快速判断一个数能否被别的数整除,比如7或4。我沉迷于找到一个简单的数学形式判断这个问题,我还沉迷于找一个图形中最多有多少个三角形之类的问题,这个问题记得形象极其深刻,我小学放学过马路时曾被轿车撞后便沉迷这个问题,在等交警的时候便在研究这个问题(不能让脑子闲下来,浪费时间)。</p>
<p>我觉得真是因为小学的这种锻炼,让我对这个方面上手速度加快,从而造成我看似很聪明的现象。我将1+1掌握的极其牢固,之后9*9就会很简单,别人1+1还不怎么懂,9*9当然很难学会,不是说学不会,是很难。当然举例或许夸张,但我认为这一观点可以在自己遇到挫折分析原因时作参考。<code>现在失败可能是在还过去的债</code>。基于这个观点,分析我六级为何没过,因为我英语欠的债太多太多。我是仅在刚学英语时有认真付出,但仅仅局限于“What&rsquo;s your name?”,之后便是初二末期,为了中考不得不学习英语,但接触便是应试教育的那一套——如何在你不会做的情况下,把题作对。这短期来看收益最大,但却造成了我长期以来英语漏洞的越来越大。或许英语的问题便在六级处显现了,还是那位600+的同学,他说他英语完全在吃老本,高中到现在都没学过英语,不过他小时候,每天早上听英语音频跟读。他好像和我一样都在“吃老本”。这便是我最开始说的“努力不一定有回报,但你的钢铁身躯会记住的你的经历”。</p>
<p>这件事也让我想起一件事,我在上个学期曾跟着中长跑田径队训练了一段时间,寒假期间到这个学习一直没有怎么练,最近闲下来才有时间捡起来恢复一下,我有明显的感觉,我即使有一段时间没有认真练过,但我的实力也相比于大一刚开学强不少。前几天2024年美国大学生数学建模大赛成绩出了,我们队H奖,但实话实说,我感觉我什么都没做,我买了北海的课程,但从没看过。参加了大学生数学建模竞赛,感觉啥都没做,就是一个省一。所以,我给予评价:数模很水。事实好像并不是这样的,我们学校照样有一堆S(successful Participant)奖,甚至还有U(unsuccessful Participant)奖。当然M奖与F奖也有不少。
<img src="http://localhost:7447/post/hard-work-leads-to-success/running.jpg"
width="1170"
height="6436"
srcset="http://localhost:7447/post/hard-work-leads-to-success/running_hu9e09a1724dec0ec716078c195d1d7a10_702773_480x0_resize_q75_box.jpg 480w, http://localhost:7447/post/hard-work-leads-to-success/running_hu9e09a1724dec0ec716078c195d1d7a10_702773_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
alt="跑步截图"
class="gallery-image"
data-flex-grow="18"
data-flex-basis="43px"
></p>
<p>我竞赛的获奖好像都是在吃老本,截至目前为止,大学我参与过ACM、数学建模、数学竞赛。这些竞赛我都能取得一些小成就,原因在哪?竞赛水平不行?显然是错的,我而是我的老本足够厚,这让我能取得一些小成绩,正是这些小成绩,我对外说,竞赛其实很简单。别人在趋利的形式下,进入竞赛,他努力了或许就有结果。没努力呢?他成为别人有老本的人的垫子<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>。而没努力获奖的人又会去告诉别人这个竞赛很简单,形成了对部分人的“良性循环”。这部分人,他们无论如何是有老本,曾经努力过的,所以他们能够幸运的进入“良性循环”之中。</p>
<p>现在再次回答最开始的问题,努力一定有结果吗?明确一个概念:结果是指努力的人就要有比不努力的人更多的回报。我的答案是“努力不一定有结果。但越努力,越幸运,努力不一定有回报,但你的钢铁身躯会记住的你的经历”。</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>皮格马利翁效应,又称罗森塔尔效应,通常指一个人对另一个人行为的期望成为自我实现的预言的现象。最早由罗伯特·罗森塔尔(Robert Rosenthal)与伊迪丝·雅各布森(Edith Jacobson)正式提出。他们在实验中从班级中随机挑选部分学生,告诉教师这些学生拥有过人的智力水平,极具发展潜能,但要对其他人保密。一段时间后发现这些被随机选中的学生成绩进步很大,且变得十分自信积极。总结来说,是教师对学生形成的期望会使学生的学习成绩和行为表现向符合该期望的方向发展。这一效应启示我们,如果你对他人有所期待,可以通过以真诚的态度对待对方,给予其由衷的赞赏,从而调动其积极性,促使其朝着自己所期望的方向发展,这份期待或许就会成真。&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>在此感谢那位数学老师的知道,我忘记了您的名字,但您对我启迪够我受益终身,鞠躬致谢!&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>大多数竞赛参赛人数的比例发奖,一个竞赛参与人数越多,就有越多的人能获奖,而对于没有获奖的人,一般称其为垫子,因为他的参与可能使一些本不能获奖的人获奖,帮助别人垫高了。&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
</description>
</item>
<item>
<title>优雅的博客界面</title>
<link>http://localhost:7447/post/blog-config/</link>
<pubDate>Wed, 01 May 2024 21:08:43 +0800</pubDate>
<guid>http://localhost:7447/post/blog-config/</guid>
<description><img src="http://localhost:7447/post/blog-config/hugo-stack.png" alt="Featured image of post 优雅的博客界面" /><blockquote>
<p>上期<a class="link" href="https://blog.mokuai.space/post/blog-build/" target="_blank" rel="noopener"
>用hugo搭建一个属于自己的博客</a>搭建了一个博客,本期博客从三个方面详细讲解配置一个“优雅”的博客</p>
</blockquote>
<h2 id="基础配置">基础配置
</h2><blockquote>
<p>这部分将从基础配置文件角度配置自己的博客</p>
</blockquote>
<h3 id="配置正确的阅读统计">配置正确的阅读统计
</h3><p>写了一段时间博客,会发现即使有的博客写的字数很多,但他阅读时间仅为1分钟,这是由于当前博客并未正确配置字数统计,需要注意的是,阅读时间是有字数计算得出。</p>
<ul>
<li>配置hugo.toml</li>
</ul>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="nx">hasCJKLanguage</span> <span class="p">=</span> <span class="kc">true</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>将上述内容修改成true,将其修改后,字数统计将加入zh-cn ja ko。从而阅读时间正确。</p>
<h3 id="配置上次修改时间">配置上次修改时间
</h3><p>有的时候,博客从创立到写完需要很长时间,也有时候出现后续修改之前写的博客的情况,因此在特定情况下,最后修改时间比博客创建时间更重要,最后修改时间也是时效性的彰显。对于项目,我们一般采用git进行版本管理,而在git中会记录提交时间,将其作为最后修改时间是不错的选择。</p>
<ul>
<li>配置hugo.toml</li>
</ul>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="nx">ableGitInfo</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">frontmatter</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"> <span class="nx">lastmod</span> <span class="p">=</span> <span class="p">[</span><span class="s2">&#34;:git&#34;</span><span class="p">,</span> <span class="s2">&#34;:fileModTime&#34;</span><span class="p">,</span> <span class="s2">&#34;lastmod&#34;</span><span class="p">,</span> <span class="s2">&#34;:default&#34;</span><span class="p">]</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>添加如上内容到hugo.toml</p>
<h3 id="配置代码高亮">配置代码高亮
</h3><p>博客中时长会出现代码,默认的代码格式丑陋且不带有行数显示,配置一个好看的代码显示无论是对未来自己再次阅读还是别人阅读来说都是不错的体验。</p>
<ul>
<li>配置config/_default/makeup.toml</li>
</ul>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">highlight</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">noClasses</span> <span class="p">=</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl"><span class="nx">codeFences</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">guessSyntax</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">lineNoStart</span> <span class="p">=</span> <span class="mi">1</span>
</span></span><span class="line"><span class="cl"><span class="nx">lineNos</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">lineNumbersInTable</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl"><span class="nx">tabWidth</span> <span class="p">=</span> <span class="mi">4</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="界面配置">界面配置
</h2><p>这里的配置主要参考 themes\hugo-theme-stack\exampleSite\content。</p>
<h3 id="为分类添加封面">为分类添加封面
</h3><p>在自己的content的目录下创建categories自己定义的类别,然后创建_index.md。例如:
该博客博客头为:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">title </span><span class="p">:</span><span class="w"> </span><span class="s1">&#39;优雅的博客界面&#39;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">description </span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;本文将介绍一些Hugo主题Stack的配置,从而让自己的博客&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">date </span><span class="p">:</span><span class="w"> </span><span class="ld">2024-05-01T21:08:43</span><span class="m">+08</span><span class="p">:</span><span class="m">00</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">draft </span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">slug </span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;blog-config&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">image </span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;hugo-stack.png&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">categories </span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">tech</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">tags </span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">Hugo</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">Stack</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">Blog</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nn">---</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>因此该博客属于tech类,创建content\categories\tech_index.md
编辑其内容为</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span><span class="lnt">9
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;技术&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;记录一些新学的知识&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">slug</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;tech&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;tech.png&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">style</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">background</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;#df705e&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">color</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;#fff&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nn">---</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><h3 id="侧边菜单栏">侧边菜单栏
</h3><p>在自己的content的目录下创建page自己定义的类别,然后创建index.md。例如:
添加归档与RSS订阅</p>
<ul>
<li>归档
创建content\page\archives\index.md添加以下内容</li>
</ul>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;归档&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">date</span><span class="p">:</span><span class="w"> </span><span class="ld">2024-04-20</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">layout</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;archives&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">slug</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;archives&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">menu</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">main</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">weight</span><span class="p">:</span><span class="w"> </span>-<span class="m">70</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">params</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">icon</span><span class="p">:</span><span class="w"> </span><span class="l">archives</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nn">---</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><ul>
<li>RSS订阅
创建content\page\rss\index.md添加如下内容</li>
</ul>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="l">RSS订阅</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">menu</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">social</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">weight</span><span class="p">:</span><span class="w"> </span>-<span class="m">90</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">params</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">icon</span><span class="p">:</span><span class="w"> </span><span class="l">rss</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">comments </span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span>!<span class="p">[</span><span class="l">RSS订阅](rss.svg)[https://blog.mokuai.space/index.xml](https://blog.mokuai.space/index.xml)</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>其余的界面级侧边栏参考themes\hugo-theme-stack\exampleSite\content\page中内容</p>
<h2 id="魔改主题">魔改主题
</h2><p>通过修改主题中的内容,配置出独特的主题功能</p>
<h3 id="修正部分汉语翻译">修正部分汉语翻译
</h3><p>复制themes\hugo-theme-stack\i18n\zh-cn.yaml到i18n\zh-cn.yaml文件</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span><span class="lnt">9
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-diff" data-lang="diff"><span class="line"><span class="cl">darkMode:
</span></span><span class="line"><span class="cl"><span class="gd">- other: 暗色模式
</span></span></span><span class="line"><span class="cl"><span class="gd"></span><span class="gi">+ other: 深色模式
</span></span></span><span class="line"><span class="cl"><span class="gi"></span>
</span></span><span class="line"><span class="cl">...
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> lastUpdatedOn:
</span></span><span class="line"><span class="cl"><span class="gd">- other: 最后更新于
</span></span></span><span class="line"><span class="cl"><span class="gd"></span><span class="gi">+ other: 最后修改于
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>通过如上修改使汉语翻译更符合习惯。</p>
<h3 id="修改自定义页脚">修改自定义页脚
</h3><p>复制themes\hugo-theme-stack\layouts\partials\footer\footer.html到layouts\partials\footer\footer.html文件</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span></code></pre></td>
<td class="lntd">