-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsearch.xml
4717 lines (4714 loc) · 453 KB
/
search.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"?>
<search>
<entry>
<title>GitHub page 备份到 cloudflare page</title>
<url>/2024/10/06/GitHub%20page%20%E5%A4%87%E4%BB%BD%E5%88%B0%20cloudflare%20page/</url>
<content><![CDATA[<p>cloudflare page 只需要连接 github
的仓库就可以了,不需要配置任何密匙,并且可以绑定自己的域名</p>
<p>zeroandone.pages.dev</p>
<p>pl.zeroandone.eu.org</p>
]]></content>
<categories>
<category>折腾</category>
</categories>
<tags>
<tag>GitHub page</tag>
<tag>cloudflare page</tag>
</tags>
</entry>
<entry>
<title>adb连接TCL75Q10GPro</title>
<url>/2024/09/16/adb%E8%BF%9E%E6%8E%A5TCL75Q10GPro/</url>
<content><![CDATA[<h2 id="前言">前言</h2>
<p>苦于无法在电视上设置网络的网关,所以采用迂回的办法:通过adb修改电视的http代理设置。</p>
<h2 id="电视上打开adb">电视上打开adb</h2>
<pre><code class=" mermaid">graph LR
A[设置] --> B[关于] --> C[本机信息] --> D[依次按遥控器上下左右键]
</code></pre>
<p>然后就可以看到adb的选项,打开即可</p>
<h2 id="在电脑上通过adb连接">在电脑上通过adb连接</h2>
<p>安装adb自行百度,在同一局域网下 <figure class="highlight apache"><table><tr><td class="code"><pre><code class="hljs apache"><span class="hljs-attribute">adb</span> connect 电视ip:<span class="hljs-number">5555</span><br></code></pre></td></tr></table></figure>
电视上会跳出权限对话框,选择一律允许连接即可连接成功</p>
<p>添加proxy的命令:</p>
<figure class="highlight livecodeserver"><table><tr><td class="code"><pre><code class="hljs livecodeserver"><span class="hljs-comment">#To Add Proxy</span><br>adb <span class="hljs-built_in">shell</span> settings <span class="hljs-built_in">put</span> <span class="hljs-built_in">global</span> http_proxy <span class="hljs-number">192.168</span><span class="hljs-number">.1</span><span class="hljs-number">.120</span>:<span class="hljs-number">10809</span><br><br><span class="hljs-comment">#To Remove Proxy</span><br>adb <span class="hljs-built_in">shell</span> settings <span class="hljs-built_in">put</span> <span class="hljs-built_in">global</span> http_proxy :<span class="hljs-number">0</span><br></code></pre></td></tr></table></figure>
<p>修改为自己dns的命令 <figure class="highlight livecodeserver"><table><tr><td class="code"><pre><code class="hljs livecodeserver"><span class="hljs-comment">#设置私有dns模式为hostname模式</span><br>adb <span class="hljs-built_in">shell</span> settings <span class="hljs-built_in">put</span> <span class="hljs-built_in">global</span> private_dns_mode hostname<br><span class="hljs-comment">#设置hostname的dot地址,注意必须是域名,ip地址无效</span><br>adb <span class="hljs-built_in">shell</span> settings <span class="hljs-built_in">put</span> <span class="hljs-built_in">global</span> private_dns_specifier yourid.nextdns.io<br><span class="hljs-comment">#关闭私有dns</span><br>adb <span class="hljs-built_in">shell</span> settings <span class="hljs-built_in">put</span> <span class="hljs-built_in">global</span> private_dns_mode off<br></code></pre></td></tr></table></figure> ## 后记
openwrt的ssrplus只能提供socks代理,并不提供http代理,而adb好像只能设置http代理,所以需要将op的socks代理转为http代理。</p>
<p>利用<code>privoxy</code>实现,具体参考<a
href="https://blog.csdn.net/u011005745/article/details/132383080">使用Privoxy为Openwrt的ssrplus开启http代理服务器_openwrt
代理服务器-CSDN博客</a>,如果不能安装privoxy的话,可以先更换一下opkg的源再安装就没问题了。</p>
<h2 id="系统更新后有惊喜">系统更新后有惊喜</h2>
<p>9月份系统更新版本v8-t653t11-lf1v320.002164后,国庆节期间偶然发现wifi里面可以手动设置ip地址、dns服务器和<strong>网关</strong>了!!!!</p>
<p>留坑待填:如何禁止系统更新或者寻找该系统的固件备用(t653t11代表机器芯片型号)</p>
]]></content>
<categories>
<category>折腾</category>
</categories>
<tags>
<tag>openwrt</tag>
<tag>adb</tag>
</tags>
</entry>
<entry>
<title>自动部署Hexo</title>
<url>/2024/08/01/%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2Hexo/</url>
<content><![CDATA[<h2 id="创建两个github仓库">创建两个Github仓库</h2>
<p>在 Github 网站建立两个仓库,名称任意。其中一个仓库用于存放 Blog
文件的源码(以下称
<strong>仓库A</strong>),另一个用于存放生成以后的静态内容,即
<code>public</code> 目录下的内容(以下称 <strong>仓库B</strong>)。</p>
<p><a href="https://hui-shao.com/hexo-github-action-vervel/">使用 Github
Action + Vercel 为 Hexo 的 Pandoc 渲染器提供支持 | Hui-Shao's
Blog</a></p>
<h2
id="创建个人访问令牌personal-access-token">创建个人访问令牌(Personal
Access Token)</h2>
<p>因为我们需要在 <strong>Hexo 项目仓库A</strong> 执行 <strong>Github
Actions</strong> 向 <strong>username.github.io
仓库B</strong>推送代码,由于 Github 权限限制,我们需要在 GitHub
账户中创建一个具有足够权限的<strong>个人访问令牌(Personal Access
Token,简称 PAT)</strong>。这个令牌需要有足够的权限来修改仓库。然后在
secrects 里面添加 PERSONAL_TOKEN</p>
<p><a
href="https://hackergavin.com/2024/01/11/hexo-automate-deploy/">利用
GitHub Actions 实现自动化部署 Hexo 到 Github Pages
(hackergavin.com)</a></p>
<h2 id="创建-github-actions-脚本">创建 Github Actions 脚本</h2>
<ol type="1">
<li>在你的 Hexo 项目仓库A根目录下创建一个
<strong>.github/workflows</strong> 文件夹(如果尚未存在)。</li>
<li>在该文件夹内创建一个新的 <strong>YAML</strong> 文件(例如
hexo-deploy.yml),用于定义 <strong>GitHub Actions</strong>
工作流。</li>
<li>复制如下配置到 <strong>YAML</strong> 文件</li>
</ol>
<figure class="highlight yaml"><table><tr><td class="code"><pre><code class="hljs yaml"><span class="hljs-attr">name:</span> <span class="hljs-string">Deploy</span> <span class="hljs-string">Hexo</span> <span class="hljs-string">to</span> <span class="hljs-string">GitHub</span> <span class="hljs-string">Pages</span><br><br><span class="hljs-attr">on:</span><br> <span class="hljs-attr">push:</span><br> <span class="hljs-attr">branches:</span><br> <span class="hljs-bullet">-</span> <span class="hljs-string">master</span> <span class="hljs-comment"># 或你使用的默认分支名称</span><br><br><span class="hljs-attr">jobs:</span><br> <span class="hljs-attr">deploy:</span><br> <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span><br><br> <span class="hljs-attr">steps:</span><br> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Checkout</span> <span class="hljs-string">blog</span> <span class="hljs-string">source</span><br> <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/checkout@v2</span><br> <span class="hljs-attr">with:</span><br> <span class="hljs-attr">path:</span> <span class="hljs-string">blog</span><br><br> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Set</span> <span class="hljs-string">up</span> <span class="hljs-string">Node.js</span><br> <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/setup-node@v1</span><br> <span class="hljs-attr">with:</span><br> <span class="hljs-attr">node-version:</span> <span class="hljs-string">"16"</span> <span class="hljs-comment"># 设置 Node.js 版本</span><br><br> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Cache</span> <span class="hljs-string">dependencies</span><br> <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/cache@v2</span><br> <span class="hljs-attr">with:</span><br> <span class="hljs-attr">path:</span> <span class="hljs-string">node_modules</span><br> <span class="hljs-attr">key:</span> <span class="hljs-string">${{</span> <span class="hljs-string">runner.os</span> <span class="hljs-string">}}-node-${{</span> <span class="hljs-string">hashFiles('**/package-lock.json')</span> <span class="hljs-string">}}</span><br> <span class="hljs-attr">restore-keys:</span> <span class="hljs-string">|</span><br> <span class="hljs-string">${{</span> <span class="hljs-string">runner.os</span> <span class="hljs-string">}}-node-</span><br><br> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Install</span> <span class="hljs-string">dependencies</span><br> <span class="hljs-attr">run:</span> <span class="hljs-string">npm</span> <span class="hljs-string">install</span><br> <span class="hljs-attr">working-directory:</span> <span class="hljs-string">./blog</span><br><br> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Install</span> <span class="hljs-string">Hexo</span> <span class="hljs-string">CLI</span><br> <span class="hljs-attr">run:</span> <span class="hljs-string">npm</span> <span class="hljs-string">install</span> <span class="hljs-string">-g</span> <span class="hljs-string">hexo-cli</span><br> <span class="hljs-attr">working-directory:</span> <span class="hljs-string">./blog</span><br><br> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Setup</span> <span class="hljs-string">pandoc</span><br> <span class="hljs-attr">uses:</span> <span class="hljs-string">nikeee/setup-pandoc@v1</span> <span class="hljs-comment"># 可选项,如果是用pandoc渲染的话,需要安装这个</span><br> <br> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Generate</span> <span class="hljs-string">static</span> <span class="hljs-string">pages</span><br> <span class="hljs-attr">run:</span> <span class="hljs-string">hexo</span> <span class="hljs-string">generate</span><br> <span class="hljs-attr">working-directory:</span> <span class="hljs-string">./blog</span><br><br> <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Deploy</span> <span class="hljs-string">to</span> <span class="hljs-string">GitHub</span> <span class="hljs-string">Pages</span><br> <span class="hljs-attr">uses:</span> <span class="hljs-string">peaceiris/actions-gh-pages@v3</span><br> <span class="hljs-attr">with:</span><br> <span class="hljs-attr">personal_token:</span> <span class="hljs-string">${{</span> <span class="hljs-string">secrets.PERSONAL_TOKEN</span> <span class="hljs-string">}}</span><br> <span class="hljs-attr">publish_dir:</span> <span class="hljs-string">./blog/public</span><br> <span class="hljs-attr">external_repository:</span> <span class="hljs-string">andyppang/andyppang.github.io</span> <span class="hljs-comment"># 更改为你的 GitHub Pages 仓库</span><br> <span class="hljs-attr">publish_branch:</span> <span class="hljs-string">master</span> <span class="hljs-comment"># GitHub Pages 分支</span><br><br></code></pre></td></tr></table></figure>
<h2 id="大功告成">大功告成</h2>
<ol type="1">
<li><p>提交本地的 Hexo 项目代码到对应 Github 仓库即可触发 <strong>Github
Actions</strong> 工作流实现自动部署,然后访问你的
<strong>username.github.io</strong> !</p></li>
<li><p>或者直接在github仓库A的source/_posts文件夹下添加文件,开始写博客,写完就会自动部署到仓库B</p></li>
</ol>
]]></content>
<categories>
<category>折腾</category>
</categories>
<tags>
<tag>hexo</tag>
<tag>github actions</tag>
</tags>
</entry>
<entry>
<title>Github actions 测试发送</title>
<url>/2024/08/01/Github%20actions%20%E6%B5%8B%E8%AF%95%E5%8F%91%E9%80%81/</url>
<content><![CDATA[<h1 id="测试文">测试文</h1>
<h2 id="测试文-1">测试文</h2>
<h3 id="测试文-2">测试文</h3>
]]></content>
<categories>
<category>折腾</category>
</categories>
<tags>
<tag>github actions</tag>
</tags>
</entry>
<entry>
<title>截图识别数学公式为latex代码</title>
<url>/2023/05/29/%E6%88%AA%E5%9B%BE%E8%AF%86%E5%88%AB%E6%95%B0%E5%AD%A6%E5%85%AC%E5%BC%8F%E4%B8%BAlatex%E4%BB%A3%E7%A0%81/</url>
<content><![CDATA[<h2 id="实现的几种途径">实现的几种途径</h2>
<ul>
<li><p>商用的最有名的Mathpix</p></li>
<li><p>免费的:https://simpletex.cn</p></li>
<li><p>开源的两个项目:</p>
<p><a
href="https://github.com/lukas-blecher/LaTeX-OCR">lukas-blecher/LaTeX-OCR:
pix2tex: Using a ViT to convert images of equations into LaTeX code.
(github.com)</a></p>
<p><a href="https://github.com/breezedeus/Pix2Text">breezedeus/Pix2Text:
Pix In, Latex & Text Out. Recognize Chinese, English Texts, and Math
Formulas from Images. (github.com)</a></p></li>
</ul>
<p>本文主要介绍开源的两个项目的安装使用</p>
<h2 id="latex-ocrpix2tex">LaTex-OCR:pix2tex</h2>
<p>该项目的目标是创建一个基于学习的系统,它可以接收一张数学公式的图片,并返回相应的LaTeX代码。</p>
<ol type="1">
<li><p><strong>系统已经安装Python3.7+</strong></p></li>
<li><p>国内网络环境建议更换pip源</p>
<figure class="highlight awk"><table><tr><td class="code"><pre><code class="hljs awk">pip install -i https:<span class="hljs-regexp">//</span>pypi.tuna.tsinghua.edu.cn/simple pip --trusted-host<br></code></pre></td></tr></table></figure></li>
<li><p>然后一行代码</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><code class="hljs shell">pip install pix2tex[gui]<br></code></pre></td></tr></table></figure></li>
<li><p>在终端输入命令
<code>latexocr</code>就会调用应用程序,对公式截图即可自动转换并且自动复制latex代码,其中界面当中的参数
<code>Temperature</code>调整是公式识别的精度</p></li>
</ol>
<p>安装过程中如果出现各种错误,善用各种搜索引擎和各种AI,感觉可以和chatgpt媲美的Perplexity.ai</p>
<p>自己安装过程中总是提示找不到PyQt的各种包,也许有用的一个命令</p>
<figure class="highlight apache"><table><tr><td class="code"><pre><code class="hljs apache"><span class="hljs-attribute">pip</span> install PyQt<span class="hljs-number">6</span>-WebEngine==<span class="hljs-number">6</span>.<span class="hljs-number">5</span>.<span class="hljs-number">0</span><br></code></pre></td></tr></table></figure>
<p>还有调用api的用法,请参看项目主页</p>
<h2 id="pix2text">pix2text</h2>
<p>从名字来看,这是pix2tex项目的加强版,pix2tex只能识别数学公式,而pix2text希望能识别文字和公式混合的场景,从使用的效果来看,还有很大的进步空间</p>
<figure class="highlight awk"><table><tr><td class="code"><pre><code class="hljs awk">pip install pix2text -i https:<span class="hljs-regexp">//</span>pypi.doubanio.com/simple<br></code></pre></td></tr></table></figure>
<p>如果电脑中从未安装过 <code>PyTorch</code>,<code>OpenCV</code>
python包,初次安装可能会遇到不少问题,善用各种搜索引擎和AI</p>
<p>各种使用方式看项目主页即可,我使用的是本机<a
href="https://github.com/breezedeus/Pix2Text#%E8%84%9A%E6%9C%AC%E8%BF%90%E8%A1%8C">脚本运行</a></p>
]]></content>
<categories>
<category>数学</category>
</categories>
<tags>
<tag>latex-ocr</tag>
</tags>
</entry>
<entry>
<title>手动搭建chatgpt-mirai-qqbot对接AI和聊天软件</title>
<url>/2023/05/25/%E6%89%8B%E5%8A%A8%E6%90%AD%E5%BB%BAchatgpt-mirai-qqbot%E5%AF%B9%E6%8E%A5AI%E5%92%8C%E8%81%8A%E5%A4%A9%E8%BD%AF%E4%BB%B6/</url>
<content><![CDATA[<h2 id="说明">说明</h2>
<p>前面用docker-compose一键搭建过,为了方便调试各种错误,这次手动一步步搭建,也顺便学习一些新东西。</p>
<h2 id="准备工作">准备工作</h2>
<ul>
<li><p>两个qq账号</p></li>
<li><p>一个微信账号</p></li>
<li><p>一个tg账号:<a
href="https://www.dengnz.com/2020/11/23/telegram-%E6%9C%BA%E5%99%A8%E4%BA%BA%E7%9A%84%E7%94%B3%E8%AF%B7%E5%92%8C%E8%AE%BE%E7%BD%AE%E5%9B%BE%E6%96%87%E6%95%99%E7%A8%8B/">新建bot获取token</a>,<a
href="https://cloud.tencent.com/developer/article/1948136">获取chatid</a></p></li>
<li><p>一个chatgpt账号<a
href="https://chatgpt-qq.lss233.com/pei-zhi-wen-jian-jiao-cheng/jie-ru-ai-ping-tai/jie-ru-openai-de-chatgpt">获取access
token</a></p></li>
<li><p>一个bing账号<a
href="https://chatgpt-qq.lss233.com/pei-zhi-wen-jian-jiao-cheng/jie-ru-ai-ping-tai/jie-ru-new-bing-sydney">获取cookie</a></p></li>
<li><p>一个Google bard账户<a
href="https://chatgpt-qq.lss233.com/pei-zhi-wen-jian-jiao-cheng/jie-ru-ai-ping-tai/jie-ru-google-bard">获取cookie</a></p></li>
<li><p>国内和国外vps各一台(国外vps负责接入AI,国内vps负责挂qq和微信)</p></li>
<li><p>国外vps安装Python3.11及以上版本(chatgpt-mirai-qqbot需要的要求)</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash"> 以下是Debian10或11安装Python3.11的命令</span><br><br>sudo apt update && sudo apt upgrade<br><br>sudo apt install wget build-essential libncursesw5-dev libssl-dev \<br> libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev<br> <br>wget https://www.python.org/ftp/python/3.11.3/Python-3.11.3.tgz<br><br>tar xzf Python-3.11.3.tgz<br><br>cd Python-3.11.3<br><br>./configure --enable-optimizations<br><br>make altinstall<br><br>python3.11 -V<br><span class="hljs-meta">#</span><span class="bash"> 如果系统有多个版本的python,注意看默认使用的版本是不是3.11</span><br></code></pre></td></tr></table></figure></li>
</ul>
<h2 id="项目地址">项目地址</h2>
<ul>
<li><a
href="https://github.com/lss233/chatgpt-mirai-qq-bot">lss233/chatgpt-mirai-qq-bot:
🚀 一键部署!真正的 AI
聊天机器人!支持ChatGPT、文心一言、Bing、Bard、ChatGLM、POE,多账号,人设调教,虚拟女仆、图片渲染、语音发送
| 支持 QQ、Telegram、Discord、微信 等平台 (github.com)</a></li>
<li><a href="https://github.com/Mrs4s/go-cqhttp">Mrs4s/go-cqhttp:
cqhttp的golang实现,轻量、原生跨平台. (github.com)</a></li>
<li><a href="https://github.com/lcjqyml/wechatbot">lcjqyml/wechatbot: A
chatbot for wechat. (github.com)</a></li>
</ul>
<h2 id="搭建项目本体">搭建项目本体</h2>
<p>在国外vps上:</p>
<figure class="highlight awk"><table><tr><td class="code"><pre><code class="hljs awk">git clone https:<span class="hljs-regexp">//gi</span>thub.com<span class="hljs-regexp">/lss233/</span>chatgpt-mirai-qq-bot<br>cd chatgpt-mirai-qq-bot<br>pip3 install -r requirements.txt<br></code></pre></td></tr></table></figure>
<h2 id="接入各种ai">接入各种AI</h2>
<p>调整配置文件config.cfg,没有就自己创建,如果不需要接入那么多的ai和聊天软件就注释或删除</p>
<figure class="highlight python"><table><tr><td class="code"><pre><code class="hljs python">[onebot]<br>qq=小号qq<br>manager_qq=管理员qq<br><span class="hljs-comment"># 此处保持默认设置,无需修改</span><br>reverse_ws_host = <span class="hljs-string">"0.0.0.0"</span><br>reverse_ws_port = <span class="hljs-number">8554</span><br><br>[telegram]<br><span class="hljs-comment"># 这个 token 是找 BotFather 要的</span><br>bot_token = <span class="hljs-string">""</span><br><span class="hljs-comment"># 如果部署在国内,就填这个设置代理</span><br><span class="hljs-comment"># 不填的话就会读取系统的代理设置</span><br><span class="hljs-comment"># proxy = "http://localhost:1080"</span><br><span class="hljs-comment"># 管理员的 chat id</span><br>manager_chat = <br><br>[openai]<br>[[openai.accounts]]<br>access_token = <span class="hljs-string">"换成自己的"</span><br><br>[bing]<br><span class="hljs-comment"># 开启 Bing 画图功能</span><br>use_drawing = true<br>[[bing.accounts]]<br>cookie_content = <span class="hljs-string">'换成自己的'</span><br><br><span class="hljs-comment">#[poe]</span><br><span class="hljs-comment">#[[poe.accounts]]</span><br><span class="hljs-comment"># 登陆 poe.com 网站后,通过开发者工具查看Cookie获取</span><br><span class="hljs-comment">#p_b = "这个秒封,不建议接入"</span><br><br>[bard]<br>[[bard.accounts]]<br>cookie_content = <span class="hljs-string">'换成自己的'</span><br><br>[http]<br>host = <span class="hljs-string">"0.0.0.0"</span><br><span class="hljs-comment"># 填写提供服务的端口,此端口用来接入微信</span><br>port = <span class="hljs-number">8234</span><br><span class="hljs-comment"># 是否开启调试</span><br>debug = false<br><br></code></pre></td></tr></table></figure>
<h2 id="接入聊天软件">接入聊天软件</h2>
<p>在国内vps上</p>
<h3
id="安装go-cqhttp接入qq最困难的一步先看再动">安装go-cqhttp接入qq(最困难的一步,先看再动)</h3>
<ol type="1">
<li><p><a
href="https://github.com/Mrs4s/go-cqhttp/releases">下载</a>最新版适合自己vps的软件包</p></li>
<li><p>解压包 <code>tar -xzvf [文件名]</code></p></li>
<li><p>cd 进入解压目录</p></li>
<li><p>输入 <code>./go-cqhttp</code>
回车运行,选择3反向WebSocket,生成配置文件</p></li>
<li><p>按下述样例修改配置:最简配置可只关注account和servers两项</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash"> go-cqhttp 默认配置文件</span><br><br>account: # 账号相关<br> uin: # QQ账号<br> password: '' # 密码为空时使用扫码登录,如果device.json里面的protocol选择的是2也就是watch在线,就留空扫码登录,需要手机端qq和vps在同一ip才能扫码<br> encrypt: false # 是否开启密码加密<br> status: 17 # 在线状态(任意都行) 请参考 https://docs.go-cqhttp.org/guide/config.html#在线状态<br> relogin: # 重连设置<br> delay: 3 # 首次重连延迟, 单位秒<br> interval: 3 # 重连间隔<br> max-times: 0 # 最大重连次数, 0为无限制<br><br><span class="hljs-meta"> #</span><span class="bash"> 是否使用服务器下发的新地址进行重连</span><br><span class="hljs-meta"> #</span><span class="bash"> 注意, 此设置可能导致在海外服务器上连接情况更差</span><br> use-sso-address: true<br><span class="hljs-meta"> #</span><span class="bash"> 是否允许发送临时会话消息</span><br> allow-temp-session: false<br><br>heartbeat:<br><span class="hljs-meta"> #</span><span class="bash"> 心跳频率, 单位秒</span><br><span class="hljs-meta"> #</span><span class="bash"> -1 为关闭心跳</span><br> interval: 5<br><br>message:<br><span class="hljs-meta"> #</span><span class="bash"> 上报数据类型</span><br><span class="hljs-meta"> #</span><span class="bash"> 可选: string,array</span><br> post-format: string<br><span class="hljs-meta"> #</span><span class="bash"> 是否忽略无效的CQ码, 如果为假将原样发送</span><br> ignore-invalid-cqcode: false<br><span class="hljs-meta"> #</span><span class="bash"> 是否强制分片发送消息</span><br><span class="hljs-meta"> #</span><span class="bash"> 分片发送将会带来更快的速度</span><br><span class="hljs-meta"> #</span><span class="bash"> 但是兼容性会有些问题</span><br> force-fragment: false<br><span class="hljs-meta"> #</span><span class="bash"> 是否将url分片发送</span><br> fix-url: false<br><span class="hljs-meta"> #</span><span class="bash"> 下载图片等请求网络代理</span><br> proxy-rewrite: ''<br><span class="hljs-meta"> #</span><span class="bash"> 是否上报自身消息</span><br> report-self-message: false<br><span class="hljs-meta"> #</span><span class="bash"> 移除服务端的Reply附带的At</span><br> remove-reply-at: false<br><span class="hljs-meta"> #</span><span class="bash"> 为Reply附加更多信息</span><br> extra-reply-data: false<br><span class="hljs-meta"> #</span><span class="bash"> 跳过 Mime 扫描, 忽略错误数据</span><br> skip-mime-scan: false<br><span class="hljs-meta"> #</span><span class="bash"> 是否自动转换 WebP 图片</span><br> convert-webp-image: false<br><br>output:<br><span class="hljs-meta"> #</span><span class="bash"> 日志等级 trace,debug,info,warn,error</span><br> log-level: warn<br><span class="hljs-meta"> #</span><span class="bash"> 日志时效 单位天. 超过这个时间之前的日志将会被自动删除. 设置为 0 表示永久保留.</span><br> log-aging: 15<br><span class="hljs-meta"> #</span><span class="bash"> 是否在每次启动时强制创建全新的文件储存日志. 为 <span class="hljs-literal">false</span> 的情况下将会在上次启动时创建的日志文件续写</span><br> log-force-new: true<br><span class="hljs-meta"> #</span><span class="bash"> 是否启用日志颜色</span><br> log-colorful: true<br><span class="hljs-meta"> #</span><span class="bash"> 是否启用 DEBUG</span><br> debug: false # 开启调试模式<br><br><span class="hljs-meta">#</span><span class="bash"> 默认中间件锚点</span><br>default-middlewares: &default<br><span class="hljs-meta"> #</span><span class="bash"> 访问密钥, 强烈推荐在公网的服务器设置</span><br> access-token: ''<br><span class="hljs-meta"> #</span><span class="bash"> 事件过滤器文件目录</span><br> filter: ''<br><span class="hljs-meta"> #</span><span class="bash"> API限速设置</span><br><span class="hljs-meta"> #</span><span class="bash"> 该设置为全局生效</span><br><span class="hljs-meta"> #</span><span class="bash"> 原 cqhttp 虽然启用了 rate_limit 后缀, 但是基本没插件适配</span><br><span class="hljs-meta"> #</span><span class="bash"> 目前该限速设置为令牌桶算法, 请参考:</span><br><span class="hljs-meta"> #</span><span class="bash"> https://baike.baidu.com/item/%E4%BB%A4%E7%89%8C%E6%A1%B6%E7%AE%97%E6%B3%95/6597000?fr=aladdin</span><br> rate-limit:<br> enabled: false # 是否启用限速<br> frequency: 1 # 令牌回复频率, 单位秒<br> bucket: 1 # 令牌桶大小<br><br>database: # 数据库相关设置<br> leveldb:<br> # 是否启用内置leveldb数据库<br> # 启用将会增加10-20MB的内存占用和一定的磁盘空间<br> # 关闭将无法使用 撤回 回复 get_msg 等上下文相关功能<br> enable: true<br> sqlite3:<br> # 是否启用内置sqlite3数据库<br> # 启用将会增加一定的内存占用和一定的磁盘空间<br> # 关闭将无法使用 撤回 回复 get_msg 等上下文相关功能<br> enable: false<br> cachettl: 3600000000000 # 1h<br><br><span class="hljs-meta">#</span><span class="bash"> 连接服务列表</span><br>servers:<br><span class="hljs-meta"> #</span><span class="bash"> 添加方式,同一连接方式可添加多个,具体配置说明请查看文档</span><br><span class="hljs-meta"> #</span><span class="bash">- http: <span class="hljs-comment"># http 通信</span></span><br><span class="hljs-meta"> #</span><span class="bash">- ws: <span class="hljs-comment"># 正向 Websocket</span></span><br><span class="hljs-meta"> #</span><span class="bash">- ws-reverse: <span class="hljs-comment"># 反向 Websocket</span></span><br><span class="hljs-meta"> #</span><span class="bash">- pprof: <span class="hljs-comment">#性能分析服务器</span></span><br><span class="hljs-meta"> #</span><span class="bash"> 反向WS设置</span><br> - ws-reverse:<br> # 反向WS Universal 地址<br> # 注意 设置了此项地址后下面两项将会被忽略<br> universal: ws://国外vps的ip:8554/ws<br> # # 反向WS API 地址<br> # api: ws://your_websocket_api.server<br> # # 反向WS Event 地址<br> # event: ws://your_websocket_event.server<br> # # 重连间隔 单位毫秒<br> # reconnect-interval: 3000<br> # middlewares:<br> # <<: *default # 引用默认中间件<br></code></pre></td></tr></table></figure></li>
<li><p>再次运行 <code>./go-cqhttp</code> 生成随机设备信息<a
href="https://docs.go-cqhttp.org/guide/config.html#%E8%AE%BE%E5%A4%87%E4%BF%A1%E6%81%AF">device.json</a></p></li>
<li><p>根据需要修改device.json中的protocol为2</p></li>
<li><p>再次运行 <code>./go-cqhttp</code>
,如果你没有配置qq密码就会让你扫码登录,这就要求你的手机qq登录时用的是国外vps的地址,两者必须在同一ip下才能扫码登录成功。<strong>解决这个问题,可以是在本地电脑端下载对应版本的go-cqhttp,按照上述配置成功扫码登录以后,将本地的config.yml和device.json以及session.token上传到vps,然后vps就可以直接登录qq了,目前来看这样操作比较稳当。</strong></p></li>
<li><p><a
href="https://docs.go-cqhttp.org/guide/config.html#%E9%85%8D%E7%BD%AE%E4%BF%A1%E6%81%AF">项目的配置说明</a>,如果遇到问题多看项目issue或提问</p></li>
<li><p>登录成功以后,有概率碰到qq号被冻结的情况,申诉可解封</p></li>
</ol>
<h3 id="接入微信">接入微信</h3>
<figure class="highlight routeros"><table><tr><td class="code"><pre><code class="hljs routeros">docker <span class="hljs-builtin-name">run</span> -e <span class="hljs-attribute">CHATBOT_PROXY</span>=<span class="hljs-string">"http://国外vps的ip:8234"</span> lcjqyml/wechatbot:latest<br></code></pre></td></tr></table></figure>
<p>端口是安装chatgpt-mirai-qqbot时设置的 <code>config.cfg</code>
里面的http项的端口</p>
<p>启动后扫码登陆即可:</p>
<ul>
<li><strong>扫码的微信号需要进过实名认证,否则会异常。</strong></li>
<li>尽量避免国外登陆或者异地登陆,防止封号。</li>
<li>若二维码不清晰,可将二维码上方的链接copy至浏览器打开扫码,或者将二维码复制粘贴到记事本,或者更换终端连接器都可能解决(本人开始使用的是finalshell二维码整个变形了)</li>
</ul>
<h2 id="启动主程序">启动主程序</h2>
<p>国外vps</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><code class="hljs shell">cd chatgpt-mirai-qq-bot<br>python3 bot.py<br></code></pre></td></tr></table></figure>
<p>注意看报错信息,再去检查各项设置,如果顺利享受各种聊天软件与各种AI的对话吧。</p>
<h2 id="常用聊天指令">常用聊天指令</h2>
<figure class="highlight mipsasm"><table><tr><td class="code"><pre><code class="hljs mipsasm"><span class="hljs-comment"># 切换AI</span><br>切换AI chatgpt-web<br>切换AI <span class="hljs-keyword">bing-c</span><br><span class="hljs-keyword">切换AI </span><span class="hljs-keyword">bard</span><br><span class="hljs-keyword"></span><br><span class="hljs-keyword"># </span>切换聊天内容显示方式<br>文本模式<br>图片模式<br>图文混合模式<br></code></pre></td></tr></table></figure>
<h2 id="后记">后记</h2>
<ol type="1">
<li><p>使用 <code>screen</code> 命令让<code>python3 bot.py</code> 和
<code>./go-cqhttp</code>在关闭终端的情况下继续运行:(这玩意就是session的套娃)</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash"> 安装命令</span><br>apt install screen<br><br><span class="hljs-meta">#</span><span class="bash"> 新建screen窗口名称为bot,并自动进入</span><br>screen -S bot<br><br><span class="hljs-meta">#</span><span class="bash"> 运行bot</span><br>python3 bot.py<br><br><span class="hljs-meta">#</span><span class="bash"> 退出bot窗口,程序就在窗口中运行了</span><br>Ctrl + A , D<br><br><span class="hljs-meta">#</span><span class="bash"> 显示目前所有的窗口</span><br>screen -ls<br><br><span class="hljs-meta">#</span><span class="bash"> 恢复某个窗口,检查程序运行情况</span><br>screen -r 窗口名称<br><br><span class="hljs-meta">#</span><span class="bash"> 开另一个窗口运行go-cqhttp</span><br>screen -S qq<br></code></pre></td></tr></table></figure></li>
<li><p>检查
<code>go-cqhttp</code>的运行状态,如果失败退出就自动再运行</p>
<figure class="highlight sh"><table><tr><td class="code"><pre><code class="hljs sh"><span class="hljs-meta">#!/bin/bash</span><br><span class="hljs-keyword">while</span> <span class="hljs-literal">true</span><br><span class="hljs-keyword">do</span><br> <span class="hljs-comment"># 检查 go-cqhttp 进程是否正在运行</span><br> <span class="hljs-keyword">if</span> ps aux | grep -v grep | grep -q <span class="hljs-string">"go-cqhttp"</span>; <span class="hljs-keyword">then</span><br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"go-cqhttp 进程正在运行,继续监视"</span><br> <span class="hljs-keyword">else</span><br> <span class="hljs-built_in">echo</span> <span class="hljs-string">"go-cqhttp 进程未运行,启动进程"</span><br> <span class="hljs-comment"># 运行 go-cqhttp 命令,根据实际情况调整命令路径和参数</span><br> /root/go-cqhttp/go-cqhttp<br> sleep 300<br> <span class="hljs-keyword">fi</span><br><span class="hljs-keyword">done</span><br></code></pre></td></tr></table></figure>
<p>将上述内容保存为
<code>autorun.sh</code>,并且<code>chmod +x autorun.sh</code>
,存放在go-cqhttp文件夹下,用 <code>bash autorun.sh</code> 代替
<code>./go-cqhttp</code>运行,注意如果qq登录失败又反复运行的话,是不是大概率会冻结账号,还在观察中。</p></li>
</ol>
]]></content>
<categories>
<category>折腾</category>
</categories>
<tags>
<tag>gpt, go-cqhttp</tag>
</tags>
</entry>
<entry>
<title>ChatGpt接入QQ</title>
<url>/2023/05/21/ChatGpt%E6%8E%A5%E5%85%A5QQ/</url>
<content><![CDATA[<h2 id="准备工具">准备工具</h2>
<p>一台vps,一个chatgpt账号,chatgpt的access token,2个QQ账号</p>
<h2 id="项目地址">项目地址</h2>
<p><a
href="https://github.com/lss233/chatgpt-mirai-qq-bot">lss233/chatgpt-mirai-qq-bot:
🚀 一键部署!真正的 AI
聊天机器人!支持ChatGPT、文心一言、Bing、Bard、ChatGLM、POE,多账号,人设调教,虚拟女仆、图片渲染、语音发送
| 支持 QQ、Telegram、Discord、微信 等平台 (github.com)</a></p>
<h2 id="实操">实操</h2>
<ol type="1">
<li><p>在linux的vps上进入 <code>/opt</code> 目录运行如下命令:</p>
<figure class="highlight bash"><table><tr><td class="code"><pre><code class="hljs bash">bash -c <span class="hljs-string">"<span class="hljs-subst">$(wget -O- https://gist.githubusercontent.com/lss233/2fdd75be3f0724739368d0dcd9d1367d/raw/62a790da4a391af096074b3355c2c2b7ecab3c28/chatgpt-mirai-installer-gocqhttp.sh)</span>"</span><br></code></pre></td></tr></table></figure>
<p>会自动下载docker, docker-compose, 和建立三个容器</p></li>
<li><p>输入QQ号(通常是小号)作为机器人,输入密码,管理员QQ,还有chatgpt的access
token</p></li>
<li><p>程序运行结束会显示如下内容,找个地方复制粘贴一下,后续会常用到</p>
<figure class="highlight awk"><table><tr><td class="code"><pre><code class="hljs awk">程序已被安装在 ./chatgpt-qq 下,<br><br>以下是一些维护的注意事项:<br><br>你需要先 cd ./chatgpt-qq 才能进入到程序的安装目录。<br><br>你可以输入docker-compose logs -f --tail=<span class="hljs-number">100</span> 来观察运行日志。<br><br>修改配置文件后,使用 docker-compose restart 重启程序。<br><br>使用 docker-compose pull && docker-compose up -d 命令来更新程序<br><br>如果你记不住的话,可以把上面这段文字保存到一个文件里面,需要的时候再看。<br><br>如果您遇到问题可以在这里寻找答案:<br><br>https:<span class="hljs-regexp">//</span>chatgpt-qq.lss233.com/<br><br>如果您觉得此脚本对你有帮助的话,欢迎您在爱发电支持作者。<br><br>https:<span class="hljs-regexp">//</span>afdian.net<span class="hljs-regexp">/a/</span>lss233<br><br>再见。<br></code></pre></td></tr></table></figure></li>
<li><p>按照上述步骤</p>
<figure class="highlight jboss-cli"><table><tr><td class="code"><pre><code class="hljs jboss-cli"><span class="hljs-keyword">cd</span> <span class="hljs-string">./chatgpt-qq</span><br>docker-compose logs -f <span class="hljs-params">--tail=100</span><br></code></pre></td></tr></table></figure>
<p>查看容器运行记录,因为我们的QQ登录是在非常用地址,其中显示登录QQ需要复制出来那个长串的地址,然后在浏览器访问,进行登录验证,无奈我这里总是要循环验证,无解。</p></li>
<li><p>解决上述问题:</p>
<p>进入<code>gocqhttp</code> 文件夹,修改 <code>device.json</code> ,将
<code>protocol</code> 修改为 <code>3</code> ,也就是MacOS,参看<a
href="https://docs.go-cqhttp.org/guide/config.html#设备信息">配置 |
go-cqhttp 帮助中心</a></p>
<p>然后 <code>docker-compose restart</code>
,重复步骤4的操作,我这里就显示QQ登录成功了,如果还不行就用自己的vps的ip在手机或电脑上登录一下QQ,使该ip成为你的常用登录地。如果登录成功,恭喜你过了最难的一关,也具备了基本的与gpt对话的功能。</p></li>
<li><p>可选操作:接入其它的AI平台和聊天软件,只需要修改
<code>chatgpt-qq</code> 下的 <code>config.cfg</code>
在里面添加相应的配置即可</p>
<p><a
href="https://chatgpt-qq.lss233.com/pei-zhi-wen-jian-jiao-cheng/wan-zheng-pei-zhi-wen-jian-yang-li">完整配置文件样例
- ChatGPT for QQ 使用文档 (lss233.com)</a></p>
<p>接入tg需要解决两个问题:</p>
<ul>
<li><p>建立机器人参看<a
href="https://blog.csdn.net/whatday/article/details/113747294">telegram
创建机器人 bot
简介_telegram创建机器人_whatday的博客-CSDN博客</a></p></li>
<li><p>获取 <code>chat id</code>
参看https://cloud.tencent.com/developer/article/1948136</p></li>
</ul></li>
<li><p>机器人的管理指令:</p>
<p><a
href="https://github.com/lss233/chatgpt-mirai-qq-bot/wiki/常用命令列表">常用命令列表
· lss233/chatgpt-mirai-qq-bot Wiki (github.com)</a></p></li>
</ol>
<h2 id="后记">后记</h2>
<ul>
<li>接入poe会封poe的账号!!!我的账号也寄了[<a
href="https://github.com/lss233/chatgpt-mirai-qq-bot/issues/705">BUG]
Poe 登录提示 Something went wrong... · Issue #705 ·
lss233/chatgpt-mirai-qq-bot (github.com)</a></li>
</ul>
]]></content>
<categories>
<category>折腾</category>
</categories>
<tags>
<tag>chatgpt</tag>
</tags>
</entry>
<entry>
<title>NginxProxyManager安装与使用</title>
<url>/2023/05/18/NginxProxyManager%E5%AE%89%E8%A3%85%E4%B8%8E%E4%BD%BF%E7%94%A8/</url>
<content><![CDATA[<h2 id="安装">安装</h2>
<ol type="1">
<li><p>安装 Docker 和 Docker-Compose</p></li>
<li><p>在/opt/npm文件夹下创建一个类似于下面的 docker-compose.yml
文件:</p>
<figure class="highlight vim"><table><tr><td class="code"><pre><code class="hljs vim"><span class="hljs-keyword">version</span>: <span class="hljs-string">'3.8'</span><br>service<span class="hljs-variable">s:</span><br> app:<br> image: <span class="hljs-string">'jc21/nginx-proxy-manager:latest'</span><br> restar<span class="hljs-variable">t:</span> unless-stopped<br> port<span class="hljs-variable">s:</span><br> - <span class="hljs-string">'80:80'</span><br> - <span class="hljs-string">'81:81'</span><br> - <span class="hljs-string">'443:443'</span><br> volume<span class="hljs-variable">s:</span><br> - ./dat<span class="hljs-variable">a:</span>/data<br> - ./letsencryp<span class="hljs-variable">t:</span>/etc/letsencrypt<br></code></pre></td></tr></table></figure></li>
<li><p>运行容器</p>
<figure class="highlight ebnf"><table><tr><td class="code"><pre><code class="hljs ebnf"><span class="hljs-attribute">docker-compose up -d</span><br></code></pre></td></tr></table></figure></li>
<li><p>登录到管理界面</p>
<figure class="highlight awk"><table><tr><td class="code"><pre><code class="hljs awk">http:<span class="hljs-regexp">//y</span>ourip:<span class="hljs-number">81</span><br></code></pre></td></tr></table></figure>
<p>默认管理员用户:</p>
<figure class="highlight avrasm"><table><tr><td class="code"><pre><code class="hljs avrasm"><span class="hljs-symbol">Email:</span> [email protected]<br><span class="hljs-symbol">Password:</span> changeme<br></code></pre></td></tr></table></figure>
<p>使用此默认用户登录后,系统会立即要求您修改您的详细信息并更改密码。</p></li>
<li><p>升级</p>
<figure class="highlight ebnf"><table><tr><td class="code"><pre><code class="hljs ebnf"><span class="hljs-attribute">docker-compose pull</span><br><span class="hljs-attribute">docker-compose up -d</span><br></code></pre></td></tr></table></figure></li>
</ol>
<h2 id="使用">使用</h2>
<p>添加反代网站add proxy host:</p>
<ol type="1">
<li><p>Details:</p>
<ul>
<li>Domain
Names:一般要在dns服务商那里先用*解析一个通用的二级域名到本机ip,这里添加你喜欢的二级域名就好</li>
<li>Scheme:选择https</li>
<li>Forward Hostname:要反代的ip,如果是docker容器一般填写
<code>172.17.0.1</code></li>
<li>Forward Port:反代的端口</li>
</ul></li>
<li><p>Custom locations:与Details应该是并列关系</p>
<ul>
<li>Location:
填写要反代的网站的文件夹位置,有些网站是建立在二级文件夹下就需要在这里定义</li>
<li>Scheme:选择https</li>
<li>Forward Hostname:要反代的ip,如果是docker容器一般填写
<code>172.17.0.1</code></li>
<li>Forward Port:反代的端口</li>
</ul></li>
<li><p>SSL Certificate:</p>
<p>根据需要是否开启SSL和强制Force
SSL,输入邮箱,同意条款就可以自动签发证书了,爽!</p></li>
</ol>
]]></content>
<categories>
<category>折腾</category>
</categories>
<tags>
<tag>docker,nginx</tag>
</tags>
</entry>
<entry>
<title>Macos系统Python多版本管理和Pip管理</title>
<url>/2023/05/11/Macos%E7%B3%BB%E7%BB%9FPython%E5%A4%9A%E7%89%88%E6%9C%AC%E7%AE%A1%E7%90%86%E5%92%8CPip%E7%AE%A1%E7%90%86/</url>
<content><![CDATA[<h2 id="系统概况">系统概况</h2>
<ol type="1">
<li><p>macos蒙特雷,系统自带Python3.9.6</p></li>
<li><p>通过安装包安装了Python3.10</p></li>
<li><p><code>brew install autojump</code>
时作为依赖包安装了Python3.11</p></li>
<li><p>查看所有安装的Python</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><code class="hljs shell">ls /usr/local/bin | grep python3<br><span class="hljs-meta">#</span><span class="bash"> 会列出所有自己安装的版本,但是不包括系统自带的,系统自带的是/usr/bin/python3</span><br><br>/usr/bin/python3 --version<br><span class="hljs-meta">#</span><span class="bash"> 显示系统自带的Python版本</span><br><br>python3 --version<br><span class="hljs-meta">#</span><span class="bash"> 显示现在系统默认使用的Python版本</span><br></code></pre></td></tr></table></figure></li>
</ol>
<h2 id="处理">处理</h2>
<ol type="1">
<li><p>卸载多余的3.10版本</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><code class="hljs shell">sudo rm -rf /Library/Frameworks/Python.framework/Versions/X.Y.Z<br>sudo rm -rf "/Applications/Python X.Y.Z"<br>sudo rm /usr/local/bin/pydoc3.X<br>sudo rm /usr/local/bin/python3.X<br>sudo rm /usr/local/bin/python3.Xm<br><span class="hljs-meta">#</span><span class="bash"> 其中 `X.Y.Z` 是要卸载的 Python 版本号。例如,如果要卸载 Python 3.8.10,则应将 `X.Y.Z` 替换为 `3.8.10`。请注意,这些命令需要管理员权限才能执行(使用 `sudo` 命令)。</span><br><br><span class="hljs-meta">#</span><span class="bash">(可选)您还可以使用以下命令,删除与卸载的 Python 版本相关的任何残留文件或目录</span><br>sudo rm -rf ~/Library/Python/X.Y<br>sudo rm -rf /Library/Python/X.Y<br><span class="hljs-meta">#</span><span class="bash"> 其中 `X.Y` 是要卸载的 Python 版本号。</span><br></code></pre></td></tr></table></figure></li>
<li><p>想卸载3.11版本,但是作为<code>autojump</code>的依赖,不知道怎么弄,暂时放弃</p></li>
<li><p>此时再来<code>python3 --version</code>
查看现在系统用的版本,我这里变成了3.11</p></li>
<li><p>关联命令 <code>python3</code> 为指定版本</p>
<figure class="highlight shell"><table><tr><td class="code"><pre><code class="hljs shell">nano ~/.zshrc<br><span class="hljs-meta">#</span><span class="bash"> 根据自己使用的终端程序更改,蒙特雷默认使用的是zsh</span><br><br>alias python3='/usr/bin/python3'<br><span class="hljs-meta">#</span><span class="bash"> 指定为系统自带的3.9.6版本</span><br></code></pre></td></tr></table></figure>
<p>记得 <code>source ~/.zshrc</code> 使更改生效</p></li>
<li><p>为了安装 <code>pix2text</code> ,其依赖包 <code>torch</code>
版本要求为1.8.0~2.0,使用pip安装时总是找到2.0.1的版本,因此需要使用老版本的Pip,刚好退回到python3.9.6的版本</p>
<figure class="highlight awk"><table><tr><td class="code"><pre><code class="hljs awk">nano <span class="hljs-regexp">/usr/</span>local<span class="hljs-regexp">/bin/</span>pip<br><span class="hljs-comment"># 会看到如下的代码</span><br></code></pre></td></tr></table></figure>
<figure class="highlight shell"><table><tr><td class="code"><pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash">!/usr/<span class="hljs-built_in">local</span>/bin/python3</span><br><span class="hljs-meta">#</span><span class="bash"> -*- coding: utf-8 -*-</span><br>import re<br>import sys<br>from pip._internal.cli.main import main<br>if __name__ == '__main__':<br> sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])<br> sys.exit(main())<br></code></pre></td></tr></table></figure>
<p>将第一行的 <code>#!/usr/local/bin/python3</code>
修改为你想要的Python版本的路径就好了,例如修改为
<code>#!/usr/bin/python3</code>这样Pip默认关联的就是系统自带版本的Python也就是3.9.6了。</p>
<h2 id="后记">后记</h2>
<p>折腾了一圈,目的其实就是为了安装 <code>torch</code>
的1.8版本,貌似直接修改Pip的默认Python就可以了吧,不过顺带清理了一下系统多余的Python版本,也对各个版本的Python安装的位置也有了大概的了解。</p></li>
</ol>
]]></content>
<categories>
<category>折腾</category>
</categories>
<tags>
<tag>pythoh, pip</tag>
</tags>
</entry>
<entry>
<title>Memo的搭建和使用</title>
<url>/2023/05/05/Memo%E7%9A%84%E6%90%AD%E5%BB%BA%E5%92%8C%E4%BD%BF%E7%94%A8/</url>
<content><![CDATA[<p>好的,以下是您需要的Markdown格式博文:</p>
<h1 id="memos-docker搭建过程记录">Memos Docker搭建过程记录</h1>
<p>在这篇博文中,我将记录我如何使用Docker搭建Memo应用程序,并使用Git自动备份Memo数据。我还将介绍如何使用crontab定期运行备份脚本。</p>
<h2 id="docker搭建memos应用程序">Docker搭建Memos应用程序</h2>
<p>Memo是一个简单的笔记应用程序,可以帮助您轻松记录您的想法和笔记。我选择使用Docker容器来运行Memo,因为这样可以避免与本地环境的冲突,并使部署更加简单。</p>
<h3 id="步骤">步骤</h3>
<figure class="highlight awk"><table><tr><td class="code"><pre><code class="hljs awk">docker run -d --name memos -p <span class="hljs-number">5230</span>:<span class="hljs-number">5230</span> -v <span class="hljs-regexp">/opt/m</span>emos<span class="hljs-regexp">/:/</span>var<span class="hljs-regexp">/opt/m</span>emos ghcr.io<span class="hljs-regexp">/usememos/m</span>emos:latest<br></code></pre></td></tr></table></figure>
<p>现在,您可以通过访问 <code>http://localhost:5230</code>
来访问Memo应用程序。</p>
<h3 id="说明">说明</h3>
<ul>
<li>将/opt/memos替换成你想要映射的文件夹</li>
<li>注册登录以后,将存储方式从数据库改为本地存储,这样方便增量备份</li>
</ul>
<h2 id="使用git自动备份memos数据">使用Git自动备份Memos数据</h2>
<p>为了确保Memos数据不会丢失,并且方便从服务器之间进行迁移,我使用Git对数据进行自动备份。我将备份脚本编写为Shell脚本,并使用Git命令将备份提交到GitHub。</p>
<h3 id="步骤-1">步骤</h3>
<ol type="1">
<li>在 <code>memos</code> 目录中创建一个名为 <code>backup.sh</code>
的文件,并添加以下内容:</li>
</ol>
<figure class="highlight bash"><table><tr><td class="code"><pre><code class="hljs bash"><span class="hljs-meta">#!/bin/bash</span><br><br><span class="hljs-built_in">cd</span> /opt/memos<br><br>git add .<br>git commit -m <span class="hljs-string">"Backup <span class="hljs-subst">$(date)</span>"</span><br>git push<br></code></pre></td></tr></table></figure>
<p>这个脚本将切换到Memos数据目录,并使用Git命令将备份提交到GitHub。</p>
<ol start="2" type="1">
<li>将脚本标记为可执行:</li>
</ol>
<figure class="highlight elixir"><table><tr><td class="code"><pre><code class="hljs elixir"><span class="hljs-variable">$ </span>chmod +x backup.sh<br></code></pre></td></tr></table></figure>
<ol start="3" type="1">
<li>将该文件夹关联到远程github仓库,要将现有的Memos数据文件夹关联到远程的GitHub仓库,您可以按照以下步骤进行操作:</li>
</ol>
<ul>
<li><p>在GitHub上创建一个新的仓库,用于存储Memos数据备份。</p></li>
<li><p>进入您的Memos数据文件夹,并初始化一个新的Git仓库:</p></li>
</ul>
<figure class="highlight powershell"><table><tr><td class="code"><pre><code class="hljs powershell"><span class="hljs-variable">$</span> <span class="hljs-built_in">cd</span> /opt/memos<br><span class="hljs-variable">$</span> git init<br></code></pre></td></tr></table></figure>
<ul>
<li>添加备份文件夹和提交备份文件夹到本地Git仓库:</li>
</ul>
<figure class="highlight elixir"><table><tr><td class="code"><pre><code class="hljs elixir"><span class="hljs-variable">$ </span>git add .<br><span class="hljs-variable">$ </span>git commit -m <span class="hljs-string">"Initial backup"</span><br></code></pre></td></tr></table></figure>
<ul>
<li>的Git仓库关联到远程的GitHub仓库:</li>
</ul>
<figure class="highlight vim"><table><tr><td class="code"><pre><code class="hljs vim">$ git remote <span class="hljs-built_in">add</span> origin git@github.<span class="hljs-keyword">com</span>:<span class="hljs-symbol"><username></span>/<span class="hljs-symbol"><repository></span>.git<br></code></pre></td></tr></table></figure>
<p>请将 <code><username></code> 和 <code><repository></code>
替换为您在GitHub上创建的仓库的用户名和仓库名称。</p>
<ul>
<li>地的备份文件夹推送到远程的GitHub仓库:</li>
</ul>
<figure class="highlight maxima"><table><tr><td class="code"><pre><code class="hljs maxima">$ git <span class="hljs-built_in">push</span> -u <span class="hljs-built_in">origin</span> master<br></code></pre></td></tr></table></figure>
<p>现在,您的Memos据备份文件夹已经成功关联到远程的GitHub仓库,您可以定期运行备份脚本,将最新的备份文件推送到GitHub仓库中。</p>
<ol start="4" type="1">
<li>运行一次备份脚本,以确保一切正常:</li>
</ol>
<figure class="highlight elixir"><table><tr><td class="code"><pre><code class="hljs elixir"><span class="hljs-variable">$ </span>./backup.sh<br></code></pre></td></tr></table></figure>
<p>现在,备份应该已经提交到GitHub。</p>
<h2 id="使用crontab定期运行备份脚本">使用crontab定期运行备份脚本</h2>
<p>为了确保Memo数据得到及时备份,我使用crontab定期运行备份脚本。我设置crontab每隔2小时运行一次备份脚本。</p>
<h3 id="步骤-2">步骤</h3>
<ol type="1">
<li>运行以下命令以编辑crontab:</li>
</ol>
<figure class="highlight elixir"><table><tr><td class="code"><pre><code class="hljs elixir"><span class="hljs-variable">$ </span>crontab -e<br></code></pre></td></tr></table></figure>
<ol start="2" type="1">
<li>在打开的编辑器中添加以下行:</li>
</ol>
<figure class="highlight basic"><table><tr><td class="code"><pre><code class="hljs basic"><span class="hljs-symbol">0 </span>*/<span class="hljs-number">2</span> * * * /opt/memos/backup.sh<br></code></pre></td></tr></table></figure>
<p>这将在每2个小时的第0分钟运行备份脚本。</p>
<ol start="3" type="1">
<li>保存并关闭编辑器。</li>
</ol>
<p>现在,您的Memos数据应该每隔2小时自动备份到GitHub。</p>
<h2 id="通过raycast发memo">通过Raycast发Memo</h2>
<p>Raycast是一款Mac上的快速启动应用程序,可以让您通过简单的快捷键访问常用的功能和应用程序。要使用Raycast来发Memo笔记,您可以按照以下步骤进行操作:</p>
<ol type="1">
<li><p>下载并安装Raycast应用程序。</p></li>
<li><p>在Raycast中搜索并安装“Memo”插件。</p></li>
<li><p>打开Memo应用程序,并创建一个新的笔记。在笔记中输入您要保存的文本内容。</p></li>
<li><p>打开Raycast应用程序,并使用快捷键 <code>Cmd + Shift + P</code>
来打开命令面板。</p></li>
<li><p>在命令面板中搜索并选择“Memo: Save New Note”选项。</p></li>
<li><p>在弹出的窗口中输入您的笔记标题和内容,并按下 <code>Enter</code>
键。</p></li>
<li><p>您的Memo笔记已经成功保存!您可以在Memo应用程序中查看它。</p></li>
</ol>
<p>除了保存新的Memo笔记外,Memo插件还支持搜索和查看现有的Memo笔记。通过Raycast和Memo插件,您可以更加高效地记录和查看笔记,提高您的工作效率。</p>
<h2 id="windowsandroidiosmac客户端">Windows,android,ios,mac客户端</h2>
<p>https://memos.moe/</p>
<h2 id="结论">结论</h2>
<p>在本文中,我介绍了如何使用Docker搭建Memos应用程序,并使用Git自动备份Memos数据。我还介绍了如何使用crontab定期运行备份脚本。现在,您可以放心地记录您的想法和笔记,因为您的数据已经得到了完美的保护!</p>
<p>P.S. 本文主体是chatgpt写就,在其基础上做了微改</p>
]]></content>
<categories>
<category>折腾</category>
</categories>
<tags>
<tag>Memos,docker,git</tag>
</tags>
</entry>
<entry>
<title>docker安装plex</title>
<url>/2023/04/25/docker%E5%AE%89%E8%A3%85plex/</url>
<content><![CDATA[<h2 id="选择适配系统的版本">选择适配系统的版本</h2>
<p>您需要考虑您的操作系统,因为Docker镜像是针对特定操作系统构建的。您可以在Docker
Hub上找到适用于您操作系统的Plex镜像。</p>
<p>例如我要在linux服务器上安装,则应该选择LinuxServer.io的Docker镜像。</p>
<h2 id="利用docker-compose安装">利用docker compose安装</h2>
<p>在/opt/plex文件夹下建立docker-compose.yml文件,写入如下内容:</p>
<figure class="highlight yaml"><table><tr><td class="code"><pre><code class="hljs yaml"><span class="hljs-meta">---</span><br><span class="hljs-attr">version:</span> <span class="hljs-string">"2.1"</span><br><span class="hljs-attr">services:</span><br> <span class="hljs-attr">plex:</span><br> <span class="hljs-attr">image:</span> <span class="hljs-string">lscr.io/linuxserver/plex:latest</span><br> <span class="hljs-attr">container_name:</span> <span class="hljs-string">plex</span><br> <span class="hljs-attr">network_mode:</span> <span class="hljs-string">host</span><br> <span class="hljs-attr">environment:</span><br> <span class="hljs-bullet">-</span> <span class="hljs-string">PUID=1000</span><br> <span class="hljs-bullet">-</span> <span class="hljs-string">PGID=1000</span><br> <span class="hljs-bullet">-</span> <span class="hljs-string">VERSION=docker</span><br> <span class="hljs-bullet">-</span> <span class="hljs-string">PLEX_CLAIM=换成自己的claim</span><br> <span class="hljs-attr">volumes:</span><br> <span class="hljs-bullet">-</span> <span class="hljs-string">/opt/plex:/config</span><br> <span class="hljs-bullet">-</span> <span class="hljs-string">/opt/aria2/aria2-downloads:/tv</span><br> <span class="hljs-bullet">-</span> <span class="hljs-string">/opt/aria2/aria2-downloads:/movies</span><br> <span class="hljs-attr">restart:</span> <span class="hljs-string">unless-stopped</span><br></code></pre></td></tr></table></figure>
<p>其中claim id
在https://plex.com/claim获取,volumes的磁盘映射根据自己的需求更改</p>
<p>然后<code>docker-compose up -d</code> 就可以玩耍了</p>
<h2 id="一些常见问题">一些常见问题</h2>
<ul>
<li>第一次进入登录账号以后,一般会引导进行设置、添加资料库</li>
<li>建议开启远程连接,这样当利用多个vps或者nas建立了多个plex服务器时,可以统一在plex的官网进行连接,在左侧会同时显示多个服务器的电影资源</li>
<li>建议配合aria2和aria2ng共同使用</li>
</ul>
]]></content>
<categories>
<category>折腾</category>
</categories>
<tags>
<tag>docker,plex</tag>
</tags>
</entry>
<entry>
<title>n1小钢炮搬家记</title>
<url>/2022/10/04/n1%E5%B0%8F%E9%92%A2%E7%82%AE%E6%90%AC%E5%AE%B6%E8%AE%B0/</url>
<content><![CDATA[<h2 id="一搬迁之前的准备工作">一、搬迁之前的准备工作</h2>
<ul>
<li>事先了解搬迁地的网关地址和子网掩码</li>
<li>进入小钢炮后台 <code>System-Network</code>,选择
<code>use Static IP</code>,填入ip地址、网关地址,然后保存</li>
<li>如果搬迁地没有登录路由或交换机后台的权限,上一步不要选择
<code>use DHCP</code>,不然就捞不到小钢炮的ip了</li>
</ul>
<h2
id="二搬迁后遇到的各种麻烦及解决办法">二、搬迁后遇到的各种麻烦及解决办法</h2>
<ul>
<li><p>搬迁地的网段为172.17.0.0/16,和docker0网段冲突</p>
<p>直接表现就是已建好的容器不能访问了,因此修改docker0网段为172.100.0.0/16</p>
<p>修改文件 <code>/etc/docker/daemon.json</code> 为以下内容:</p>
<figure class="highlight json"><table><tr><td class="code"><pre><code class="hljs json">{<br> <span class="hljs-attr">"storage-driver"</span>: <span class="hljs-string">"overlay2"</span>,<br> <span class="hljs-attr">"registry-mirrors"</span>: [<span class="hljs-string">"https://hub-mirror.c.163.com"</span>,<br> <span class="hljs-string">"https://registry.aliyuncs.com"</span>,<br> <span class="hljs-string">"https://registry.docker-cn.com"</span>,<br> <span class="hljs-string">"https://docker.mirrors.ustc.edu.cn"</span>],<br> <span class="hljs-attr">"default-address-pools"</span>:[{<span class="hljs-attr">"base"</span>:<span class="hljs-string">"172.100.0.0/16"</span>,<span class="hljs-attr">"size"</span>:<span class="hljs-number">24</span>}]<br>}<br></code></pre></td></tr></table></figure></li>
<li><p>docker版本的openwrt更换新版本以后,ssrplus总是无法启动或者谷歌连接测试不通</p>
<p>经过百般搜索,看到这样一句话:</p>
<p><code>选 仅常用端口(不走P2P流量到代理) 就无法启动。</code></p>
<p>改为全部端口就可以启动了</p></li>
<li><p>openwrt里面的passwall显示谷歌连接测试失败</p>
<p>解决办法:在高级设置里面,找到<code>TCP 转发端口</code>,将常用改为全部,再来测试就正常了</p></li>
<li><p>关于docker版本的openwrt安装版本</p>
<p>由于n1的架构是aarch64,所以在docker
hub中搜索arm64架构的openwrt版本才可以安装</p>
<p>先后尝试了</p>
<p><code>unifreq/openwrt-aarch64</code> 最高尝试到<a
href="https://hub.docker.com/layers/unifreq/openwrt-aarch64/r20.10.20/images/sha256-b6370f04bb231867957ee9101e91e5978d4b22dccfca265b16c36f450a4fddc9?context=explore">r20.10.20</a>版本可以正常使用</p>
<p><code>buddyfly/openwrt-aarch64</code></p>
<p><code>sulinggg/openwrt</code>
版本多,界面美化好,n1可使用registry.cn-shanghai.aliyuncs.com/suling/openwrt:armv8</p></li>
<li><p>小钢炮自带的transmission提示错误,无法启动</p>
<p>解决办法:进入 <code>Apps-Transmission-Extra Settings</code> 找到
<code>rpc whitelist</code> 添加新的本地网段</p></li>
<li><p>关于n1无法ping通openwrt容器</p>
<p>由于openwrt容器采用的是网卡混杂模式macvlan,宿主机与容器之间的网络连接是隔绝的,但是多个混杂模式之间的网络是可以相互访问的,只要在宿主机上再建立一个macvlan,然后修改路由表,使数据经由<strong>宿主机下的macvlan</strong>传输到<strong>容器内的macvlan</strong>即可。</p>
<ul>
<li><p>环境:</p>
<p>宿主机eth0:172.17.18.18/16</p>
<p>openwrt容器:172.17.18.22/16</p></li>
<li><p>解决:以下操作均在 <strong>宿主机</strong>
中,不是在Docker容器中</p>
<p>新增一个叫mynet的macvlan接口</p>
<figure class="highlight lasso"><table><tr><td class="code"><pre><code class="hljs lasso">ip <span class="hljs-keyword">link</span> add mynet <span class="hljs-keyword">link</span> eth0 <span class="hljs-keyword">type</span> macvlan mode bridge<br></code></pre></td></tr></table></figure>
<p>为该接口分配ip</p>
<figure class="highlight armasm"><table><tr><td class="code"><pre><code class="hljs armasm"><span class="hljs-symbol">ip</span> <span class="hljs-keyword">addr</span> <span class="hljs-keyword">add</span> <span class="hljs-number">172</span>.<span class="hljs-number">17</span>.<span class="hljs-number">18</span>.<span class="hljs-number">222</span> dev mynet<br></code></pre></td></tr></table></figure>
<p>启用名称为mynet的macvlan</p>
<figure class="highlight gams"><table><tr><td class="code"><pre><code class="hljs gams">ip link <span class="hljs-keyword">set</span> mynet <span class="hljs-comment">up</span><br></code></pre></td></tr></table></figure>
<p>修改路由表,使宿主机172.17.18.18/16到Openwrt容器172.17.18.22/16的通信全部由mynet中转</p>
<figure class="highlight routeros"><table><tr><td class="code"><pre><code class="hljs routeros">ip<span class="hljs-built_in"> route </span><span class="hljs-builtin-name">add</span> 172.17.18.22 dev mynet<br></code></pre></td></tr></table></figure>
<p>该问题解决参考了https://mopo-blog.ddnsfree.com/2021/02/23/n1-eth0-macvlan/</p></li>
</ul></li>
</ul>
]]></content>
<categories>
<category>折腾</category>
</categories>
<tags>
<tag>n1,docker,openwrt</tag>
</tags>
</entry>
<entry>
<title>哪吒探针监控vps状态</title>
<url>/2022/09/21/%E5%93%AA%E5%90%92%E6%8E%A2%E9%92%88%E7%9B%91%E6%8E%A7vps%E7%8A%B6%E6%80%81/</url>
<content><![CDATA[<h1 id="项目地址">项目地址</h1>
<p>https://github.com/naiba/nezha</p>
<h1 id="创建一个oauth-apps">创建一个OAuth Apps</h1>
<ul>
<li>先打开:https://github.com/settings/developers,然后点击New OAuth
App按钮</li>
<li>Homepage URL:http://域名:8088<br />
</li>
<li>Authorization callback URL:http://域名:8008/oauth2/callback</li>
<li>可能需要用github的手机app进行激活</li>
<li>记录OAuth Apps的Client ID和Client secrets</li>
</ul>
<h1 id="放行防火墙如果需要">放行防火墙(如果需要)</h1>
<p>开放8008和5555两个端口</p>
<h1 id="安装命令">安装命令</h1>
<p>国外vps一键脚本命令:</p>
<figure class="highlight awk"><table><tr><td class="code"><pre><code class="hljs awk">curl -L https:<span class="hljs-regexp">//</span>raw.githubusercontent.com<span class="hljs-regexp">/naiba/</span>nezha<span class="hljs-regexp">/master/</span>script<span class="hljs-regexp">/install.sh -o nezha.sh && chmod +x nezha.sh && sudo ./</span>nezha.sh<br></code></pre></td></tr></table></figure>
<p>国内vps一键脚本命令:</p>
<figure class="highlight awk"><table><tr><td class="code"><pre><code class="hljs awk">curl -L https:<span class="hljs-regexp">//</span>jihulab.com<span class="hljs-regexp">/nezha/</span>nezha<span class="hljs-regexp">/-/</span>raw<span class="hljs-regexp">/master/</span>script<span class="hljs-regexp">/install.sh -o nezha.sh && chmod +x nezha.sh && sudo CN=true ./</span>nezha.sh<br></code></pre></td></tr></table></figure>
<h1 id="访问地址">访问地址:</h1>
<p><code>http://域名:8008</code></p>
<h1 id="后台管理">后台管理</h1>
<p>增加服务器后,需要在每个被监控的服务器安装Agent客户端,如果是国内vps还是会因为网络问题,不能正常下载到客户端,可以借助于上面国内vps的一键脚本命令后面加上参数,进行安装。</p>
]]></content>
<categories>
<category>折腾</category>
</categories>
<tags>
<tag>vps</tag>
</tags>
</entry>
<entry>
<title>利用warp脚本使任意vps变双栈</title>
<url>/2022/09/20/%E5%88%A9%E7%94%A8warp%E8%84%9A%E6%9C%AC%E4%BD%BF%E4%BB%BB%E6%84%8Fvps%E5%8F%98%E5%8F%8C%E6%A0%88/</url>
<content><![CDATA[<h1 id="cloudflare-warp功能">cloudflare warp功能</h1>
<p>直接搬运p3terx大佬博客的文字:</p>
<p><a href="https://p3terx.com/go/aHR0cHM6Ly8xLjEuMS4xLw">Cloudflare
WARP</a> 是 Cloudflare 提供的一项基于 WireGuard
的网络流量安全及加速服务,能够让你通过连接到 Cloudflare
的边缘节点实现隐私保护及链路优化。之前有很多小伙伴拿来当做某科学的上网工具来使用,应该很熟悉了。不过由于
WireGuard 数据传输使用的 UDP 协议,中国大陆的网络运营商会对其进行 QoS
,加上很多节点的 IP
被封锁,现在可以说几乎处于不可用的状态了。而对于自由网络的地区来说则没有这些限制,加上有国外开发者制作的工具可以生成通用的
WireGuard 配置文件,这使得我们可以在安装了某科学的上网工具的海外 VPS
上部署它并获得如下作用:</p>
<ul>
<li>WARP 网络出入口均为双栈 (IPv4/IPv6),因此单栈 VPS 云服务器可以连接到
WARP 网络来获取额外的网络连通性支持:
<ul>
<li>IPv6 Only VPS 可获得 IPv4 网络的访问能力,不再局限于 NAT64/DNS64
的束缚,能自定义任意 DNS
解析服务器,这对使用某科学的上网工具有奇效。</li>
<li>IPv4 Only VPS 可获得 IPv6 网络的访问能力,比如可作为 IPv6 Only VPS
的 SSH 跳板。此外 WARP 的 IPv6 网络的质量比 <a
href="https://p3terx.com/archives/use-he-tunnel-broker-to-add-public-network-ipv6-support-to-ipv4-vps-for-free.html">HE
IPv6 Tunnel Broker</a> 甚至 VPS 自带的都要好,很少绕路。</li>
</ul></li>
<li>WARP 对外访问网络的出口 IP 被很多网站视为真实用户,即所谓的原生 IP
或私人家庭住宅 IP,可以解除某些网站基于 IP 的封锁限制:
<ul>
<li>解锁 Netflix 非自制剧</li>
<li>解决 Google 搜索流量异常频繁跳出人机身份验证的问题</li>
<li>解决无法打开 Google Scholar (谷歌学术) 403 访问限制的问题</li>
<li>解决 Google 的 IP 定位漂移到中国(送中),无法使用 YouTube Premium
的问题</li>
</ul></li>
</ul>
<h1 id="关于wireguard安装问题">关于wireguard安装问题</h1>
<p>要点:</p>
<ul>
<li><p>该教程适用于Debian 10+</p></li>
<li><p>先执行 <code>uname -r</code> 命令查看内核版本。如果是 5.6
及以上内核则已经集成了 WireGuard ,就不需要安装了。</p>
<p>当然看到这篇教程的小伙伴肯定大多数都不是这个情况,因为目前 Debian 10
自带的内核版本是 4.19。所以有如下几个安装方法可供选择:</p>
<ol type="1">
<li>安装版本高于 5.6 的内核</li>
<li>安装 wireguard 内核模块</li>
<li>安装 wireguard-go</li>
</ol>
<p>理论网络性能:<strong>内核集成</strong> ≥ <strong>内核模块</strong>
> <strong>wireguard-go</strong></p></li>
<li><p>OpenVZ / LXC 等非完整虚拟化 VPS
主机,由于是共享宿主机内核,故无法对内核进行修改,就只能安装
<strong>wireguard-go</strong>。</p></li>
</ul>
<p>详细参考:https://p3terx.com/archives/debian-linux-vps-server-wireguard-installation-tutorial.html</p>
<h1 id="一键脚本">一键脚本</h1>
<ul>
<li><p>适用于除了香港、多伦多以外的vps:https://github.com/fscarmen/warp</p></li>
<li><p><span class="citation" data-cites="CoiaPrant">@CoiaPrant</span>
的 warp-go 一键脚本。使用 CloudFlare-WARP 的各类接口,集成
wireguard-go,可以完全替代 WGCF。 救活了香港、多伦多等,让没有官方 WARP
的 VPS 也可以获取 WARP IP。</p>
<p>下载脚本:<code>wget -N https://raw.githubusercontent.com/fscarmen/warp/main/warp-go.sh</code></p></li>
</ul>
<h1 id="关于warp-go.sh选项选择问题">关于warp-go.sh选项选择问题</h1>
<p>经过实测,ipv4的vps选择全局ipv6,如果是选择全局双栈,ssh马上失去连接,只能到网页端重启vps</p>
<p>好像有修改配置的方法,可以实现全局双栈,后续再研究</p>
<h1 id="作euserv的跳板">作euserv的跳板</h1>
<ul>
<li><p>使用x-ui的dokodemo-door,转发到euserv的ipv6,从而实现ssh连接</p></li>
<li><p>使用x-ui的dokodemo-door,转发到euserv的ipv6,从而实现shadowsocks连接,vmess协议转发貌似未成功</p></li>
</ul>
]]></content>
<categories>
<category>折腾</category>
</categories>
<tags>
<tag>warp</tag>
</tags>
</entry>
<entry>
<title>docker安装flare个人导航页</title>
<url>/2022/09/16/docker%E5%AE%89%E8%A3%85flare%E4%B8%AA%E4%BA%BA%E5%AF%BC%E8%88%AA%E9%A1%B5/</url>
<content><![CDATA[<h2 id="利用docker-compose安装">利用docker-compose安装</h2>
<p>新建文件夹flare,进入新建文件docker-compose.yml,写入以下内容:</p>
<figure class="highlight yaml"><table><tr><td class="code"><pre><code class="hljs yaml"><span class="hljs-attr">version:</span> <span class="hljs-string">'3.6'</span><br><br><span class="hljs-attr">services:</span><br> <span class="hljs-attr">flare:</span><br> <span class="hljs-attr">image:</span> <span class="hljs-string">soulteary/flare:0.3.1</span><br> <span class="hljs-attr">restart:</span> <span class="hljs-string">always</span><br> <span class="hljs-comment"># 默认无需添加任何参数,如有特殊需求</span><br> <span class="hljs-comment"># 可阅读文档 https://github.com/soulteary/docker-flare/blob/main/docs/advanced-startup.md</span><br> <span class="hljs-comment"># command: flare</span><br> <span class="hljs-comment"># 启用账号登陆模式,--visibility=private表示登录才能看到首页</span><br> <span class="hljs-attr">command:</span> <span class="hljs-string">flare</span> <span class="hljs-string">--nologin=0</span> <span class="hljs-string">--visibility=private</span><br> <span class="hljs-attr">environment:</span><br> <span class="hljs-comment"># 如需开启用户登陆模式,需要先设置 `nologin` 启动参数为 `0`</span><br> <span class="hljs-comment"># 如开启 `nologin`,未设置 FLARE_USER,则默认用户为 `flare`</span><br> <span class="hljs-bullet">-</span> <span class="hljs-string">FLARE_USER=username</span><br> <span class="hljs-comment"># 指定你自己的账号密码,如未设置 `FLARE_USER`,则会默认生成密码并展示在应用启动日志中</span><br> <span class="hljs-bullet">-</span> <span class="hljs-string">FLARE_PASS=passwd</span><br> <span class="hljs-comment"># 是否开启“使用向导”,访问 `/guide`</span><br> <span class="hljs-comment"># - FLARE_GUIDE=1</span><br> <span class="hljs-attr">ports:</span><br> <span class="hljs-bullet">-</span> <span class="hljs-number">5005</span><span class="hljs-string">:5005</span><br> <span class="hljs-attr">volumes:</span><br> <span class="hljs-bullet">-</span> <span class="hljs-string">./app:/app</span><br></code></pre></td></tr></table></figure>
<p>然后 <code>docker-compose up -d</code> 启动即可</p>
<h2 id="编辑书签和应用页面">编辑书签和应用页面</h2>
<p>通过 <code>/editor</code> 访问编辑页面,在app文件夹下可以通过备份
<code>apps.yml</code> 和 <code>bookmarks.yml</code>
即可将flare搬迁至其他地方,比如自己的vps上</p>
]]></content>
<categories>
<category>折腾</category>
</categories>
<tags>
<tag>docker,flare</tag>
</tags>
</entry>
<entry>
<title>mac虚拟机安装OpenWrt</title>
<url>/2022/09/05/mac%E8%99%9A%E6%8B%9F%E6%9C%BA%E5%AE%89%E8%A3%85OpenWrt/</url>
<content><![CDATA[<h2 id="安装vmware-fusion">安装vmware fusion</h2>
<p>可以免费申请个人非商业用途许可证,可以参考https://zhuanlan.zhihu.com/p/315035843</p>
<h2 id="下载openwrt固件">下载OpenWrt固件</h2>
<p>这里我选择下载esir的固件,google
drive地址为:https://drive.google.com/drive/folders/1dqNUrMf9n7i3y1aSh68U5Yf44WQ3KCuh</p>
<p>可以选择精品小包或者佛跳墙版本,注意选择引导模式uefi或者传统bios模式</p>
<h2 id="格式转换">格式转换</h2>
<p>由于下载的 文件后缀名是.img,如果是.img.gz,可以手动重命名为.img,
我们需要转换为.vmdk,这里需要用到qemu工具,<code>brew install qemu</code>,安装好以后,利用命令<code>qemu-img convert -f raw 源文件.img -O vmdk 目标文件.vmdk</code>就可以转换为vmdk格式了</p>
<h2 id="安装openwrt">安装OpenWrt</h2>
<p>新建虚拟机,硬盘设置为选择刚转换的vmdk文件,网络选择为桥接网络,以便将此OpenWrt作为macos的旁路由</p>
<h2 id="启动修改openwrt设置">启动修改OpenWrt设置</h2>
<ul>
<li><p>首次登录系统,还没有设置root密码,利用<code>password</code>命令设置root密码</p></li>
<li><p>修改ip地址:由于我的mac主机ip地址为172.17.18.154,网关为172.17.0.1,子网掩码为255.255.0.0,利用命令<code>vi /etc/config/network</code>,修改openwrt的ip为172.17.18.66,netmask设置为255.255.0.0</p></li>
<li><p>重启网络服务使修改生效:<code>/etc/init.d/network restart</code></p></li>
<li><p>(也可以下一步之后再验证)验证设置是否生效:<code>ifconfig</code>查看ip地址,还可以<code>ping 172.17.18.154</code>,
<code>ping baidu.com</code></p></li>
</ul>
<h2 id="登录后台并修改设置">登录后台并修改设置</h2>
<p>浏览器登入172.17.18.66,用户名root,密码刚设的登录,找到网络--接口,修改网关为172.17.0.1,以及子网掩码为255.255.0.0,验证设置是否生效:<code>ifconfig</code>查看ip地址,还可以<code>ping 172.17.18.154</code>,
<code>ping baidu.com</code>都通过了就表示设置成功了</p>
<h2 id="mac富强">mac富强</h2>
<p>修改mac的ip地址为手动:</p>
<figure class="highlight dns"><table><tr><td class="code"><pre><code class="hljs dns">ip: <span class="hljs-number">172.17.18.154</span><br>网关:<span class="hljs-number">172.17.18.66</span><br>DNS:<span class="hljs-number">114.114.114.114</span><br></code></pre></td></tr></table></figure>
<p>愉快的玩耍吧,旁路由秒杀所有V2rayX之类的</p>
<p>哦,对了,设置OpenWrt开机自动启动并且是无界面模式<code>vmrun start /Users/pl/Virtual\ Machines.localized/openwrt.vmwarevm/openwrt.vmx nogui</code></p>
]]></content>
<categories>
<category>折腾</category>
</categories>
<tags>
<tag>Mac</tag>
<tag>OpenWrt</tag>
</tags>
</entry>
<entry>
<title>全国卷密集出现构造函数比较大小</title>
<url>/2022/06/09/%E5%85%A8%E5%9B%BD%E5%8D%B7%E5%AF%86%E9%9B%86%E5%87%BA%E7%8E%B0%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0%E6%AF%94%E8%BE%83%E5%A4%A7%E5%B0%8F/</url>
<content><![CDATA[<h2 id="新高考全国1卷">2022新高考全国1卷</h2>
<div class="note note-primary">
<p>7.设<span class="math inline">\(a=0.1e^{0.1},b=\dfrac{1}{9},c=-\ln0.9\)</span>,则</p><p><span class="math inline">\(A.a<b<c\qquad\)</span> <spanclass="math inline">\(B.c<b<a\qquad\)</span> <spanclass="math inline">\(C.c<a<b\qquad\)</span> <spanclass="math inline">\(D.a<c<b\)</span></p>
</div>
<div class="note note-success">
<p>从所给数据来看,可以将三个数处理为对<spanclass="math inline">\(0.1\)</span>的运算:<spanclass="math inline">\(a=0.1e^{0.1},b=\dfrac{0.1}{1-0.1},c=\ln\dfrac{1}{1-0.1}\)</span></p><p>因此可以构造<span class="math inline">\(f(x)=xe^x\)</span>,<spanclass="math inline">\(g(x)=\dfrac{x}{1-x}\)</span>,<spanclass="math inline">\(h(x)=\ln\dfrac{1}{1-x}\)</span></p><p>由<span class="math inline">\(\ln x\le x-1\)</span>得,<spanclass="math inline">\(\ln\dfrac{1}{1-x}\le\dfrac{1}{1-x}-1=\dfrac{x}{1-x}\)</span>,于是<spanclass="math inline">\(b<c\)</span></p><p>由<span class="math inline">\(e^x\ge x+1\)</span>得,<spanclass="math inline">\(e^{-x}\ge 1-x\)</span>,即<spanclass="math inline">\(e^x\le\dfrac{1}{1-x}(x<1)\)</span>,即<spanclass="math inline">\(xe^x\le\dfrac{x}{1-x}\)</span>,于是<spanclass="math inline">\(a<b\)</span></p><p>对于<span class="math inline">\(a,c\)</span>的比较,构造<spanclass="math inline">\(\varphi(x)=xe^x+\ln(1-x)\)</span>,则<spanclass="math inline">\(\varphi'(x)=(x+1)e^x+\dfrac{1}{x-1}=\dfrac{(x^2-1)e^x+1}{x-1}\)</span></p><p>记<span class="math inline">\(m(x)=(x^2-1)e^x+1\)</span>,则<spanclass="math inline">\(m'(x)=(x^2+2x-1)e^x\)</span>,<spanclass="math inline">\(x\in(0,0.1)\)</span>时,<spanclass="math inline">\(m'(x)<0\)</span>,于是<spanclass="math inline">\(m(x)\)</span>在<spanclass="math inline">\((0,0.1)\)</span>单减,则<spanclass="math inline">\(m(x)<m(0)=0\)</span>,于是<spanclass="math inline">\(\varphi'(x)>0\)</span>,即<spanclass="math inline">\(\varphi(x)\)</span>在<spanclass="math inline">\((0,0.1)\)</span>单增,则<spanclass="math inline">\(\varphi(x)>\varphi(0)=0\)</span>,于是<spanclass="math inline">\(a>c\)</span></p>
</div>
<h2 id="新课标2卷12题">2022新课标2卷12题:</h2>
<div class="note note-primary">
<p>12.已知<span class="math inline">\(a=\dfrac{31}{32}\)</span>,<spanclass="math inline">\(b=\cos\dfrac{1}{4}\)</span>,<spanclass="math inline">\(c=4\sin\dfrac{1}{4}\)</span>,则</p><p><span class="math inline">\(A.c>b>a\qquad\)</span> <spanclass="math inline">\(B.b>a>c\qquad\)</span> <spanclass="math inline">\(C.a>b>c\qquad\)</span> <spanclass="math inline">\(D.a>c>b\)</span></p>
</div>
<div class="note note-success">
<p>解析:</p><p><spanclass="math inline">\(b-c=\cos\dfrac{1}{4}-4\sin\dfrac{1}{4}=4(\dfrac{1}{4}\cos\dfrac{1}{4}-\sin\dfrac{1}{4})\)</span>,构造<spanclass="math inline">\(f(x)=x\cos x-\sin x\)</span>,则<spanclass="math inline">\(f'(x)=-x\sin x\)</span>,则<spanclass="math inline">\(f(x)\)</span>在<spanclass="math inline">\((0,\dfrac{1}{4})\)</span>单减,于是<spanclass="math inline">\(f(x)<f(0)=0\)</span>,即<spanclass="math inline">\(b<c\)</span></p><p>又<spanclass="math inline">\(a=1-\dfrac{1}{2}\cdot(\dfrac{1}{4})^2\)</span>,构造<spanclass="math inline">\(g(x)=1-\dfrac{1}{2}x^2-\cos x\)</span>,则<spanclass="math inline">\(g'(x)=-x+\sin x\)</span>,<spanclass="math inline">\(g''(x)=-1+\cos x\le0\)</span>,于是在<spanclass="math inline">\((0,+\infty)\)</span>上<spanclass="math inline">\(g'(x)\)</span>单减,则<spanclass="math inline">\(g'(x)<g'(0)=0\)</span>,于是<spanclass="math inline">\(g(x)\)</span>在<spanclass="math inline">\((0,+\infty)\)</span>单减,则<spanclass="math inline">\(g(x)<g(0)=0\)</span>,即<spanclass="math inline">\(a<b\)</span></p>
</div>
<h2 id="新课标1卷12题">2021新课标1卷12题</h2>
<div class="note note-primary">
<p>12.设<span class="math inline">\(a=2\ln1.01\)</span>,<spanclass="math inline">\(b=\ln1.02\)</span>,<spanclass="math inline">\(c=\sqrt{1.04}-1\)</span>,则( )</p><p><span class="math inline">\(A.a<b<c\qquad\)</span> <spanclass="math inline">\(B.b<c<a\qquad\)</span> <spanclass="math inline">\(C.b<a<c\qquad\)</span> <spanclass="math inline">\(D.c<a<b\)</span></p>
</div>
<div class="note note-success">
<p>解:<span class="math inline">\(a=\ln1.0201>b\)</span>,比较<spanclass="math inline">\(b\)</span>和<spanclass="math inline">\(c\)</span>,注意到<spanclass="math inline">\(1.04=1.02\times2-1\)</span>,构造<spanclass="math inline">\(f(x)=\ln x-\sqrt{2x-1}+1\)</span></p><p><spanclass="math inline">\(f'(x)=\dfrac{\sqrt{2x-1}-x}{x\sqrt{2x-1}}\le0\)</span>,则<spanclass="math inline">\(f(x)\)</span>在<spanclass="math inline">\([1,+\infty)\)</span>单减,于是<spanclass="math inline">\(f(1.02)<f(1)=0\)</span>,即<spanclass="math inline">\(b<c\)</span></p><p>比较<span class="math inline">\(a\)</span>和<spanclass="math inline">\(c\)</span>,构造<spanclass="math inline">\(g(x)=2\ln x-\sqrt{4x-3}+1\)</span>,<spanclass="math inline">\(g'(x)=\dfrac{2(\sqrt{4x-3}-x)}{x\sqrt{4x-3}}\)</span></p><p>令<span class="math inline">\(g'(x)>0\)</span>得<spanclass="math inline">\(x\in(1,3)\)</span>,于是<spanclass="math inline">\(g(x)\)</span>在<spanclass="math inline">\((1,3)\)</span>单增,则<spanclass="math inline">\(g(1.01)>g(1)=0\)</span>,即<spanclass="math inline">\(a>c\)</span></p>
</div>
]]></content>
<categories>
<category>数学</category>
<category>导数</category>
</categories>
</entry>
<entry>
<title>docker安装joomla</title>
<url>/2022/06/05/docker%E5%AE%89%E8%A3%85joomla/</url>
<content><![CDATA[<h1 id="手动安装">手动安装</h1>
<h2 id="创建数据库和joomla共用网络">创建数据库和joomla共用网络</h2>
<figure class="highlight ebnf"><table><tr><td class="code"><pre><code class="hljs ebnf"><span class="hljs-attribute">docker network create mariadb-network</span><br><span class="hljs-attribute">docker inspect mariadb-network</span><br></code></pre></td></tr></table></figure>
<h2 id="创建映射目录">创建映射目录</h2>
<figure class="highlight awk"><table><tr><td class="code"><pre><code class="hljs awk">mkdir <span class="hljs-regexp">/opt/</span>joomla<br>mkdir <span class="hljs-regexp">/opt/m</span>ariadb<br></code></pre></td></tr></table></figure>
<h2 id="创建mariadb数据库">创建mariadb数据库</h2>
<figure class="highlight gradle"><table><tr><td class="code"><pre><code class="hljs gradle">docker run -d --name mariadb --network mariadb-network -v <span class="hljs-regexp">/opt/m</span>ariadb:<span class="hljs-regexp">/var/</span>lib/mysql --env MARIADB_ROOT_PASSWORD=yourpassword mariadb:latest<br>docker <span class="hljs-keyword">inspect</span> mariadb | <span class="hljs-keyword">grep</span> -i <span class="hljs-string">'ipaddress'</span><br>docker logs mariadb<br></code></pre></td></tr></table></figure>
<h2 id="创建joomla">创建joomla</h2>
<figure class="highlight routeros"><table><tr><td class="code"><pre><code class="hljs routeros">docker <span class="hljs-builtin-name">run</span> -d --name joomla -p 8080:80 -v /opt/joomla:/var/www/html --network mariadb-network -e <span class="hljs-attribute">JOOMLA_DB_HOST</span>=mariadb -e <span class="hljs-attribute">JOOMLA_DB_USER</span>=root -e <span class="hljs-attribute">JOOMLA_DB_PASSWORD</span>=yourmariadbpassword joomla<br>docker logs joomla<br></code></pre></td></tr></table></figure>
<h1
id="docker-compose数据库一体化安装">docker-compose数据库一体化安装</h1>
<h2 id="创建docker-compose.yml">创建docker-compose.yml</h2>
<figure class="highlight yaml"><table><tr><td class="code"><pre><code class="hljs yaml"><span class="hljs-attr">version:</span> <span class="hljs-string">'3.1'</span><br><br><span class="hljs-attr">services:</span><br> <span class="hljs-attr">joomla:</span><br> <span class="hljs-attr">image:</span> <span class="hljs-string">joomla</span><br> <span class="hljs-attr">container_name:</span> <span class="hljs-string">joomla</span><br> <span class="hljs-attr">restart:</span> <span class="hljs-string">always</span><br> <span class="hljs-attr">links:</span><br> <span class="hljs-bullet">-</span> <span class="hljs-string">joomladb:mysql</span><br> <span class="hljs-attr">ports:</span><br> <span class="hljs-bullet">-</span> <span class="hljs-number">8080</span><span class="hljs-string">:80</span><br> <span class="hljs-attr">environment:</span><br> <span class="hljs-attr">JOOMLA_DB_HOST:</span> <span class="hljs-string">joomladb</span><br> <span class="hljs-attr">JOOMLA_DB_PASSWORD:</span> <span class="hljs-string">your_password(same</span> <span class="hljs-string">as</span> <span class="hljs-string">below)</span><br><br> <span class="hljs-attr">joomladb:</span><br> <span class="hljs-attr">image:</span> <span class="hljs-string">mysql:5.6</span><br> <span class="hljs-attr">container_name:</span> <span class="hljs-string">mysql</span><br> <span class="hljs-attr">restart:</span> <span class="hljs-string">always</span><br> <span class="hljs-attr">environment:</span><br> <span class="hljs-attr">MYSQL_ROOT_PASSWORD:</span> <span class="hljs-string">your_password(same</span> <span class="hljs-string">as</span> <span class="hljs-string">above)</span><br></code></pre></td></tr></table></figure>
<h1 id="启动容器">启动容器</h1>
<figure class="highlight ebnf"><table><tr><td class="code"><pre><code class="hljs ebnf"><span class="hljs-attribute">docker-compose up -d</span><br></code></pre></td></tr></table></figure>
<h1 id="查看容器启动日志">查看容器启动日志</h1>
<figure class="highlight ebnf"><table><tr><td class="code"><pre><code class="hljs ebnf"><span class="hljs-attribute">docker logs joomla</span><br><span class="hljs-attribute">docker logs mysql</span><br></code></pre></td></tr></table></figure>
<h2 id="查看容器ip">查看容器ip</h2>
<figure class="highlight handlebars"><table><tr><td class="code"><pre><code class="hljs handlebars"><span class="xml">docker inspect -f '</span><span class="hljs-template-variable">{{<span class="hljs-name">range</span> .NetworkSettings.Networks}}</span><span class="hljs-template-variable">{{<span class="hljs-name">.IPAddress</span>}}</span><span class="hljs-template-variable">{{<span class="hljs-name">end</span>}}</span><span class="xml">' <span class="hljs-tag"><<span class="hljs-name">container_name</span>></span></span><br></code></pre></td></tr></table></figure>
<p>或者查看全面信息</p>
<figure class="highlight xml"><table><tr><td class="code"><pre><code class="hljs xml">docker inspect <span class="hljs-tag"><<span class="hljs-name">container_name</span>></span><br></code></pre></td></tr></table></figure>
<p>查看mysql的ip地址下一步备用</p>
<figure class="highlight handlebars"><table><tr><td class="code"><pre><code class="hljs handlebars"><span class="xml">docker inspect -f '</span><span class="hljs-template-variable">{{<span class="hljs-name">range</span> .NetworkSettings.Networks}}</span><span class="hljs-template-variable">{{<span class="hljs-name">.IPAddress</span>}}</span><span class="hljs-template-variable">{{<span class="hljs-name">end</span>}}</span><span class="xml">' mysql</span><br></code></pre></td></tr></table></figure>
<h1 id="安装joomla">安装joomla</h1>
<p>访问<code>http://ip:8080</code>
进入安装界面,其中关键的步骤是设置数据库的地址为上一步获取的ip地址,用户名为<code>root</code>,密码为<code>docker-compose</code>里面设置好的密码,其它网站设置根据自己情况填写即可。</p>
]]></content>
<tags>
<tag>docker</tag>
</tags>
</entry>
<entry>
<title>cdn.jsdelivr.net被墙</title>
<url>/2022/06/01/cdn-jsdelivr-net%E8%A2%AB%E5%A2%99/</url>
<content><![CDATA[<p>5月16日,cdn.jsdelivr.net被墙,至此加速github成为历史;</p>
<p>临时解决方案:将cdn.jsdelivr.net更改为fastly.jsdelivr.net,不知道会不会留活口给jsdelivr</p>
<p>同时受到影响的还有静态资源mathjax的解析服务,目前替换为了https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.1</p>
]]></content>
<categories>
<category>折腾</category>
</categories>
<tags>
<tag>cdn</tag>
</tags>
</entry>
<entry>
<title>2021T8联考数学22导数题</title>
<url>/2022/05/13/2021T8%E8%81%94%E8%80%83%E6%95%B0%E5%AD%A622%E5%AF%BC%E6%95%B0%E9%A2%98/</url>
<content><![CDATA[<div class="note note-primary">
<p>已知函数<span class="math inline">\(f(x)=a\ln x-\sinx+x\)</span>,其中<span class="math inline">\(a\)</span>为非零常数.</p><p>(1)若函数<span class="math inline">\(f(x)\)</span>在<spanclass="math inline">\((0,+\infty)\)</span>上单调递增,求<spanclass="math inline">\(a\)</span>的取值范围;</p><p>(2)设<spanclass="math inline">\(\theta\in(\pi,\dfrac{3}{2}\pi)\)</span>,且<spanclass="math inline">\(\cos\theta=1+\theta\sin\theta\)</span>,证明:当<spanclass="math inline">\(\theta^2\sin\theta<a<0\)</span>时,函数<spanclass="math inline">\(f(x)\)</span>在<spanclass="math inline">\((0,2\pi)\)</span>上恰有两个极值点.</p>
</div>
<div class="note note-success">
<p><font color=deepskyblue>解析:</font>(2)<spanclass="math inline">\(f'(x)=\dfrac{a}{x}-\cos x+1=\dfrac{a-x\cosx+x}{x}\)</span></p><p>设<span class="math inline">\(g(x)=x\cos{x}-x\)</span>,注意到<spanclass="math inline">\(g(0)=g(2\pi)=0\)</span>,并且<spanclass="math inline">\(g(\theta)=\theta\cos\theta-\theta=\theta^2\sin\theta\)</span>,该值恰好是条件<span class="math inline">\(\theta^2\sin\theta<a<0\)</span>的端点值,为了使得<spanclass="math inline">\(g(x)=a\)</span>有两个解,因此我们推测<spanclass="math inline">\(g(x)\)</span>的图像应该如图所示:</p><p><img src="https://cdn.jsdelivr.net/gh/andyppang/mdpic/pic/20220513235040.png" style="zoom:67%;" /></p><p>于是需要说明<span class="math inline">\(g(x)\)</span>在<spanclass="math inline">\((0,\theta)\)</span>单减,<spanclass="math inline">\((\theta,2\pi)\)</span>单增,为此研究<spanclass="math inline">\(g'(x)=\cos x-x\sin x-1\)</span>,注意到<spanclass="math inline">\(g'(0)=g'(2\pi)=0\)</span>,<spanclass="math inline">\(g'(\theta)=\cos\theta-\theta\sin\theta-1=0\)</span>,因此我们推测<spanclass="math inline">\(g'(x)\)</span>的图象应该如图所示:</p><p><img src="https://cdn.jsdelivr.net/gh/andyppang/mdpic/pic/20220513235246.png" style="zoom:67%;" /></p><p>于是需要说明<spanclass="math inline">\(x\in(0,\theta)\)</span>时,<spanclass="math inline">\(g'(x)<0\)</span>,<spanclass="math inline">\(x\in(\theta,2\pi)\)</span>时,<spanclass="math inline">\(g'(x)>0\)</span>.但是我们只能方便证明<spanclass="math inline">\(x\in(0,\pi)\)</span>时,<spanclass="math inline">\(g'(x)=\cos x-1-x\sinx<0\)</span>,为了证明其它区间<spanclass="math inline">\(g'(x)\)</span>的符号,需要结合<spanclass="math inline">\(g'(x)\)</span>的单调性,也就是要说明<spanclass="math inline">\(g'(x)\)</span>在<spanclass="math inline">\((0,x_1)\)</span>单减,<spanclass="math inline">\((x_1,x_2)\)</span>单增,<spanclass="math inline">\((x_2,2\pi)\)</span>单减,为此研究<spanclass="math inline">\(g''(x)=-2\sin x-x\cosx\)</span>,注意到<spanclass="math inline">\(g''(0)=0,g''(\dfrac{3\pi}{2})=2,g''(2\pi)=-2\pi\)</span>,因此我们推测<spanclass="math inline">\(g''(x)\)</span>的图象应该如图所示:</p><p><imgsrc="https://cdn.jsdelivr.net/gh/andyppang/mdpic/pic/20220513235328.png" /></p><p>当<spanclass="math inline">\(x\in(\pi,\dfrac{3\pi}{2})\)</span>时,<spanclass="math inline">\(g''(x)=-2\sin x-x\cosx>0\)</span>,于是<spanclass="math inline">\(g'(x)\)</span>在<spanclass="math inline">\((\pi,\dfrac{3\pi}{2})\)</span>单增,由于<spanclass="math inline">\(g'(\theta)=0\)</span>,那么<spanclass="math inline">\(x\in(\pi,\theta)\)</span>时,<spanclass="math inline">\(g'(\theta)<0\)</span>,<spanclass="math inline">\(x\in(\theta,\dfrac{3\pi}{2})\)</span>时,<spanclass="math inline">\(g'(\theta)>0\)</span>,至此<spanclass="math inline">\(x\in(0,\theta)\)</span>时,<spanclass="math inline">\(g'(x)<0\)</span>说明完毕,接下来只需要证明<spanclass="math inline">\(x\in(\dfrac{3\pi}{2},2\pi)\)</span>时,<spanclass="math inline">\(g'(x)>0\)</span>即可,只需要说明<spanclass="math inline">\(g'(x)\)</span>在<spanclass="math inline">\((\dfrac{3\pi}{2},x_2)\)</span>单增,亦即<spanclass="math inline">\(g''(x)>0\)</span>, <spanclass="math inline">\(g'(x)\)</span>在<spanclass="math inline">\((x_2,2\pi)\)</span>单减,亦即<spanclass="math inline">\(g''(x)<0\)</span>,于是需要借助<spanclass="math inline">\(g''(x)\)</span>的单调性,再次求导<spanclass="math inline">\(g'''(x)=-3\cos x+x\sinx\)</span>,惊喜发现<spanclass="math inline">\(x\in(\dfrac{3\pi}{2},2\pi)\)</span>时,<spanclass="math inline">\(g'''(x)<0\)</span>,因此<spanclass="math inline">\(g''(x)\)</span>在<spanclass="math inline">\(x\in(\dfrac{3\pi}{2},2\pi)\)</span>单减,由于<spanclass="math inline">\(g''(\dfrac{3\pi}{2})=2,g''(2\pi)=-2\pi\)</span>,于是<spanclass="math inline">\(\existsx_2\in(\dfrac{3\pi}{2},2\pi)\)</span>使得<spanclass="math inline">\(g''(x_2)=0\)</span>,至此思路全部打通。</p><p>最终正常顺序简述为:</p><p><imgsrc="https://cdn.jsdelivr.net/gh/andyppang/mdpic/pic/20220513235609.png" /></p><p>本题以单调性为主线(红色部分),采取分段证明的策略,每次求导都能容易看到在部分区间上导数的符号(绿色部分),然后结合特殊点处的函数值(黄色部分),判断各导函数是否存在零点,从而决定上级导函数的单调性。</p>
</div>
]]></content>
<categories>
<category>数学</category>
<category>导数</category>
</categories>
<tags>
<tag>导数</tag>
<tag>零点问题</tag>
</tags>
</entry>
<entry>
<title>因式分解背后的主元思想</title>
<url>/2022/03/14/%E5%9B%A0%E5%BC%8F%E5%88%86%E8%A7%A3%E8%83%8C%E5%90%8E%E7%9A%84%E4%B8%BB%E5%85%83%E6%80%9D%E6%83%B3/</url>
<content><![CDATA[<p>题目:若<span class="math inline">\(f(x)=\dfrac{1}{2}x^2+b\ln
x+ax\)</span>在<span
class="math inline">\((1,2)\)</span>内有两个极值点,则<span
class="math inline">\(b(3a+b+9)\)</span>的取值范围是___</p>
<p><font color=deepskyblue>解析:</font> <span
class="math inline">\(f'(x)=\dfrac{x^2+ax+b}{x}\)</span>,则<span
class="math inline">\(x^2+ax+b=0\)</span>在<span
class="math inline">\((1,2)\)</span>有两个不相等的实数根,设为<span
class="math inline">\(x_1,x_2\)</span>,于是 <span
class="math display">\[
\begin{cases}
x_1+x_2=-a\\
x_1x_2=b
\end{cases}
\]</span> 则<span
class="math inline">\(b(3a+b+9)=x_1x_2(-3x_1-3x_2+x_1x_2+9)\)</span></p>
<p>由于注意到<span class="math inline">\(x_1,x_2\)</span>是可以在<span
class="math inline">\((1,2)\)</span>内任意互不影响的任意发生变化的,也就是说二者是相互独立的变量,因此对于上式就是一个<strong>独立双变量的范围问题</strong>,那么就可以采用<strong>主元法</strong>进行求解,不妨<strong>选定<span
class="math inline">\(x_1\)</span>为主元对上式进行整理</strong>: <span
class="math display">\[
\begin{aligned}
&\quad x_1x_2(-3x_1-3x_2+x_1x_2+9)\\
&=(x_2^2-3x_2)x_1^2-(3x_2^2-9x_2)x_1\\
&=x_2(x_2-3)x_1^2-3x_2(x_2-3)x_1\\
&=x_2(x_2-3)(x_1^2-3x_1)\\
&=(x_2^2-3x_2)(x_1^2-3x_1)
\end{aligned}
\]</span> 没想到整理出来了一个<span
class="math inline">\(x_1,x_2\)</span>不再缠绵的一个式子,那就只需要求出各自的范围就好了</p>
<p>由于<span class="math inline">\(x_1\in(1,2)\)</span>,则<span
class="math inline">\(x_1^2-3x_1\in[-\dfrac{9}{4},-2)\)</span>,同理<span
class="math inline">\(x_2^2-3x_2\in[-\dfrac{9}{4},-2)\)</span>,但是由于<span
class="math inline">\(x_1\ne x_2\)</span></p>
<p>则<span
class="math inline">\((x_2^2-3x_2)(x_1^2-3x_1)\in(4,\dfrac{81}{16})\)</span></p>
]]></content>
<categories>
<category>数学</category>
</categories>
<tags>
<tag>主元法</tag>
</tags>
</entry>
<entry>
<title>相关系数</title>
<url>/2022/03/03/%E7%9B%B8%E5%85%B3%E7%B3%BB%E6%95%B0/</url>
<content><![CDATA[<p><strong>相关系数的引入理解</strong></p>
<p>对于成对数据的相关性强弱问题,可以从定性的角度观察散点图直观的感知,当然定量进行研究就需要引入一个新的量——相关系数</p>
<p>对于数据</p>
<p><span class="math display">\[
(x_1,y_1),(x_2,y_2),...,(x_n,y_n)
\]</span></p>
<ul>
<li>进行“中心化”处理:先将其平移到以<span
class="math inline">\((\overline{x},\overline{y})\)</span>为中心的坐标系下,得到一组新的数据</li>
</ul>
<p><span class="math display">\[
(x_1-\overline{x},y_1-\overline{y}),(x_2-\overline{x},y_2-\overline{y}),...,(x_n-\overline{x},y_n-\overline{y})
\]</span></p>
<ul>
<li><p>中心化处理对散点图的影响:正相关的散点图平移后,大部分点分布在一、三象限;负相关的散点图平移后,大部分点分布在二、四象限。</p></li>
<li><p>中心化处理对回归直线的影响:由于回归直线一定经过<span
class="math inline">\((\overline{x},\overline{y})\)</span>,则平移后的回归直线一定经过原点<span
class="math inline">\((0,0)\)</span>,假设所有的点都在回归直线上,即相关性最强(函数关系),因此有</p></li>
</ul>
<p><span class="math display">\[
y_i-\overline{y}=k(x_i-\overline{x})
\]</span></p>
<p>也就是说对于以下两个<span
class="math inline">\(n\)</span>维向量共线</p>
<p><span class="math display">\[
\overrightarrow{X}=(x_1-\overline{x},x_2-\overline{x},...,x_n-\overline{x})\\
\overrightarrow{Y}=(y_1-\overline{y},y_2-\overline{y},...,y_n-\overline{y})
\]</span></p>
<p>倘若有些点不在回归直线上,则会造成以上两个向量的不共线,使得两个向量之间产生夹角<span
class="math inline">\(\theta\)</span>,因此我们可以用夹角<span
class="math inline">\(\theta\)</span>
大小来衡量相关程度的强弱:显然若<span
class="math inline">\(\theta=0^{\circ}\)</span>,则正相关性最强;若<span
class="math inline">\(\theta=180^{\circ}\)</span>,则负相关性最强</p>
<p><span class="math display">\[
r=\cos\theta=\dfrac{\sum\limits_{i=1}^n(x_i-\overline{x})(y_i-\overline{y})}{\sqrt{\sum\limits_{i=1}^n(x_i-\overline{x})^2}\cdot\sqrt{\sum\limits_{i=1}^n(y_i-\overline{y})^2}}
\]</span></p>
<p><strong>相关系数的取值范围及意义:</strong></p>
<p><span class="math inline">\(r\in[-1,1]\)</span></p>
<p><span class="math inline">\(r=0\)</span>表示没有相关关系</p>
<p><span class="math inline">\(|r|=1\)</span>表示函数关系</p>
<p><span class="math inline">\(|r|\)</span>越大,则相关性越强</p>
<p><strong>相关系数与回归直线斜率<span
class="math inline">\(\widehat{b}\)</span>的关系:</strong></p>
<p><span class="math display">\[
\widehat{b}=\dfrac{\overrightarrow{X}\cdot\overrightarrow{Y}}
{|\overrightarrow{X}|^2}=\dfrac{|\overrightarrow{X}||\overrightarrow{Y}|
\cos\theta}{|\overrightarrow{X}|^2}=
r\cdot \dfrac{\sigma_y}{\sigma_x}
\]</span></p>
]]></content>
<categories>
<category>数学</category>
</categories>
<tags>
<tag>回归分析</tag>
</tags>
</entry>
<entry>
<title>测试Windows下写博客</title>
<url>/2022/03/01/testwindows/</url>
<content><![CDATA[<p>这是windows7环境下,安装了git + nodejs + pandoc + hexo
,然后写下的测试篇。</p>
]]></content>
<categories>
<category>折腾</category>
</categories>
<tags>
<tag>windows</tag>
</tags>