-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsearch.xml
More file actions
2278 lines (2075 loc) · 329 KB
/
search.xml
File metadata and controls
2278 lines (2075 loc) · 329 KB
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>使用adb从手机传输相片到电脑</title>
<url>/2022/04/adb-picture-transfer/</url>
<content><![CDATA[<p>随着手机照片越来越多,手机空间越来越小,把手机照片腾到电脑上或许是一个减小空间的办法。<a id="more"></a></p>
<p>将安卓手机上的照片复制到电脑上有几种方法:</p>
<ul>
<li>手机连电脑,使用文件模式复制照片</li>
<li>手机连电脑,使用照片模式复制照片</li>
<li>手机插U盘,复制照片</li>
<li>手机插电脑,用adb命令行复制</li>
</ul>
<p>前两种方法,由于Windows垃圾的安卓数据传输协议,极有可能中途失败或者传输错误。不考虑</p>
<p>第三种方法,可行,但需要手机支持插U盘以及需要USB口转typeC口等,不是很方便</p>
<p>第四种方法,步骤稍多,但是不需要U盘中转,速度快,可以方便的查看结果等优势</p>
<blockquote>
<p>本文所使用和举例的机型是 MIUI 系统的手机,其他的系统路径不同,但是方法是一样的。</p>
<p>adb工具在这里放一个链接: <a href="https://cdutsec.lanzouw.com/ixnfb02yij7g" rel="external nofollow noopener noreferrer" target="_blank">https://cdutsec.lanzouw.com/ixnfb02yij7g</a></p>
<p>adb工具的版本太旧会影响传输速度和命令行的交互,所以尽量使用新版本的adb</p>
</blockquote>
<h1 id="0-准备工作"><a href="#0-准备工作" class="headerlink" title="0. 准备工作"></a>0. 准备工作</h1><h2 id="0-1-电脑上adb工具"><a href="#0-1-电脑上adb工具" class="headerlink" title="0.1 电脑上adb工具"></a>0.1 电脑上adb工具</h2><p>在此文件夹中,这三个文件,打开命令行即可操作。</p>
<p><img src="../../blog-images/2022/adb-picture-transfer/image-20220410171522377.png" alt="image-20220410171522377"></p>
<p>在文件夹按住shift然后鼠标右键,选择在此处打开命令行,可以运行adb</p>
<p>(如果打开的是powershell,运行cmd进入cmd命令行)</p>
<img src="../../blog-images/2022/adb-picture-transfer/image-20220410113046875.png" alt="image-20220410113046875" style="zoom:50%;">
<h2 id="0-2-手机上开启开发者模式和USB调试"><a href="#0-2-手机上开启开发者模式和USB调试" class="headerlink" title="0.2 手机上开启开发者模式和USB调试"></a>0.2 手机上开启开发者模式和USB调试</h2><h4 id="0-2-1-开启开发者模式"><a href="#0-2-1-开启开发者模式" class="headerlink" title="0.2.1 开启开发者模式"></a>0.2.1 开启开发者模式</h4><p>如果手机没有开启开发者模式,按照这个操作开启开发者模式。</p>
<p>打开设置,点开我的设备</p>
<img src="../../blog-images/2022/adb-picture-transfer/IMG_20220405_210341.jpg" alt="IMG_20220405_210341" style="zoom:33%;">
<p>点开全部参数</p>
<img src="../../blog-images/2022/adb-picture-transfer/IMG_20220405_210406.jpg" alt="IMG_20220405_210406" style="zoom:33%;">
<p>一直点击MIUI版本,会进入开发者模式。</p>
<img src="../../blog-images/2022/adb-picture-transfer/IMG_20220405_210501.jpg" alt="IMG_20220405_210501" style="zoom:33%;">
<h4 id="0-2-2-打开开发者模式后打开USB调试"><a href="#0-2-2-打开开发者模式后打开USB调试" class="headerlink" title="0.2.2 打开开发者模式后打开USB调试"></a>0.2.2 打开开发者模式后打开USB调试</h4><p>点开设置,打开更多设置,</p>
<img src="../../blog-images/2022/adb-picture-transfer/IMG_20220405_210522.jpg" alt="IMG_20220405_210522" style="zoom:33%;">
<p>找到开发者选项</p>
<img src="../../blog-images/2022/adb-picture-transfer/IMG_20220405_210531.jpg" alt="IMG_20220405_210531" style="zoom:33%;">
<p>首先开启开发者选项,手机可能提示有危险,选择确定。</p>
<p>然后打开USB调试的开关</p>
<img src="../../blog-images/2022/adb-picture-transfer/Screenshot_2022-04-10-16-46-22-788_com.miui.securitycenter.jpg" alt="Screenshot_2022-04-10-16-46-22-788_com.miui.securitycenter" style="zoom: 33%;">
<img src="../../blog-images/2022/adb-picture-transfer/IMG_20220405_210546.jpg" alt="IMG_20220405_210546" style="zoom:33%;">
<h1 id="1-手机创建相册和分类照片"><a href="#1-手机创建相册和分类照片" class="headerlink" title="1. 手机创建相册和分类照片"></a>1. 手机创建相册和分类照片</h1><p>将手机中需要传到电脑的图片选中,点击添加到,新相册,创建相册</p>
<p>注意这里命名需要是:<strong>英文或数字,不能有空格</strong> ,如果是带有汉字或者有空格,选中其中的图片,重新创建相册。</p>
<img src="../../blog-images/2022/adb-picture-transfer/IMG_20220410_113421.jpg" alt="IMG_20220410_113421" style="zoom:33%;">
<img src="../../blog-images/2022/adb-picture-transfer/IMG_20220410_113442.jpg" alt="IMG_20220410_113442" style="zoom:33%;">
<p>选择移动相片的方式</p>
<img src="../../blog-images/2022/adb-picture-transfer/IMG_20220410_113507.jpg" alt="IMG_20220410_113507" style="zoom:33%;">
<h1 id="2-电脑连接adb,搬运相片"><a href="#2-电脑连接adb,搬运相片" class="headerlink" title="2. 电脑连接adb,搬运相片"></a>2. 电脑连接adb,搬运相片</h1><p>把手机用原厂充电线插上电脑(杂牌线可能识别不了或数据传输有问题!)</p>
<p>运行<code>adb devices</code> ,可以看到设备ID。</p>
<p>(这时候手机可能谈弹出提示:是否允许这台计算机调试,选择允许。)</p>
<p><img src="../../blog-images/2022/adb-picture-transfer/image-20220410165018191.png" alt="image-20220410165018191"></p>
<p><code>adb shell</code> 进入手机空间</p>
<p><code>cd /sdcard/Pictures/Gallery/owner/</code>,进入到相册的目录。<code>ls</code> 可以看到各个创建的相册</p>
<p>(在MIUI旧版本上需要运行的可能是:<code>cd /sdcard/MIUI/Gallery/cloud/owner/</code> )</p>
<p><img src="../../blog-images/2022/adb-picture-transfer/image-20220410165325479.png" alt="image-20220410165325479"></p>
<p><code>cd 文件夹名字</code> 进入文件夹,例如在这里我的文件夹是usb,那么我运行:<code>cd usb</code></p>
<p><code>pwd</code> 查看当前目录的路径,</p>
<p><img src="../../blog-images/2022/adb-picture-transfer/image-20220410171122349.png" alt="image-20220410171122349"></p>
<p>复制完整路径备用。</p>
<p><code>exit</code>或 ctrl d 退出shell命令行,回到Windows命令行,运行:</p>
<p><code>adb pull 完整路径</code> 来拉取文件,例如在此处我运行:<code>adb pull /sdcard/Pictures/Gallery/owner/usb</code></p>
<p><img src="../../blog-images/2022/adb-picture-transfer/image-20220410171324243.png" alt="image-20220410171324243"></p>
<p>过程中没有报错,如果报错需要根据提示解决问题。</p>
<p>打开文件夹可以看到,相片文件夹已经有了:</p>
<p><img src="../../blog-images/2022/adb-picture-transfer/image-20220410171541286.png" alt="image-20220410171541286"></p>
<h1 id="3-手机和电脑确认文件夹信息"><a href="#3-手机和电脑确认文件夹信息" class="headerlink" title="3. 手机和电脑确认文件夹信息"></a>3. 手机和电脑确认文件夹信息</h1><h2 id="3-1-手机上查看相册文件夹信息"><a href="#3-1-手机上查看相册文件夹信息" class="headerlink" title="3.1 手机上查看相册文件夹信息"></a>3.1 手机上查看相册文件夹信息</h2><p>打开re文件管理器(如果没有 安装一个)</p>
<img src="../../blog-images/2022/adb-picture-transfer/IMG_20220410_113744.jpg" alt="IMG_20220410_113744" style="zoom:33%;">
<p>和上面的路径一样,打开找到owner,找到自己创建的文件夹,</p>
<p>长按选中文件夹,点击右上方三个点,点击属性</p>
<img src="../../blog-images/2022/adb-picture-transfer/IMG_20220410_113858.jpg" alt="IMG_20220410_113858" style="zoom:25%;">
<img src="../../blog-images/2022/adb-picture-transfer/IMG_20220410_113908.jpg" alt="IMG_20220410_113908" style="zoom: 33%;">
<p>可以看到文件夹里面有多少个文件,多少个文件夹,多少字节</p>
<img src="../../blog-images/2022/adb-picture-transfer/image-20220410173129131.png" alt="image-20220410173129131" style="zoom:33%;">
<h2 id="3-2-电脑上查看文件夹信息"><a href="#3-2-电脑上查看文件夹信息" class="headerlink" title="3.2 电脑上查看文件夹信息"></a>3.2 电脑上查看文件夹信息</h2><p>打开刚才的文件夹,右键刚收到的文件夹,属性,</p>
<p>或者按住键盘<code>alt</code>键然后双击文件夹,打开文件夹属性</p>
<img src="../../blog-images/2022/adb-picture-transfer/image-20220410172952180.png" alt="image-20220410172952180" style="zoom: 50%;">
<p>对比两个信息,观察文件数、文件夹数、字节数都是一样的,就是完全复制到电脑上了,手机上的可以删除掉了</p>
<h1 id="4-手机上删除相册"><a href="#4-手机上删除相册" class="headerlink" title="4. 手机上删除相册"></a>4. 手机上删除相册</h1><p>这里快到结尾了,但还是要多说几句</p>
<p>删除相册的方式用且仅用:系统自带的相册app,来删除相册</p>
<img src="../../blog-images/2022/adb-picture-transfer/IMG_20220410_113959.jpg" alt="IMG_20220410_113959" style="zoom:33%;">
<p>如图所示,MIUI是可能开启了云备份的,如果你恰好开了云备份并且这个相册里的一些图片已经备份,那么在使用文件管理器删除相册所在的文件夹,可能有两个问题:</p>
<ul>
<li>相册运行错误。相册找不到文件夹,但是配置中是有文件夹的,所以会显示一个相册,但是打不开</li>
<li>云备份恢复。如果一些图片删除了,手机联网会自动从云备份恢复图片。那你这个相册就删不干净了。</li>
</ul>
<p>如图所示,相册app删除的时候会同时删除远程备份,所以,,干净(并且不会导致相册运行错误)</p>
]]></content>
<categories>
<category>none</category>
</categories>
<tags>
<tag>none</tag>
</tags>
</entry>
<entry>
<title>硬盘损坏(物理)和事件分析</title>
<url>/2022/03/my-disk-crushed/</url>
<content><![CDATA[<p>寒假期间,本人的电脑硬盘坏掉了。</p>
<p>总结一点经验吧,希望能帮助到您。</p>
<a id="more"></a>
<h2 id="事件经过"><a href="#事件经过" class="headerlink" title="事件经过"></a>事件经过</h2><p> 起初是偶尔的找不到系统分区找不到 winload.efi 从而无法启动。后来启不动,BIOS也识别不到,多重启几次可以开机。最后直接无法识别,换卡槽换机器也完全无法识别。 <del>本人猜测可能是主控坏掉的原因。</del></p>
<p> 硬盘是<code>西数SN550</code>,容量是1TB,由于是在淘宝小店买的便宜货,店铺的售后就不可能了,尝试西数官方联保,在线申请一直提示网络问题无法申请。尝试看一下数据恢复服务,在系数官方的数据恢复里找到了ontrack公司,在线填写信息后客服发邮件提供了报价,约合人民币5500多。奈何本人,钱包不足,遂放弃。</p>
<p> 邮件如下(也可以参考一下使用<del>昂贵的</del>数据恢复服务的操作流程):</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">您好XXX,</span><br><span class="line"></span><br><span class="line">多謝你使用KLDiscovery Ontrack (HK) Ltd. 數據修復服務.</span><br><span class="line">Ontrack 35年歷史,在美國上市,是全球最大的數據恢復公司,每年恢復超過50,000個成功個案。</span><br><span class="line"></span><br><span class="line">數據恢復服務的程序如下:</span><br><span class="line">1. 請郵寄你的硬盤到我們的辦公室.</span><br><span class="line">2. 數據修復服務開始後, 你會收到我們發出的郵件, 你可登入查核數據修復進度.</span><br><span class="line">3. 當修復服務完成後, 我們會傳送修復報告及報價單到你的電子郵箱.</span><br><span class="line">4. 如你對報告感到滿意, 請簽回報價單. 修復好的數據將會儲存於全新1TB 移動硬盤.</span><br><span class="line">5. 標準服務的檢查費為HKD800恢復數據費用為 HKD6000. 時間約為5-7個工作天 (不包括速遞運輸時間時間).</span><br><span class="line">6. 如因為硬件事故或需配備零件, 需時可能會更長.</span><br><span class="line">7. 如未能恢復成功, 不會收取恢復數據費用</span><br><span class="line">8. 如Ontrack 成功恢復數據, 而客戶拒絕恢復服務, 我們會收取 HKD1000 行政費.</span><br><span class="line">9. 如客戶於一個月內未有取回硬盤, ONTRACK 會將硬盤消磁並销毁.</span><br><span class="line"></span><br><span class="line">以下是我們的辦公室地址,</span><br><span class="line">To: KLDiscovery Ontrack (HK) Limited</span><br><span class="line">香港北角電器道148 號12樓1203A室</span><br><span class="line">ATTN: Andrew Sin</span><br><span class="line">Tel: +852 3704 8688</span><br><span class="line"></span><br><span class="line">請包好你的硬盤及貼上我們的Job編號 (6389167)</span><br><span class="line">請確認以上的報價並回覆以上的電郵, 多謝!</span><br><span class="line">希望收到您的好消息!</span><br><span class="line">如需要任何協助, 請致電聯絡我們+852 3704 8688.</span><br><span class="line"></span><br><span class="line">Thank you!</span><br></pre></td></tr></table></figure>
<h2 id="丢失的数据"><a href="#丢失的数据" class="headerlink" title="丢失的数据"></a>丢失的数据</h2><p> 这一块硬盘里面包含了:</p>
<ul>
<li>200G的Windows系统盘(C),</li>
<li>200G的硬件技术资料(O),</li>
<li>200G的游戏分区GTA(V),</li>
<li>200G的多媒体文件(W),</li>
<li>50G的一些备份文件(X),</li>
</ul>
<p> 这些数据和资料全部丢失了。虽然说恰好这些资料不是最重要的,但是C盘仍然是很多重要文件的集散地,不管是重装还是格盘,都会丢失大量的程序数据,包括但不限于:</p>
<ul>
<li>appdata(相当大一部分程序的数据都在appdata),</li>
<li>documents(QQ接收文件 微信接收文件,QQ和微信的聊天记录数据库,一部分IDE的项目文件),</li>
<li>User目录(相当于Linux的~目录,程序员IDE的配置,一部分项目文件,一部分程序的配置文件都会在这里,尤其是ssh密钥和xshell的服务器记录,如果丢失损失非常大)</li>
<li>Download目录(相信很多人的下载文件都是放在这里的吧,如果丢失也会损失很多内容)</li>
<li>chrome的文件夹(书签 历史记录 扩展程序和油猴插件的脚本)(虽然说你登陆了账户并且开启了chrome同步,那书签和一小段时间的历史记录和你的扩展程序可以从远程恢复,但是扩展程序里面的数据 配置 手撕脚本等可能就付之一炬了特别是油猴(当事人:现在就是后悔 非常的后悔))</li>
</ul>
<h2 id="总结一些"><a href="#总结一些" class="headerlink" title="总结一些"></a>总结一些</h2><ul>
<li><p>在此提醒各位,购买贵重电子物品一定在官方店铺购买,确保售后服务等,推荐京东,一键申请售后(当初不该贪几十块钱的便宜)</p>
</li>
<li><p>除此之外,如果发现你的硬盘出现异常:异响、偶尔无法识别数据等,可能是出问题了,应该考虑数据备份到新磁盘然后更换磁盘了</p>
</li>
<li><p>定期的备份也是重要的,条件允许的情况下可以保存两份及以上的数据(本人条件有限)</p>
</li>
<li><p>在任务管理器的性能页面里面查看磁盘的指标,比如平均响应时间、活动时间、读写延迟,如果延迟很高,说明可能不太行了</p>
<img src="../../blog-images\2022\my-disk-crushed\image-20220304205257562.png" alt="image-20220304205257562" style="zoom:50%;">
</li>
<li><p>可以使用一些工具检测硬盘的健康度或者异常程度,这里推荐一些扩展阅读资料:</p>
<p><a href="https://zhuanlan.zhihu.com/p/393343819" rel="external nofollow noopener noreferrer" target="_blank">这几款硬盘检测工具,为您的数据保驾护航 - 知乎</a></p>
<p><a href="https://www.laobuluo.com/6188.html" rel="external nofollow noopener noreferrer" target="_blank">这10款实用硬盘性能检测软件 适合HDD和SSD硬盘坏点健康检查-老部落</a></p>
<p><a href="https://www.bilibili.com/video/BV1WE41177yY/" rel="external nofollow noopener noreferrer" target="_blank">硬盘用了四年,还健康吗?|如何检测硬盘健康状态 _ 哔哩哔哩_bilibili</a></p>
</li>
</ul>
<h2 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h2><p>一怒之下在 jd 购买了三星980,1TB硬盘,感觉比西数更靠谱一点。</p>
<blockquote>
<p>西数,🐕都不用</p>
<p>真香~.jpg</p>
</blockquote>
]]></content>
<categories>
<category>none</category>
</categories>
<tags>
<tag>none</tag>
</tags>
</entry>
<entry>
<title>解决 WSL2 和 proxifier 的相互报错问题</title>
<url>/2021/07/wsl2-and-proxifier/</url>
<content><![CDATA[<p>转载自知乎:<code>https://zhuanlan.zhihu.com/p/151392411</code> </p>
<h2 id="关于使用WSL2出现“参考的对象类型不支持尝试的操作”的解决方法。"><a href="#关于使用WSL2出现“参考的对象类型不支持尝试的操作”的解决方法。" class="headerlink" title="关于使用WSL2出现“参考的对象类型不支持尝试的操作”的解决方法。"></a>关于使用WSL2出现“参考的对象类型不支持尝试的操作”的解决方法。</h2><p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/v2-7fc4f91dc113fc84a7115c2f8661b8f6_1440w.jpg" alt="关于使用WSL2出现“参考的对象类型不支持尝试的操作”的解决方法。"></p>
<a id="more"></a>
<h3 id="问题:"><a href="#问题:" class="headerlink" title="问题:"></a>问题:</h3><p>参考的对象类型不支持尝试的操作。(The attempted operation is not supported for the type of object referenced.)</p>
<h3 id="解决方法:"><a href="#解决方法:" class="headerlink" title="解决方法:"></a><strong>解决方法:</strong></h3><p><strong>1. 常见临时解决方案(不推荐):</strong></p>
<p>以管理员身份运行CMD,输入:</p>
<blockquote>
<p>netsh winsock reset</p>
</blockquote>
<p>重启计算机即可修复。</p>
<p><strong>2. 长期解决的方案(推荐):</strong></p>
<p>(1)下载此软件:</p>
<p><a href="http://www.proxifier.com/tmp/Test20200228/NoLsp.exe" rel="external nofollow noopener noreferrer" target="_blank">http://www.proxifier.com/tmp/Test20200228/NoLsp.exe</a></p>
<p>(需要挂代理访问下载)</p>
<p>(2)管理员身份运行CMD输入:</p>
<blockquote>
<p>NoLsp.exe C:\windows\system32\wsl.exe</p>
</blockquote>
<p>请自行注意NoLsp.exe程序的位置,以及你的wsl.exe位置。</p>
<p><strong>产生原因和解决方法分析:</strong></p>
<ol>
<li>代理软件和wsl2的sock端口冲突,使用netsh winsock reset重置修复。</li>
<li>Proxifer开发人员解释如下:</li>
</ol>
<blockquote>
<p>如果Winsock LSP DLL被加载到其进程中,则wsl.exe将显示此错误。最简单的解决方案是对wsl.exe使用WSCSetApplicationCategory WinAPI调用来防止这种情况。在后台,该调用在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinSock2\Parameters\AppId_Catalog中为wsl.exe创建一个条目。<br>这将告诉Windows不要将LSP DLL加载到wsl.exe进程中</p>
</blockquote>
<p><strong>上述解决方案来自于:</strong></p>
<p><a href="https://github.com/microsoft/WSL/issues/4177">https://github.com/microsoft/WSL/issues/4177</a></p>
<p><a href="https://answers.microsoft.com/zh-hans/insider/forum/all/wsl2%E5%AE%89%E8%A3%85kali/b6dd4c62-1130-4a7c-9462-1e9e5f38dab2" rel="external nofollow noopener noreferrer" target="_blank">https://answers.microsoft.com/zh-hans/insider/forum/all/wsl2%E5%AE%89%E8%A3%85kali/b6dd4c62-1130-4a7c-9462-1e9e5f38dab2</a></p>
]]></content>
<categories>
<category>none</category>
</categories>
<tags>
<tag>代理</tag>
<tag>WSL2</tag>
<tag>proxifier</tag>
</tags>
</entry>
<entry>
<title>欢迎 pwn 分区(P盘)</title>
<url>/2020/08/welcome-pwn-partition/</url>
<content><![CDATA[<p>今天再次尝试 wsl+gdb 调试,照舅失败</p>
<p>于是我搞了一个 “P分区”<a id="more"></a></p>
<hr>
<h2 id="wsl-gdb,不行-❌"><a href="#wsl-gdb,不行-❌" class="headerlink" title="wsl+gdb,不行. ❌"></a>wsl+gdb,不行. ❌</h2><p>咕了很久还是想继续尝试gdb,wsl+gdb当然是最方便的一种方式了,打开命令行就可以用,都不需要开启 vmware。</p>
<p>但是很快的就遇到了问题。首先就是 wsl (我用的是Ubuntu16.04) 装好时是不支持32位程序的,通过搜索知道了安装启动 binfmt-support 就可以,让 wsl 能运行32位程序。</p>
<p><a href="https://www.jianshu.com/p/3df082840b40" rel="external nofollow noopener noreferrer" target="_blank">让64位的WSL(windows 子 linux系统)支持运行32位程序 - 简书</a> </p>
<p>正准备开心的打开gdb调试,布星了。</p>
<p>在 gdb 里 start 可以,但是 ni 就不行了:</p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200804185229605.png" alt="image-20200804185229605"></p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">pwndbg> ni</span><br><span class="line">Warning:</span><br><span class="line">Cannot insert breakpoint 1.</span><br><span class="line">Cannot access memory at address 0x80484a0</span><br><span class="line"></span><br><span class="line">Command aborted.</span><br></pre></td></tr></table></figure>
<p>查询了一波,感觉大概可能应该或许是 wsl 他就不能调试32位程序?</p>
<img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200804184759075.png" alt="image-20200804184759075" style="zoom: 50%;">
<p>你品你细品,wsl 装好的时候是只有64位程序支持的,32位直接给砍掉了,如果要运行32位还需要安装 binfmt-support ,32位程序仿佛不是 wsl 本来所支持的功能?</p>
<p>你品你再品,gcc编译成32位程序还需要加 -m32 编译参数,那么默认编译出来就是64位?32位是不是”过时”了?</p>
<p>阅读 binfmt-support 的介绍,可以看到</p>
<p>在 <a href="https://packages.debian.org/stretch/binfmt-support" rel="external nofollow noopener noreferrer" target="_blank">https://packages.debian.org/stretch/binfmt-support</a> 上,写道:</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">==========原文==========</span><br><span class="line">软件包:binfmt-support(2.1.6-2)</span><br><span class="line">Support for extra binary formats</span><br><span class="line">The binfmt_misc kernel module, contained in versions 2.1.43 and later of the Linux kernel, allows system administrators to register interpreters for various binary formats based on a magic number or their file extension, and cause the appropriate interpreter to be invoked whenever a matching file is executed. Think of it as a more flexible version of the #! executable interpreter mechanism.</span><br><span class="line"></span><br><span class="line">This package provides an 'update-binfmts' script with which package maintainers can register interpreters to be used with this module without having to worry about writing their own init.d scripts, and which sysadmins can use for a slightly higher-level interface to this module.</span><br><span class="line"></span><br><span class="line">标签: 系统管理: 核心或模块, 软件开发: 解释器, 实做语言: implemented-in::perl, interface::commandline, 角色: 程序, 范围: 实用程序, 应用程序集: Debian</span><br><span class="line">==========google机翻==========</span><br><span class="line">软件包:binfmt-support(2.1.6-2)</span><br><span class="line">支持额外的二进制格式</span><br><span class="line">版本2.1.43和更高版本的Linux内核中包含的binfmt_misc内核模块,使系统管理员可以根据幻数或文件扩展名注册各种二进制格式的解释器,并在匹配文件时调用适当的解释器。被执行。将其视为#的更灵活版本!可执行解释器机制。</span><br><span class="line"></span><br><span class="line">该软件包提供了一个'update-binfmts'脚本,软件包维护者可以使用该脚本注册要与此模块一起使用的解释器,而不必担心编写自己的init.d脚本,并且sysadmin可以将其用于稍高级别的接口。模块。</span><br><span class="line"></span><br><span class="line">标签: 系统管理: 核心或模块, 软件开发: 解释器, 实做语言: implemented-in::perl, interface::commandline, 角色: 程序, 范围: 实用程序, 应用程序集: Debian</span><br></pre></td></tr></table></figure>
<p>在 <a href="http://binfmt-support.nongnu.org/" rel="external nofollow noopener noreferrer" target="_blank">http://binfmt-support.nongnu.org/</a> 上,写道:</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">==========原文==========</span><br><span class="line">binfmt-support</span><br><span class="line">The binfmt_misc kernel module, contained in versions 2.1.43 and later of the Linux kernel, allows system administrators to register interpreters for various binary formats based on a magic number or their file extension, and cause the appropriate interpreter to be invoked whenever a matching file is executed. Think of it as a more flexible version of the #! executable interpreter mechanism.</span><br><span class="line"></span><br><span class="line">binfmt-support provides an update-binfmts script with which package maintainers can register interpreters to be used with this module without having to worry about writing their own init.d scripts, and which sysadmins can use for a slightly higher-level interface to this module.</span><br><span class="line"></span><br><span class="line">Versions 1.2.0 and above also support a mechanism for extending the range of binary formats among which the kernel can distinguish with the aid of a userspace helper, called a detector.</span><br><span class="line"></span><br><span class="line">The source code to binfmt-support can be retrieved from its Git repository (if you don't have Git, follow the link for installation instructions).</span><br><span class="line"></span><br><span class="line">This Web page is created and maintained by Colin Watson.</span><br><span class="line">Last modified: $Date: 2017/07/09 13:30:47 $</span><br><span class="line">==========google机翻==========</span><br><span class="line">binfmt-支持</span><br><span class="line">binfmt_miscLinux内核版本2.1.43和更高版本中包含的内核模块,允许系统管理员基于幻数或其文件扩展名注册各种二进制格式的解释器,并在匹配文件被调用时调用适当的解释器。被执行。可以将其视为#!可执行解释器机制的更灵活版本 。</span><br><span class="line"></span><br><span class="line">binfmt-support提供了一个update-binfmts 脚本,程序包维护人员可以使用该脚本来注册要与此模块一起使用的解释程序,而不必担心编写自己的 init.d脚本,并且sysadmins可以将其用于该模块的更高级别的界面。</span><br><span class="line"></span><br><span class="line">1.2.0及更高版本还支持一种扩展二进制格式范围的机制,内核可以借助一种称为检测器的用户空间助手来区分二进制格式 。</span><br><span class="line"></span><br><span class="line">binfmt-support可以从其Git存储库中检索要获取 的源代码(如果您没有Git,请遵循链接以获取安装说明)。</span><br><span class="line"></span><br><span class="line">该网页由Colin Watson创建和维护 。</span><br><span class="line">上次修改时间:$日期:2017/07/09 13:30:47 $</span><br></pre></td></tr></table></figure>
<p>这两个网页说,binfmt-support 是32位程序的解释器,安装后将32位程序绑定使用它打开。这是不是有点像虚拟机风格? gdb和Linux内核应该还是不能支持32位(我猜的)</p>
<hr>
<h2 id="vmware,好用!✅"><a href="#vmware,好用!✅" class="headerlink" title="vmware,好用!✅"></a>vmware,好用!✅</h2><p>不多说了吧,VMware装一个Ubuntu来进行调试,肯定没问题 </p>
<p>但是我还是想快速的访问Windows上那些文件夹。</p>
<p><a href="https://cn.bing.com/search?q=vmware%E6%B7%BB%E5%8A%A0%E5%85%B1%E4%BA%AB%E6%96%87%E4%BB%B6%E5%A4%B9" rel="external nofollow noopener noreferrer" target="_blank">https://cn.bing.com/search?q=vmware添加共享文件夹</a></p>
<p>由于我会常用到下载文件夹,所以把下载文件夹映射到share目录。</p>
<img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200804221417612.png" alt="image-20200804221417612" style="zoom:67%;">
<p>Linux里面,文件夹在哪儿呢?</p>
<p><code>/mnt/hgfs/share</code> </p>
<p>但是文件管理器进入这个目录,还是不能右键新建文件夹。 </p>
<p><code>ls -al</code> 查看权限,<code>chmod 777 share</code>来<a href="https://www.runoob.com/linux/linux-comm-chmod.html" rel="external nofollow noopener noreferrer" target="_blank">授予最宽的权限</a>,再次 <code>ls -al</code>查看权限</p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200804222350672.png" alt="image-20200804222350672"></p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200804222407950.png" alt="image-20200804222407950"></p>
<p>设置完后就可以像正常使用一样读写这个文件夹了,所做的更改,在Windows上全部同步。</p>
<p>可是,这个目录不太好打啊</p>
<p>我在 <code>~/.bash_aliases</code> 里设置了share,来方便地命令行打开文件夹 <code>alias share="cd /mnt/hgfs/share"</code></p>
<p>那么下次运行share命令就可以了,</p>
<p>(感觉还是哪里不太方便?)</p>
<hr>
<h2 id="P盘-与-pwn"><a href="#P盘-与-pwn" class="headerlink" title="P盘 与 /pwn"></a>P盘 与 /pwn</h2><p>干脆把那个文件夹抽出来,用一个分区存?</p>
<p>好处:</p>
<ol>
<li>Windows上好找,单独一个分区呢,二进制文件放里面就好啦</li>
<li>虚拟机里好找,vmware设置挂在文件夹时输入分区就行了,不用担心如果文件夹被移动,会导致虚拟机内不可用</li>
<li>wsl 里好找,众所周知,wsl 和Windows共享文件系统,是通过把Windows上的盘符,挂载到 /mnt,那么P盘对应就是 /mnt/p,可以说目录已经灰常好打了</li>
<li>稳定不容易坏,他就是个单独分区,不存在移动文件夹导致找不到的问题,只要这个盘还在,就能用(盘不在就创建一个分区呗)</li>
</ol>
<p>在此电脑,右键,管理,磁盘管理,搞个新分区,我选的4G大小差不多了。大概像酱紫:</p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200804164302218.png" alt="image-20200804164302218"></p>
<p>操作完之后就多出来一个P分区。</p>
<blockquote>
<p>这里有一点经验教训就是新建分区后进去然后打开wsl是不行的,wsl还不能识别到分区,如果要识别,需要重启wsl,在管理员权限的cmd里运行:</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">net stop LxssManager</span><br><span class="line">net start LxssManager</span><br></pre></td></tr></table></figure>
</blockquote>
<p>虚拟机设置挂载文件夹,同上文。然后运行 ls -al 就可以看到 p 文件夹:</p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200804234159560.png" alt="image-20200804234159560"></p>
<p>这次就,不设置 alias 命令了吧,直接,把这个文件夹,映射到根目录下的 <code>/pwn</code> ?</p>
<p>创建符号链接</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">sudo ln -s /mnt/hgfs/p /pwn</span><br></pre></td></tr></table></figure>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200804234628952.png" alt="image-20200804234628952"></p>
<p>运行 <code>ls -al</code></p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200804234748499.png" alt="image-20200804234748499"></p>
<p>来试一下好了没,运行 <code>cd /pwn</code></p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200804234951886.png" alt="image-20200804234951886"></p>
<p>(这里新建p分区的时候应该应该选择exFat文件系统的。。)</p>
<p>(然后用 DiskGenius 格式化成了exFat。亲测可用)</p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200805000450165.png" alt="image-20200805000450165"></p>
<p>听说win10可以直接读取ext4 U盘,硬盘应该也快了。我试试格式化成ext4格式。</p>
<p>读取不了,资源管理器都不显示</p>
<p>尝试安装了一个 Ext2Fsd-0.69.exe,在 <a href="https://sourceforge.net/projects/ext2fsd/" rel="external nofollow noopener noreferrer" target="_blank">https://sourceforge.net/projects/ext2fsd/</a> 下载的</p>
<p>安装完成需要重启电脑,不敢重启,就算了不试了</p>
<p>格式化回exFat格式,可正常使用</p>
<p>下一步,放进文件</p>
<img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200805002113063.png" alt="image-20200805002113063" style="zoom:67%;">
<p>下一步,在Linux中使用</p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200805002130947.png" alt="image-20200805002130947"></p>
]]></content>
<categories>
<category>pwn</category>
</categories>
<tags>
<tag>gdb</tag>
<tag>linux</tag>
<tag>vmware</tag>
</tags>
</entry>
<entry>
<title>简简单单的记录一下gdb的亿点点常用的操作</title>
<url>/2020/07/gdb-operation/</url>
<content><![CDATA[<p>.<a id="more"></a></p>
<h2 id="gdb操作:"><a href="#gdb操作:" class="headerlink" title="gdb操作:"></a>gdb操作:</h2><hr>
<h4 id="gdb-xxx"><a href="#gdb-xxx" class="headerlink" title="gdb ./xxx"></a>gdb ./xxx</h4><p>开始调试xxx程序,如果不能运行,需要先 <code>chmod +x ./xxx</code></p>
<hr>
<h4 id="gdb-attach-pid"><a href="#gdb-attach-pid" class="headerlink" title="gdb attach [pid]"></a>gdb attach [pid]</h4><p>通过程序id即pid,gdb附加到一个正在运行的程序,并对其进行调试</p>
<hr>
<h4 id="start"><a href="#start" class="headerlink" title="start"></a>start</h4><p>运行程序并断点在第一条指令</p>
<p>输出寄存器,反汇编等信息</p>
<hr>
<h4 id="list"><a href="#list" class="headerlink" title="list"></a>list</h4><p>有源码的情况下 输出源码</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">pwndbg> list</span><br><span class="line">warning: Source file is more recent than executable.</span><br><span class="line">1 #include<stdio.h></span><br><span class="line">2 #include<stdlib.h></span><br><span class="line">3 #include<unistd.h></span><br><span class="line">4 int main(){</span><br><span class="line">5 char num='0';</span><br><span class="line">6 char str[10];</span><br><span class="line">7 read(0,str,0x10);</span><br><span class="line">8 if(num=='1'){</span><br><span class="line">9 puts("great.\n");</span><br><span class="line">10 fflush(stdout);</span><br></pre></td></tr></table></figure>
<hr>
<h4 id="b-内存地址"><a href="#b-内存地址" class="headerlink" title="b *内存地址"></a>b *内存地址</h4><p>在内存地址处下断点</p>
<hr>
<h4 id="b-函数名-函数名"><a href="#b-函数名-函数名" class="headerlink" title="b 函数名/*函数名"></a>b 函数名/*函数名</h4><p>下断点</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">pwndbg> b main</span><br><span class="line">Breakpoint 1 at 0x80484dc: file pwn05_char[]_overflow.cpp, line 5.</span><br></pre></td></tr></table></figure>
<hr>
<h4 id="info-b"><a href="#info-b" class="headerlink" title="info b"></a>info b</h4><p>查看断点信息</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">pwndbg> info b</span><br><span class="line">Num Type Disp Enb Address What</span><br><span class="line">1 breakpoint keep y 0x080484dc in main() at pwn05_char[]_overflow.cpp:5</span><br></pre></td></tr></table></figure>
<hr>
<h4 id="step"><a href="#step" class="headerlink" title="step"></a>step</h4><p>step(in),步入,在有源码调试时,执行下一行源码,有函数调用时进入函数调用</p>
<hr>
<h4 id="next"><a href="#next" class="headerlink" title="next"></a>next</h4><p>步过,在有源码调试时,执行下一行源码,有函数调用时执行完函数并执行到函数调用的下一行</p>
<hr>
<h4 id="nexti-ni"><a href="#nexti-ni" class="headerlink" title="nexti/ni"></a>nexti/ni</h4><p>next instruction,步过,执行下一行汇编指令</p>
<hr>
<h4 id="stepi-si"><a href="#stepi-si" class="headerlink" title="stepi/si"></a>stepi/si</h4><p>step into,步入,执行下一行汇编指令,如果有函数调用时进入函数的第一行汇编指令</p>
<hr>
<h4 id="finish"><a href="#finish" class="headerlink" title="finish"></a>finish</h4><p>运行完当前的函数,停在最后一句汇编代码</p>
<hr>
<h4 id="info-registers"><a href="#info-registers" class="headerlink" title="info registers"></a>info registers</h4><p>寄存器信息</p>
<hr>
<h4 id="x-lt-n-f-u-gt-lt-addr-gt"><a href="#x-lt-n-f-u-gt-lt-addr-gt" class="headerlink" title="x/<n/f/u> <addr>"></a><code>x/<n/f/u> <addr></code></h4><p>格式:</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">f格式:</span><br><span class="line">x 按十六进制格式显示变量。</span><br><span class="line">d 按十进制格式显示变量。</span><br><span class="line">u 按十六进制格式显示无符号整型。</span><br><span class="line">o 按八进制格式显示变量。</span><br><span class="line">t 按二进制格式显示变量。</span><br><span class="line">a 按十六进制格式显示变量。</span><br><span class="line">c 按字符格式显示变量。</span><br><span class="line">f 按浮点数格式显示变量。</span><br><span class="line"></span><br><span class="line">u格式:</span><br><span class="line">b表示单字节</span><br><span class="line">h表示双字节</span><br><span class="line">w表示四字节</span><br><span class="line">g表示八字节。</span><br></pre></td></tr></table></figure>
<hr>
<h4 id="一些GDB参考链接:"><a href="#一些GDB参考链接:" class="headerlink" title="一些GDB参考链接:"></a>一些GDB参考链接:</h4><p><a href="https://blog.csdn.net/tzshlyt/article/details/53668885" rel="external nofollow noopener noreferrer" target="_blank">https://blog.csdn.net/tzshlyt/article/details/53668885</a></p>
<p><a href="https://www.jianshu.com/p/b7896e9afeb7" rel="external nofollow noopener noreferrer" target="_blank">https://www.jianshu.com/p/b7896e9afeb7</a></p>
<p><a href="https://blog.csdn.net/u013525455/article/details/52813637" rel="external nofollow noopener noreferrer" target="_blank">https://blog.csdn.net/u013525455/article/details/52813637</a></p>
<p><a href="https://www.jianshu.com/p/e6af28e2566f" rel="external nofollow noopener noreferrer" target="_blank">https://www.jianshu.com/p/e6af28e2566f</a></p>
<p><a href="https://www.cnblogs.com/xiaoshiwang/p/10755199.html" rel="external nofollow noopener noreferrer" target="_blank">https://www.cnblogs.com/xiaoshiwang/p/10755199.html</a></p>
<p><a href="https://www.cnblogs.com/xsln/p/gdb_instructions1.html" rel="external nofollow noopener noreferrer" target="_blank">https://www.cnblogs.com/xsln/p/gdb_instructions1.html</a></p>
<p><a href="https://man.linuxde.net/gdb" rel="external nofollow noopener noreferrer" target="_blank">https://man.linuxde.net/gdb</a></p>
<p><a href="https://www.cnblogs.com/tangtangde12580/p/8045980.html" rel="external nofollow noopener noreferrer" target="_blank">https://www.cnblogs.com/tangtangde12580/p/8045980.html</a></p>
<p><a href="https://www.cnblogs.com/zhoug2020/p/7283169.html" rel="external nofollow noopener noreferrer" target="_blank">https://www.cnblogs.com/zhoug2020/p/7283169.html</a></p>
<p><a href="https://www.jianshu.com/p/adcf474f5561" rel="external nofollow noopener noreferrer" target="_blank">https://www.jianshu.com/p/adcf474f5561</a></p>
<p><a href="https://blog.csdn.net/songchuwang1868/article/details/86132281" rel="external nofollow noopener noreferrer" target="_blank">https://blog.csdn.net/songchuwang1868/article/details/86132281</a></p>
]]></content>
<categories>
<category>pwn</category>
</categories>
<tags>
<tag>gdb</tag>
</tags>
</entry>
<entry>
<title>batch-shortcuts</title>
<url>/2020/07/batch-shortcuts/</url>
<content><![CDATA[<p>教你设置 batch-shortcuts</p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/006APoFYly1geysc9gpjmj305i058749.jpg" alt="img"> <a id="more"></a></p>
<h2 id="PATH-环境变量介绍"><a href="#PATH-环境变量介绍" class="headerlink" title="PATH 环境变量介绍"></a>PATH 环境变量介绍</h2><p>搬运自 <a href="https://zhuanlan.zhihu.com/p/44003359" rel="external nofollow noopener noreferrer" target="_blank">知乎</a></p>
<h4 id="PATH-环境变量"><a href="#PATH-环境变量" class="headerlink" title="PATH 环境变量"></a>PATH 环境变量</h4><p>经常使用命令行工具的话,对<code>PATH</code>等环境变量应该会非常熟悉;但现今的日常开发,接触到这一概念的机会越来越少。</p>
<p>时不时还是会遇到小朋友问我:“什么是PATH?”</p>
<p>这里记录一下,以供参考。</p>
<h4 id="什么是环境变量?"><a href="#什么是环境变量?" class="headerlink" title="什么是环境变量?"></a>什么是环境变量?</h4><p>环境变量是操作系统提供给应用程序访问的简单 key / value字符串;windows/linux/mac都有同样的概念。</p>
<p>一般用于提供参数值给不同的应用程序。</p>
<h4 id="什么是PATH变量?"><a href="#什么是PATH变量?" class="headerlink" title="什么是PATH变量?"></a>什么是PATH变量?</h4><p>我们从命令行想要运行一个程序的时候,待运行的程序往往不是在当前目录。</p>
<p><code>PATH变量</code>就是用于保存可以搜索的目录路径,如果待运行的程序不在当前目录,操作系统便可以去依次搜索<code>PATH变量</code>变量中记录的目录,如果在这些目录中找到待运行的程序,操作系统便可以运行。</p>
<p>以<code>Go开发</code>为例,但我们使用<code>go install</code>命令编译、安装go程序后,可执行文件是会被保存在<code>$GOPATH/bin</code>路径下;那么我们可以把这个路径<strong>加入</strong>到<code>PATH变量</code>中,这样我们便可以在任意路径中运行go安装的程序。</p>
<h4 id="GOPATH"><a href="#GOPATH" class="headerlink" title="GOPATH"></a>GOPATH</h4><p><code>GOPATH</code>又是一个环境变量,用于保存go的主目录,go默认安装之后,<code>GOPATH</code>会是当前用户的主工作目录中的<strong>go</strong>子目录,即:<code>%HOME/go</code>。</p>
<h4 id="查看环境变量"><a href="#查看环境变量" class="headerlink" title="查看环境变量"></a>查看环境变量</h4><p>假设我们要查看<code>GOPATH</code>这个环境变量的值:</p>
<ul>
<li>windows command prompt: <code>echo %GOPATH%</code></li>
<li>windows powershell: <code>$env:GOPATH</code></li>
<li>linux & mac: <code>echo $GOPATH</code></li>
</ul>
<h4 id="设置PATH变量"><a href="#设置PATH变量" class="headerlink" title="设置PATH变量"></a>设置PATH变量</h4><h4 id="windows"><a href="#windows" class="headerlink" title="windows"></a>windows</h4><p>假设我们当前登陆操作系统的用户名是:<code>xiaomin</code></p>
<p>然后我们要把<code>c:\users\xiaomin\go\bin</code>路径加入到<code>PATH变量</code>中,在windows下我们可以在<a href="https://link.zhihu.com/?target=https%3A//www.wikiwand.com/en/PowerShell" rel="external nofollow noopener noreferrer" target="_blank">PowerShell</a>中执行:</p>
<figure class="highlight powershell"><table><tr><td class="code"><pre><span class="line"><span class="variable">$env:Path</span> += <span class="string">";c:\users\xiaomin\go\bin"</span></span><br></pre></td></tr></table></figure>
<p>注意,这样仅仅只是<strong>临时修改</strong>当前的<code>PATH变量</code>,当我们关闭、重开PowerShell时,就需要重新设置。</p>
<p>如果要永久的修改,需要使用<strong>管理员权限</strong>启动PowerShell,然后执行:</p>
<figure class="highlight powershell"><table><tr><td class="code"><pre><span class="line">setx /M PATH <span class="string">"%PATH%;c:\users\xiaomin\go\bin"</span></span><br></pre></td></tr></table></figure>
<h4 id="Linux-amp-Mac"><a href="#Linux-amp-Mac" class="headerlink" title="Linux & Mac"></a>Linux & Mac</h4><p>同样假设我们当前登陆用户名是:<code>xiaomin</code></p>
<p>然后我们要把<code>/home/xiaomin/go/bin</code>路径加入到<code>PATH变量</code>中</p>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="built_in">export</span> PATH=<span class="variable">$PATH</span>:/home/xiaomin/go/bin</span><br></pre></td></tr></table></figure>
<p>这同样是临时修改,重开shell之后,会被重置;要永久改变的话,一般是将上面的命令加入到我们使用的shell初始化文件中。</p>
<p>以bash为例,那么就是将上述命令加到<code>/home/xiaomin/.bash_profile</code>文件中。</p>
<hr>
<h2 id="设置步骤"><a href="#设置步骤" class="headerlink" title="设置步骤"></a>设置步骤</h2><h3 id="1-pathext"><a href="#1-pathext" class="headerlink" title="1. pathext"></a>1. pathext</h3><p>Windows上的另一个变量。这里存储可直接运行的文件类型,一般需要添加 .lnk 进去</p>
<h3 id="2-建立一个目录"><a href="#2-建立一个目录" class="headerlink" title="2. 建立一个目录"></a>2. 建立一个目录</h3><p>建立: <code>D:\bin\batch-shortcuts</code></p>
<p><code>D:\bin\</code> 路径又简洁又舒服</p>
<h3 id="3-把目录写入path"><a href="#3-把目录写入path" class="headerlink" title="3. 把目录写入path"></a>3. 把目录写入path</h3><p>参照百度经验:<a href="https://jingyan.baidu.com/article/8ebacdf02d3c2949f65cd5d0.html" rel="external nofollow noopener noreferrer" target="_blank">windows10设置环境变量PATH</a></p>
<p>注意,设置完后,需要重启资源管理器和命令行来应用更改。</p>
<p>可以在任务管理器,选中资源管理器,选择重新启动</p>
<p>可以注销,然后登陆</p>
<p>可以重启</p>
<h3 id="4-然后就可以用了"><a href="#4-然后就可以用了" class="headerlink" title="4. 然后就可以用了"></a>4. 然后就可以用了</h3><p>怎么用?</p>
<p>在上面那个文件夹内的所有文件,都是命令行可以访问到的。</p>
<p>一般可以创建:.bat .lnk ,.exe也阔以哇</p>
<p>举个栗子:</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">文件名:batch-shortcuts.bat</span><br><span class="line">explorer "D:\bin\batch-shortcuts"</span><br></pre></td></tr></table></figure>
<p>模仿Linux <code>ctrl d</code> 一键关闭风格,创建的 d.bat</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">文件名:d.bat</span><br><span class="line">exit</span><br></pre></td></tr></table></figure>
<p>比如md5</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">文件名:md5.lnk</span><br><span class="line">指向:"D:\Program Fies (Green)\WinMD5校验器.exe"</span><br></pre></td></tr></table></figure>
<p>还有一些调用程序的,比如安装Ubuntu后,写一个脚本来调用Ubuntu执行命令</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">文件名:ubuntu.bat</span><br><span class="line">@echo off</span><br><span class="line"></span><br><span class="line">echo.</span><br><span class="line">echo Usage:</span><br><span class="line">echo use "ubuntu run $code$" to run shell command</span><br><span class="line"></span><br><span class="line">echo.</span><br><span class="line">"C:/Program Files/WindowsApps/CanonicalGroupLimited.Ubuntu16.04onWindows_2020.1604.14.0_x64__79rhkp1fndgsc/ubuntu1604.exe" %*</span><br></pre></td></tr></table></figure>
<p>%* 是传递所有命令行参数,这个了解一下会有很大的帮助</p>
<p>如果不用这个,就得用 <code>%1 %2 %3 %4 %5 %6 %7 %8 %9</code> ,而超过9的就不能再处理了</p>
<p>还有其他玩法,自己探索吧!</p>
<hr>
<h2 id="关于-D-bin-文件夹"><a href="#关于-D-bin-文件夹" class="headerlink" title="关于 D:\bin 文件夹"></a>关于 D:\bin 文件夹</h2><p>我一般把命令行调用的,编程语言类的,放在这里面,</p>
<p>(还有一些绿色IDE为代表的,可以一套带走的,我也放里面)</p>
<p>(还有DOS系统盘为代表的,系统级的底层的,我也放里面)</p>
<p>一方面是,这个路径他没有空格,不容易导致命令行调用出错。</p>
<p>第二是,他真的又简洁又舒服哇</p>
<p>列出一下目前为止我的 <code>D:\bin</code> 的内容</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">D:\bin>dir</span><br><span class="line"> 驱动器 D 中的卷没有标签。</span><br><span class="line"> 卷的序列号是 9E68-267B</span><br><span class="line"></span><br><span class="line"> D:\bin 的目录</span><br><span class="line"></span><br><span class="line">2020/05/25 16:24 <DIR> .</span><br><span class="line">2020/05/25 16:24 <DIR> ..</span><br><span class="line">2020/05/25 16:25 <DIR> .gradle</span><br><span class="line">2020/03/17 20:23 <DIR> Anaconda3</span><br><span class="line">2020/03/23 01:30 <DIR> Android_SDK</span><br><span class="line">2020/06/05 10:42 <DIR> batch-shortcuts</span><br><span class="line">2020/07/16 17:22 <DIR> DOS-16bit</span><br><span class="line">2020/02/15 14:21 <DIR> eclipse-cpp</span><br><span class="line">2020/02/15 14:18 <DIR> eclipse-java</span><br><span class="line">2020/05/21 17:14 <DIR> ESP_8266</span><br><span class="line">2019/07/01 00:43 <DIR> HBuilder.9.0.1.windows</span><br><span class="line">2020/03/31 23:31 <DIR> HBuilderX.2.6.8.20200330.full</span><br><span class="line">2020/04/21 01:06 <DIR> Java</span><br><span class="line">2020/07/17 11:56 <DIR> nodejs</span><br><span class="line">2019/11/28 13:53 <DIR> Perl</span><br><span class="line">2020/03/18 23:53 <DIR> PortableApps</span><br><span class="line">2020/02/19 23:47 <DIR> Python</span><br><span class="line">2020/03/12 21:23 <DIR> Qt</span><br><span class="line">2020/03/10 23:30 <DIR> Ruby27-x64</span><br><span class="line">2020/03/23 21:16 <DIR> texlive</span><br><span class="line"> 0 个文件 0 字节</span><br><span class="line"> 20 个目录 57,676,476,416 可用字节</span><br><span class="line"></span><br><span class="line">D:\bin></span><br></pre></td></tr></table></figure>
]]></content>
<categories>
<category>none</category>
</categories>
<tags>
<tag>none</tag>
</tags>
</entry>
<entry>
<title>亿分钟成为时间管理大师</title>
<url>/2020/07/time-management/</url>
<content><![CDATA[<p>使用一个叫 manicTime 的软件<a id="more"></a></p>
<p>(好像最近越来越喜欢挖坑不填了哇)</p>
<p>(想了解的小伙伴请发邮件催更,联系方式在about页面有)</p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200716102927688.png" alt="image-20200716102927688"></p>
]]></content>
<categories>
<category>none</category>
</categories>
<tags>
<tag>none</tag>
</tags>
</entry>
<entry>
<title>QQ空间辅助点赞</title>
<url>/2020/07/qzone-faster-like/</url>
<content><![CDATA[<p>QQ空间手滑点赞太麻烦,用键盘吧。</p>
<p>嗯,我文思枯竭了,编不出什么内容充实的文章,就写下过程贴代码吧<a id="more"></a></p>
<h2 id="浏览器检查元素"><a href="#浏览器检查元素" class="headerlink" title="浏览器检查元素"></a>浏览器检查元素</h2><p>通过完成的审查元素发现:</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">所有的列表,元素的id: feed_friend_list</span><br><span class="line">一个说说的,元素的class: f-single</span><br><span class="line">点赞按钮,元素的class: qz_like_btn_v3</span><br><span class="line">评论按钮,元素的class: qz_btn_reply</span><br></pre></td></tr></table></figure>
<h2 id="写脚本"><a href="#写脚本" class="headerlink" title="写脚本"></a>写脚本</h2><p>之前考虑用jQuery实现,用油猴脚本,但是脚本对于加载jQuery有一点问题</p>
<p>因为QQ空间用了 $ 这个名字,但是不是jQuery,所以考虑用纯 js 实现。</p>
<p>后来啊。$ 不是可以用jQuery写么。就改成了jQuery实现</p>
<p>(jQuery真香)</p>
<h2 id="用纯-js-添加点赞按钮的css"><a href="#用纯-js-添加点赞按钮的css" class="headerlink" title="用纯 js 添加点赞按钮的css"></a>用纯 js 添加点赞按钮的css</h2><figure class="highlight js"><table><tr><td class="code"><pre><span class="line"><span class="keyword">var</span> style = <span class="built_in">document</span>.createElement(<span class="string">'style'</span>);</span><br><span class="line">style.innerHTML=<span class="string">"a.item-on {background-color: red;}"</span></span><br><span class="line"><span class="keyword">var</span> head = <span class="built_in">document</span>.head || <span class="built_in">document</span>.getElementsByTagName(<span class="string">'head'</span>)[<span class="number">0</span>];</span><br><span class="line">head.appendChild(style);</span><br></pre></td></tr></table></figure>
<h2 id="完整脚本-v0-1"><a href="#完整脚本-v0-1" class="headerlink" title="完整脚本 v0.1"></a>完整脚本 v0.1</h2><p>(还没想好怎么解释这个脚本。直接贴代码)</p>
<figure class="highlight js"><table><tr><td class="code"><pre><span class="line"><span class="comment">// ==UserScript==</span></span><br><span class="line"><span class="comment">// @name QQ空间快速操作</span></span><br><span class="line"><span class="comment">// @namespace https://blog.tcpsoft.app/</span></span><br><span class="line"><span class="comment">// @version 0.1</span></span><br><span class="line"><span class="comment">// @description try to take over the world!</span></span><br><span class="line"><span class="comment">// @author tcpsoft</span></span><br><span class="line"><span class="comment">// @match https://user.qzone.qq.com/*</span></span><br><span class="line"><span class="comment">// @grant none</span></span><br><span class="line"><span class="comment">// ==/UserScript==</span></span><br><span class="line">(<span class="function"><span class="keyword">function</span> (<span class="params"></span>) </span>{</span><br><span class="line"> <span class="comment">// Your code here...</span></span><br><span class="line"><span class="comment">/* https://greasyfork.org/zh-CN/scripts/373979-qq%E7%A9%BA%E9%97%B4%E5%8A%A8%E6%80%81%E8%87%AA%E5%8A%A8%E7%82%B9%E8%B5%9E/code */</span></span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">up</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"上"</span>);</span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">left</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"左"</span>);</span><br><span class="line"> <span class="keyword">var</span> first=jQuery(<span class="string">".f-single"</span>).eq(<span class="number">0</span>);</span><br><span class="line"> first.find(<span class="string">".qz_btn_reply"</span>).click();</span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">down</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"下"</span>);</span><br><span class="line"> <span class="keyword">var</span> first=jQuery(<span class="string">".f-single"</span>).eq(<span class="number">0</span>);</span><br><span class="line"> <span class="built_in">console</span>.log(first);</span><br><span class="line"> first.slideUp(<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>{<span class="keyword">this</span>.remove()});</span><br><span class="line"> <span class="comment">//if(jQuery(".f-single").length==0){</span></span><br><span class="line"> <span class="comment">// window.scrollTo(window.scrollX, document.documentElement.scrollHeight);</span></span><br><span class="line"> <span class="comment">//}</span></span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">right</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"右 点赞"</span>);</span><br><span class="line"> <span class="keyword">var</span> first=jQuery(<span class="string">".f-single"</span>).eq(<span class="number">0</span>);</span><br><span class="line"> <span class="built_in">console</span>.log(first);</span><br><span class="line"> <span class="keyword">var</span> zan=first.find(<span class="string">"a.qz_like_btn_v3[data-clicklog='like']"</span>);</span><br><span class="line"> <span class="built_in">console</span>.log(zan.length);</span><br><span class="line"> <span class="keyword">if</span>(zan.length!=<span class="number">0</span>){</span><br><span class="line"> zan.eq(<span class="number">0</span>).click();</span><br><span class="line"> }</span><br><span class="line"> first.slideUp(<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>{<span class="keyword">this</span>.remove()});</span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">beg</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="built_in">console</span>.clear();</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"【【【【【】】】】】"</span>);</span><br><span class="line"> <span class="comment">/*插入输入框*/</span></span><br><span class="line"> <span class="keyword">var</span> $rect = jQuery(<span class="string">'<div>\</span></span><br><span class="line"><span class="string"> <style>\</span></span><br><span class="line"><span class="string"> #rect {\</span></span><br><span class="line"><span class="string"> height: 100px; width: 160px; border:red 5px solid; position:fixed;\</span></span><br><span class="line"><span class="string"> z-index: 999; top:40px; margin-left:40%; margin-right:40%;\</span></span><br><span class="line"><span class="string"> }\</span></span><br><span class="line"><span class="string"> #rect:focus{ border:5px green solid; }\</span></span><br><span class="line"><span class="string"> </style>\</span></span><br><span class="line"><span class="string"> <textarea type="input" id="rect" value="">输入区操作:\n触摸板双指上下滑刷新动态\n下 下一条\n左 评论\n右 点赞</textarea></div>'</span>);</span><br><span class="line"> jQuery(<span class="string">"body"</span>).append($rect);</span><br><span class="line"> <span class="comment">/*红色点赞*/</span></span><br><span class="line"> jQuery(<span class="string">"head"</span>).append(<span class="string">"<style id=\"addedCSS\" type=\"text/css\">a.item-on {background-color: red;}</style>"</span>);</span><br><span class="line"> <span class="comment">/*红色提示和文字</span></span><br><span class="line"><span class="comment"> jQuery("div.user-vip-info").eq(0).html("<span style='color:red;font-size:50px'>OOKK.</span>");</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"> <span class="comment">/*监听document的回车操作 37左 38上 39右 40下*/</span></span><br><span class="line"> jQuery(<span class="string">"#rect"</span>).keydown(<span class="function"><span class="keyword">function</span>(<span class="params">e</span>)</span>{</span><br><span class="line"> <span class="comment">//获取键盘输入的keyCode</span></span><br><span class="line"> <span class="comment">//console.log(e)</span></span><br><span class="line"> <span class="keyword">var</span> keycode = (<span class="built_in">Number</span>)(e.keyCode);</span><br><span class="line"> <span class="built_in">console</span>.log(keycode);</span><br><span class="line"> <span class="keyword">if</span>(keycode == <span class="number">37</span>){<span class="comment">//左</span></span><br><span class="line"> left();</span><br><span class="line"> }<span class="keyword">else</span> <span class="keyword">if</span>(keycode == <span class="number">38</span>){<span class="comment">//上</span></span><br><span class="line"> up();</span><br><span class="line"> }<span class="keyword">else</span> <span class="keyword">if</span>(keycode == <span class="number">39</span>){<span class="comment">//右</span></span><br><span class="line"> right();</span><br><span class="line"> }<span class="keyword">else</span> <span class="keyword">if</span>(keycode == <span class="number">40</span>){<span class="comment">//下</span></span><br><span class="line"> down();</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line"> });</span><br><span class="line"> }</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"----等两秒----"</span>);</span><br><span class="line"> setTimeout(beg,<span class="number">2000</span>);</span><br><span class="line">})();</span><br></pre></td></tr></table></figure>
<h2 id="2020-08-01更新-v0-2"><a href="#2020-08-01更新-v0-2" class="headerlink" title="2020-08-01更新 v0.2"></a>2020-08-01更新 v0.2</h2><p>增加了修复网络的功能。妈妈再也不用担心更新不出来啦</p>
<figure class="highlight js"><table><tr><td class="code"><pre><span class="line"><span class="comment">// ==UserScript==</span></span><br><span class="line"><span class="comment">// @name QQ空间快速操作</span></span><br><span class="line"><span class="comment">// @namespace https://blog.tcpsoft.app/</span></span><br><span class="line"><span class="comment">// @version 0.2</span></span><br><span class="line"><span class="comment">// @description QQ空间用键盘操作,岂不美哉</span></span><br><span class="line"><span class="comment">// @author tcpsoft</span></span><br><span class="line"><span class="comment">// @match https://user.qzone.qq.com/*</span></span><br><span class="line"><span class="comment">// @grant none</span></span><br><span class="line"><span class="comment">// ==/UserScript==</span></span><br><span class="line"></span><br><span class="line">(<span class="function"><span class="keyword">function</span> (<span class="params"></span>) </span>{</span><br><span class="line"><span class="meta"> 'use strict'</span>;</span><br><span class="line"> <span class="comment">// Your code here...</span></span><br><span class="line"><span class="comment">/* https://greasyfork.org/zh-CN/scripts/373979-qq%E7%A9%BA%E9%97%B4%E5%8A%A8%E6%80%81%E8%87%AA%E5%8A%A8%E7%82%B9%E8%B5%9E/code */</span></span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">up</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"上"</span>);</span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">left</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"左"</span>);</span><br><span class="line"> <span class="keyword">var</span> first=jQuery(<span class="string">".f-single"</span>).eq(<span class="number">0</span>);</span><br><span class="line"> first.find(<span class="string">".qz_btn_reply"</span>).click();</span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">down</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"下"</span>);</span><br><span class="line"> <span class="keyword">var</span> first=jQuery(<span class="string">".f-single"</span>).eq(<span class="number">0</span>);</span><br><span class="line"> <span class="built_in">console</span>.log(first);</span><br><span class="line"> first.slideUp(<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>{<span class="keyword">this</span>.remove()});</span><br><span class="line"> <span class="comment">//if(jQuery(".f-single").length==0){</span></span><br><span class="line"> <span class="comment">// window.scrollTo(window.scrollX, document.documentElement.scrollHeight);</span></span><br><span class="line"> <span class="comment">//}</span></span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">right</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"右 点赞"</span>);</span><br><span class="line"> <span class="keyword">var</span> first=jQuery(<span class="string">".f-single"</span>).eq(<span class="number">0</span>);</span><br><span class="line"> <span class="built_in">console</span>.log(first);</span><br><span class="line"> <span class="keyword">var</span> zan=first.find(<span class="string">"a.qz_like_btn_v3[data-clicklog='like']"</span>);</span><br><span class="line"> <span class="built_in">console</span>.log(zan.length);</span><br><span class="line"> <span class="keyword">if</span>(zan.length!=<span class="number">0</span>){</span><br><span class="line"> zan.eq(<span class="number">0</span>).click();</span><br><span class="line"> }</span><br><span class="line"> first.slideUp(<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>{<span class="keyword">this</span>.remove()});</span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">beg</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="built_in">console</span>.clear();</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"【【【【【】】】】】"</span>);</span><br><span class="line"> <span class="comment">/*插入输入框*/</span></span><br><span class="line"> <span class="keyword">var</span> $rect = jQuery(<span class="string">'<div id="rect_div">\</span></span><br><span class="line"><span class="string"> <style>\</span></span><br><span class="line"><span class="string"> #rect_div{\</span></span><br><span class="line"><span class="string"> position:fixed; z-index: 999; top:40px; margin-left:40%; margin-right:40%; width: 50%;\</span></span><br><span class="line"><span class="string"> }\</span></span><br><span class="line"><span class="string"> #rect {\</span></span><br><span class="line"><span class="string"> height: 100px; width: 200px; border:red 5px solid; \</span></span><br><span class="line"><span class="string"> }\</span></span><br><span class="line"><span class="string"> #rect:focus{ border:5px green solid; }\</span></span><br><span class="line"><span class="string"> #qzone_fix_button{\</span></span><br><span class="line"><span class="string"> float:left; height: 50px; width: 100px; border:skyblue 2px solid; \</span></span><br><span class="line"><span class="string"> }\</span></span><br><span class="line"><span class="string"> </style>\</span></span><br><span class="line"><span class="string"> <textarea type="input" id="rect" value="">输入区操作:\n触摸板双指上下滑刷新动态\n下 下一条\n左 评论\n右 点赞</textarea>\</span></span><br><span class="line"><span class="string"> <button id="qzone_fix_button" onclick="QZFL.cookie.set(\'page_engine_off\',1,\'qzone.qq.com\',\'/\',12);location = location.href;return false;">网络问题<br>立即修复</button></div>'</span>);</span><br><span class="line"> jQuery(<span class="string">"body"</span>).append($rect);</span><br><span class="line"> <span class="comment">/*红色点赞*/</span></span><br><span class="line"> jQuery(<span class="string">"head"</span>).append(<span class="string">"<style id=\"addedCSS\" type=\"text/css\">a.item-on {background-color: red;}</style>"</span>);</span><br><span class="line"> <span class="comment">/*红色提示和文字</span></span><br><span class="line"><span class="comment"> jQuery("div.user-vip-info").eq(0).html("<span style='color:red;font-size:50px'>OOKK.</span>");</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"> <span class="comment">/*监听document的回车操作 37左 38上 39右 40下*/</span></span><br><span class="line"> jQuery(<span class="string">"#rect"</span>).keydown(<span class="function"><span class="keyword">function</span>(<span class="params">e</span>)</span>{</span><br><span class="line"> <span class="comment">//获取键盘输入的keyCode</span></span><br><span class="line"> <span class="comment">//console.log(e)</span></span><br><span class="line"> <span class="keyword">var</span> keycode = (<span class="built_in">Number</span>)(e.keyCode);</span><br><span class="line"> <span class="built_in">console</span>.log(keycode);</span><br><span class="line"> <span class="keyword">if</span>(keycode == <span class="number">37</span>){<span class="comment">//左</span></span><br><span class="line"> left();</span><br><span class="line"> }<span class="keyword">else</span> <span class="keyword">if</span>(keycode == <span class="number">38</span>){<span class="comment">//上</span></span><br><span class="line"> up();</span><br><span class="line"> }<span class="keyword">else</span> <span class="keyword">if</span>(keycode == <span class="number">39</span>){<span class="comment">//右</span></span><br><span class="line"> right();</span><br><span class="line"> }<span class="keyword">else</span> <span class="keyword">if</span>(keycode == <span class="number">40</span>){<span class="comment">//下</span></span><br><span class="line"> down();</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line"> });</span><br><span class="line"> }</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"----等两秒----"</span>);</span><br><span class="line"> setTimeout(beg,<span class="number">2000</span>);</span><br><span class="line">})();</span><br></pre></td></tr></table></figure>
<h2 id="2020-08-16更新-v0-3"><a href="#2020-08-16更新-v0-3" class="headerlink" title="2020-08-16更新 v0.3"></a>2020-08-16更新 v0.3</h2><p>0.3版本,增加了简单的去除顶部的已点赞用户</p>
<p>代码:</p>
<figure class="highlight js"><table><tr><td class="code"><pre><span class="line"><span class="comment">// ==UserScript==</span></span><br><span class="line"><span class="comment">// @name QQ空间快速操作</span></span><br><span class="line"><span class="comment">// @namespace https://blog.tcpsoft.app/</span></span><br><span class="line"><span class="comment">// @version 0.3</span></span><br><span class="line"><span class="comment">// @description QQ空间用键盘操作,岂不美哉</span></span><br><span class="line"><span class="comment">// @author tcpsoft</span></span><br><span class="line"><span class="comment">// @match https://user.qzone.qq.com/*</span></span><br><span class="line"><span class="comment">// @grant none</span></span><br><span class="line"><span class="comment">// ==/UserScript==</span></span><br><span class="line"></span><br><span class="line">(<span class="function"><span class="keyword">function</span> (<span class="params"></span>) </span>{</span><br><span class="line"><span class="meta"> 'use strict'</span>;</span><br><span class="line"> <span class="comment">// Your code here...</span></span><br><span class="line"><span class="comment">/* https://greasyfork.org/zh-CN/scripts/373979-qq%E7%A9%BA%E9%97%B4%E5%8A%A8%E6%80%81%E8%87%AA%E5%8A%A8%E7%82%B9%E8%B5%9E/code */</span></span><br><span class="line"> <span class="keyword">var</span> list=[<span class="string">"Cortana"</span>,<span class="string">"Cortana"</span>];</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">getFirstTime</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="keyword">var</span> first=jQuery(<span class="string">".f-single"</span>).eq(<span class="number">0</span>);</span><br><span class="line"> <span class="keyword">var</span> timetime = first.find(<span class="string">".info-detail .ui-mr8.state"</span>).html();</span><br><span class="line"> <span class="built_in">console</span>.log(timetime);</span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">faded</span>(<span class="params">first</span>)</span>{</span><br><span class="line"> getFirstTime();</span><br><span class="line"> first.slideUp(<span class="number">100</span>,<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>{<span class="keyword">this</span>.remove()});</span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">clearLiked</span>(<span class="params"></span>)</span>{</span><br><span class="line"> jQuery(<span class="string">"#finishedClearLiked"</span>).html(<span class="string">"pending."</span>);</span><br><span class="line"> <span class="keyword">var</span> first=jQuery(<span class="string">".f-single"</span>).eq(<span class="number">0</span>);</span><br><span class="line"> <span class="built_in">console</span>.log(first);</span><br><span class="line"> <span class="keyword">if</span>(first.length==<span class="number">0</span>){</span><br><span class="line"> jQuery(<span class="string">"#finishedClearLiked"</span>).html(<span class="string">"finished."</span>);</span><br><span class="line"> <span class="keyword">return</span>;</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">var</span> nickName = first.find(<span class="string">".f-nick a"</span>).html();</span><br><span class="line"> <span class="built_in">console</span>.log(nickName);</span><br><span class="line"> <span class="keyword">var</span> matchList = <span class="literal">false</span>;</span><br><span class="line"> <span class="keyword">for</span>(i=<span class="number">0</span>;i<list.length;i++){</span><br><span class="line"> <span class="keyword">if</span>(nickName.indexOf(list[i])><span class="number">-1</span>){</span><br><span class="line"> matchList=<span class="literal">true</span>;</span><br><span class="line"> <span class="keyword">break</span>;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">if</span>(matchList==<span class="literal">true</span>){</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"进入{pass}分支"</span>);</span><br><span class="line"> <span class="keyword">var</span> second=jQuery(<span class="string">".f-single"</span>).eq(<span class="number">1</span>);</span><br><span class="line"> <span class="keyword">var</span> nextZan=second.find(<span class="string">"a.qz_like_btn_v3[data-clicklog='cancellike']"</span>);<span class="comment">//取消赞</span></span><br><span class="line"> <span class="built_in">console</span>.log(nextZan.length);</span><br><span class="line"> <span class="keyword">if</span>(nextZan.length!=<span class="number">0</span>){ <span class="comment">//下面有取消赞</span></span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"下面有取消赞,所以pass"</span>);</span><br><span class="line"> first.remove();</span><br><span class="line"> setTimeout(clearLiked,<span class="number">100</span>);</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">else</span>{ <span class="comment">//下面没有取消赞,停止</span></span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"下面无取消赞,所以停止"</span>);</span><br><span class="line"> <span class="keyword">var</span> nickName = second.find(<span class="string">".f-nick a"</span>).html();</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"下一个人是:"</span>,nickName);</span><br><span class="line"> jQuery(<span class="string">"#finishedClearLiked"</span>).html(<span class="string">"finished."</span>);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">else</span>{</span><br><span class="line"> <span class="keyword">var</span> zan=first.find(<span class="string">"a.qz_like_btn_v3[data-clicklog='like']"</span>);</span><br><span class="line"> <span class="built_in">console</span>.log(zan.length);</span><br><span class="line"> <span class="keyword">if</span>(zan.length!=<span class="number">0</span>){</span><br><span class="line"> jQuery(<span class="string">"#finishedClearLiked"</span>).html(<span class="string">"finished."</span>);</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">else</span>{</span><br><span class="line"> first.remove();</span><br><span class="line"> setTimeout(clearLiked,<span class="number">100</span>);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">up</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"上"</span>);</span><br><span class="line"> jQuery(<span class="string">"#finishedClearLiked"</span>).html(<span class="string">"pending."</span>);</span><br><span class="line"> clearLiked();</span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">left</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"左"</span>);</span><br><span class="line"> jQuery(<span class="string">"#finishedClearLiked"</span>).html(<span class="string">"free."</span>);</span><br><span class="line"> <span class="keyword">var</span> first=jQuery(<span class="string">".f-single"</span>).eq(<span class="number">0</span>);</span><br><span class="line"> first.find(<span class="string">".qz_btn_reply"</span>).click();</span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">down</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"下"</span>);</span><br><span class="line"> jQuery(<span class="string">"#finishedClearLiked"</span>).html(<span class="string">"free."</span>);</span><br><span class="line"> <span class="keyword">var</span> first=jQuery(<span class="string">".f-single"</span>).eq(<span class="number">0</span>);</span><br><span class="line"> <span class="built_in">console</span>.log(first);</span><br><span class="line"> faded(first);</span><br><span class="line"> <span class="comment">//if(jQuery(".f-single").length==0){</span></span><br><span class="line"> <span class="comment">// window.scrollTo(window.scrollX, document.documentElement.scrollHeight);</span></span><br><span class="line"> <span class="comment">//}</span></span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">right</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"右 点赞"</span>);</span><br><span class="line"> jQuery(<span class="string">"#finishedClearLiked"</span>).html(<span class="string">"free."</span>);</span><br><span class="line"> <span class="keyword">var</span> first=jQuery(<span class="string">".f-single"</span>).eq(<span class="number">0</span>);</span><br><span class="line"> <span class="built_in">console</span>.log(first);</span><br><span class="line"> <span class="keyword">var</span> zan=first.find(<span class="string">"a.qz_like_btn_v3[data-clicklog='like']"</span>);</span><br><span class="line"> <span class="built_in">console</span>.log(zan.length);</span><br><span class="line"> <span class="keyword">if</span>(zan.length!=<span class="number">0</span>){</span><br><span class="line"> zan.eq(<span class="number">0</span>).click();</span><br><span class="line"> }</span><br><span class="line"> faded(first);</span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">beg</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="built_in">console</span>.clear();</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"【【【【【】】】】】"</span>);</span><br><span class="line"> <span class="comment">/*插入输入框*/</span></span><br><span class="line"> <span class="keyword">var</span> $rect = jQuery(<span class="string">'<div id="rect_div">\</span></span><br><span class="line"><span class="string"> <style>\</span></span><br><span class="line"><span class="string"> #rect_div{\</span></span><br><span class="line"><span class="string"> position:fixed; z-index: 999; top:40px; margin-left:40%; margin-right:40%; width: 50%;\</span></span><br><span class="line"><span class="string"> }\</span></span><br><span class="line"><span class="string"> #rect {\</span></span><br><span class="line"><span class="string"> height: 120px; width: 200px; border:red 5px solid; \</span></span><br><span class="line"><span class="string"> }\</span></span><br><span class="line"><span class="string"> #rect:focus{ border:5px green solid; }\</span></span><br><span class="line"><span class="string"> #qzone_fix_button{\</span></span><br><span class="line"><span class="string"> float:left; height: 50px; width: 100px; border:skyblue 2px solid; \</span></span><br><span class="line"><span class="string"> }\</span></span><br><span class="line"><span class="string"> #clearLikedDiv{\</span></span><br><span class="line"><span class="string"> vertical-align: top;border: 2px solid yellow;width: 150px;height: 80px;\</span></span><br><span class="line"><span class="string"> display: inline-flex;flex-direction: column;background-color: wheat;\</span></span><br><span class="line"><span class="string"> }\</span></span><br><span class="line"><span class="string"> #finishedClearLiked{\</span></span><br><span class="line"><span class="string"> border: skyblue 2px inset; font-size: 1.5em;\</span></span><br><span class="line"><span class="string"> }\</span></span><br><span class="line"><span class="string"> #startClearLiked{\</span></span><br><span class="line"><span class="string"> width: 100%;flex-grow: 1;\</span></span><br><span class="line"><span class="string"> }\</span></span><br><span class="line"><span class="string"> </style>\</span></span><br><span class="line"><span class="string"> <textarea type="input" id="rect" value="">输入区操作:\n触摸板双指上下滑刷新动态\n上 清理顶部已点赞\n下 下一条\n左 评论\n右 点赞</textarea>\</span></span><br><span class="line"><span class="string"> <button id="qzone_fix_button" onclick="QZFL.cookie.set(\'page_engine_off\',1,\'qzone.qq.com\',\'/\',12);location = location.href;return false;">网络问题<br>立即修复</button>\</span></span><br><span class="line"><span class="string"> <div id="clearLikedDiv">\</span></span><br><span class="line"><span class="string"> <span id="finishedClearLiked">free.</span>\</span></span><br><span class="line"><span class="string"> <button id="startClearLiked">清理已点赞</button>\</span></span><br><span class="line"><span class="string"> </div>\</span></span><br><span class="line"><span class="string"> </div>'</span>);</span><br><span class="line"> jQuery(<span class="string">"body"</span>).append($rect);</span><br><span class="line"> jQuery(<span class="string">"#startClearLiked"</span>).click(clearLiked);</span><br><span class="line"> <span class="comment">/*红色点赞*/</span></span><br><span class="line"> jQuery(<span class="string">"head"</span>).append(<span class="string">"<style id=\"addedCSS\" type=\"text/css\">a.item-on {background-color: red;}</style>"</span>);</span><br><span class="line"> <span class="comment">/*红色提示和文字</span></span><br><span class="line"><span class="comment"> jQuery("div.user-vip-info").eq(0).html("<span style='color:red;font-size:50px'>OOKK.</span>");</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"> <span class="comment">/*监听document的回车操作 37左 38上 39右 40下*/</span></span><br><span class="line"> jQuery(<span class="string">"#rect"</span>).keydown(<span class="function"><span class="keyword">function</span>(<span class="params">e</span>)</span>{</span><br><span class="line"> <span class="comment">//获取键盘输入的keyCode</span></span><br><span class="line"> <span class="comment">//console.log(e)</span></span><br><span class="line"> <span class="keyword">var</span> keycode = (<span class="built_in">Number</span>)(e.keyCode);</span><br><span class="line"> <span class="built_in">console</span>.log(keycode);</span><br><span class="line"> <span class="keyword">if</span>(keycode == <span class="number">37</span>){<span class="comment">//左</span></span><br><span class="line"> left();</span><br><span class="line"> }<span class="keyword">else</span> <span class="keyword">if</span>(keycode == <span class="number">38</span>){<span class="comment">//上</span></span><br><span class="line"> up();</span><br><span class="line"> }<span class="keyword">else</span> <span class="keyword">if</span>(keycode == <span class="number">39</span>){<span class="comment">//右</span></span><br><span class="line"> right();</span><br><span class="line"> }<span class="keyword">else</span> <span class="keyword">if</span>(keycode == <span class="number">40</span>){<span class="comment">//下</span></span><br><span class="line"> down();</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line"> });</span><br><span class="line"> }</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"----等两秒----"</span>);</span><br><span class="line"> setTimeout(beg,<span class="number">2000</span>);</span><br><span class="line">})();</span><br></pre></td></tr></table></figure>
<h2 id="2020-08-16更新-v0-4"><a href="#2020-08-16更新-v0-4" class="headerlink" title="2020-08-16更新 v0.4"></a>2020-08-16更新 v0.4</h2><p>增加显示最顶部五条动态内容,修复网络和状态条和删除顶部已点赞都放在最左边了</p>
<p>代码:</p>
<figure class="highlight js"><table><tr><td class="code"><pre><span class="line"><span class="comment">// ==UserScript==</span></span><br><span class="line"><span class="comment">// @name QQ空间快速操作</span></span><br><span class="line"><span class="comment">// @namespace https://blog.tcpsoft.app</span></span><br><span class="line"><span class="comment">// @version 0.4</span></span><br><span class="line"><span class="comment">// @description QQ空间用键盘操作,岂不美哉</span></span><br><span class="line"><span class="comment">// @author tcpsoft</span></span><br><span class="line"><span class="comment">// @match https://user.qzone.qq.com/*</span></span><br><span class="line"><span class="comment">// @grant none</span></span><br><span class="line"><span class="comment">// ==/UserScript==</span></span><br><span class="line"></span><br><span class="line">(<span class="function"><span class="keyword">function</span> (<span class="params"></span>) </span>{</span><br><span class="line"><span class="meta"> 'use strict'</span>;</span><br><span class="line"> <span class="comment">// Your code here...</span></span><br><span class="line"><span class="comment">/* https://greasyfork.org/zh-CN/scripts/373979-qq%E7%A9%BA%E9%97%B4%E5%8A%A8%E6%80%81%E8%87%AA%E5%8A%A8%E7%82%B9%E8%B5%9E/code */</span></span><br><span class="line"> <span class="keyword">var</span> list=[<span class="string">"Cortana"</span>,<span class="string">"今日百色"</span>,<span class="string">"易锦教育"</span>,<span class="string">"易锦大学"</span>,<span class="string">"CUIT网络空间安全学院"</span>,<span class="string">"丁凌娜"</span>,<span class="string">"黄恋茹"</span>,<span class="string">"Victor"</span>,<span class="string">"墙"</span>];</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">getFirstTime</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="keyword">var</span> first=jQuery(<span class="string">".f-single"</span>).eq(<span class="number">0</span>);</span><br><span class="line"> <span class="keyword">var</span> timetime = first.find(<span class="string">".info-detail .ui-mr8.state"</span>).html();</span><br><span class="line"> <span class="built_in">console</span>.log(timetime);</span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">matchList</span>(<span class="params">nickName</span>)</span>{</span><br><span class="line"> <span class="keyword">var</span> match = <span class="literal">false</span>;</span><br><span class="line"> <span class="keyword">for</span>(i=<span class="number">0</span>;i<list.length;i++){</span><br><span class="line"> <span class="keyword">if</span>(nickName.indexOf(list[i])><span class="number">-1</span>){</span><br><span class="line"> match=<span class="literal">true</span>;</span><br><span class="line"> <span class="keyword">break</span>;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> match;</span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">faded</span>(<span class="params">first</span>)</span>{</span><br><span class="line"> getFirstTime();</span><br><span class="line"> first.slideUp(<span class="number">100</span>,<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>{<span class="keyword">this</span>.remove()});</span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">clearLiked</span>(<span class="params"></span>)</span>{</span><br><span class="line"> jQuery(<span class="string">"#finishedClearLiked"</span>).html(<span class="string">"pending."</span>);</span><br><span class="line"> <span class="keyword">var</span> first=jQuery(<span class="string">".f-single"</span>).eq(<span class="number">0</span>);</span><br><span class="line"> <span class="built_in">console</span>.log(first);</span><br><span class="line"> <span class="keyword">if</span>(first.length==<span class="number">0</span>){ <span class="comment">//好友动态已经空了</span></span><br><span class="line"> jQuery(<span class="string">"#finishedClearLiked"</span>).html(<span class="string">"finished."</span>);</span><br><span class="line"> <span class="keyword">return</span>;</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">var</span> nickName1 = first.find(<span class="string">".f-nick a"</span>).html();</span><br><span class="line"> <span class="built_in">console</span>.log(nickName1);</span><br><span class="line"> <span class="keyword">var</span> match1 = matchList(nickName1);</span><br><span class="line"> <span class="keyword">if</span>(match1==<span class="literal">true</span>){ <span class="comment">// 第一个人是列表</span></span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"进入{pass}分支"</span>);</span><br><span class="line"> <span class="keyword">var</span> second=jQuery(<span class="string">".f-single"</span>).eq(<span class="number">1</span>);</span><br><span class="line"> <span class="keyword">var</span> nextZan=second.find(<span class="string">"a.qz_like_btn_v3[data-clicklog='cancellike']"</span>);<span class="comment">//查找取消赞</span></span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"第二个人有无取消赞:"</span>,nextZan.length);</span><br><span class="line"> <span class="keyword">if</span>(nextZan.length!=<span class="number">0</span>){ <span class="comment">//下面有取消赞</span></span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"下面有取消赞,所以pass"</span>);</span><br><span class="line"> first.remove();</span><br><span class="line"> setTimeout(clearLiked,<span class="number">125</span>);</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">else</span>{ <span class="comment">//第二个人下面没有取消赞,</span></span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"第二个人下面无取消赞,"</span>);</span><br><span class="line"> <span class="keyword">var</span> nickName2 = second.find(<span class="string">".f-nick a"</span>).html();</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"第二个人:"</span>,nickName2);</span><br><span class="line"> <span class="keyword">var</span> match2 = matchList(nickName2);</span><br><span class="line"> <span class="keyword">if</span>(match2==<span class="literal">true</span>){ <span class="comment">// 第二个人也是列表</span></span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"进入{pass}分支"</span>);</span><br><span class="line"> <span class="keyword">var</span> third=jQuery(<span class="string">".f-single"</span>).eq(<span class="number">2</span>);</span><br><span class="line"> <span class="keyword">var</span> nickName3 = second.find(<span class="string">".f-nick a"</span>).html();</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"第三个人:"</span>,nickName3);</span><br><span class="line"> <span class="keyword">var</span> thirdZan=third.find(<span class="string">"a.qz_like_btn_v3[data-clicklog='cancellike']"</span>);<span class="comment">//取消赞</span></span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"第三个人有无取消赞:"</span>,thirdZan.length);</span><br><span class="line"> <span class="keyword">if</span>(thirdZan.length!=<span class="number">0</span>){ <span class="comment">//下面有取消赞</span></span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"第三个人下面有取消赞,所以pass"</span>);</span><br><span class="line"> first.remove();</span><br><span class="line"> setTimeout(clearLiked,<span class="number">125</span>);</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">else</span>{ <span class="comment">//下面没有取消赞,停止</span></span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"下面无取消赞,所以停止"</span>);</span><br><span class="line"> jQuery(<span class="string">"#finishedClearLiked"</span>).html(<span class="string">"finished."</span>);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">else</span>{</span><br><span class="line"> <span class="keyword">var</span> zan=first.find(<span class="string">"a.qz_like_btn_v3[data-clicklog='like']"</span>);</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"第一个人有无点赞按钮:"</span>,zan.length);</span><br><span class="line"> <span class="keyword">if</span>(zan.length!=<span class="number">0</span>){ <span class="comment">// 有点赞按钮,结束</span></span><br><span class="line"> jQuery(<span class="string">"#finishedClearLiked"</span>).html(<span class="string">"finished."</span>);</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">else</span>{</span><br><span class="line"> first.remove();</span><br><span class="line"> setTimeout(clearLiked,<span class="number">125</span>);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> setTimeout(space,<span class="number">100</span>);</span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">space</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="keyword">for</span>(<span class="keyword">var</span> iii=<span class="number">0</span>;iii<<span class="number">5</span>;iii++){</span><br><span class="line"> <span class="keyword">var</span> one=jQuery(<span class="string">".f-single"</span>).eq(iii);</span><br><span class="line"> <span class="keyword">if</span>(one.length==<span class="number">0</span>){</span><br><span class="line"> jQuery(<span class="string">"#statusTable"</span>).find(<span class="string">"tr"</span>).eq(iii).find(<span class="string">"td"</span>).eq(<span class="number">0</span>).html(<span class="string">"nickName"</span>);</span><br><span class="line"> jQuery(<span class="string">"#statusTable"</span>).find(<span class="string">"tr"</span>).eq(iii).find(<span class="string">"td"</span>).eq(<span class="number">1</span>).html(<span class="string">"timestamp"</span>);</span><br><span class="line"> jQuery(<span class="string">"#statusTable"</span>).find(<span class="string">"tr"</span>).eq(iii).find(<span class="string">"td"</span>).eq(<span class="number">2</span>).html(<span class="string">"content"</span>);</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">else</span>{</span><br><span class="line"> <span class="keyword">var</span> nickName = one.find(<span class="string">".f-nick a"</span>).html();</span><br><span class="line"> jQuery(<span class="string">"#statusTable"</span>).find(<span class="string">"tr"</span>).eq(iii).find(<span class="string">"td"</span>).eq(<span class="number">0</span>).html(nickName);</span><br><span class="line"> <span class="keyword">var</span> time = one.find(<span class="string">".info-detail .ui-mr8.state"</span>).html();</span><br><span class="line"> jQuery(<span class="string">"#statusTable"</span>).find(<span class="string">"tr"</span>).eq(iii).find(<span class="string">"td"</span>).eq(<span class="number">1</span>).html(time);</span><br><span class="line"> <span class="keyword">var</span> summary = one.find(<span class="string">".f-info"</span>).text();</span><br><span class="line"> jQuery(<span class="string">"#statusTable"</span>).find(<span class="string">"tr"</span>).eq(iii).find(<span class="string">"td"</span>).eq(<span class="number">2</span>).html(summary);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">up</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"上"</span>);</span><br><span class="line"> jQuery(<span class="string">"#finishedClearLiked"</span>).html(<span class="string">"pending."</span>);</span><br><span class="line"> clearLiked();</span><br><span class="line"> setTimeout(space,<span class="number">100</span>);</span><br><span class="line"> jQuery(<span class="string">"#finishedClearLiked"</span>).html(<span class="string">"finished."</span>);</span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">left</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"左"</span>);</span><br><span class="line"> jQuery(<span class="string">"#finishedClearLiked"</span>).html(<span class="string">"free."</span>);</span><br><span class="line"> <span class="keyword">var</span> first=jQuery(<span class="string">".f-single"</span>).eq(<span class="number">0</span>);</span><br><span class="line"> first.find(<span class="string">".qz_btn_reply"</span>).click();</span><br><span class="line"> setTimeout(space,<span class="number">100</span>);</span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">down</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"下"</span>);</span><br><span class="line"> jQuery(<span class="string">"#finishedClearLiked"</span>).html(<span class="string">"free."</span>);</span><br><span class="line"> <span class="keyword">var</span> first=jQuery(<span class="string">".f-single"</span>).eq(<span class="number">0</span>);</span><br><span class="line"> <span class="built_in">console</span>.log(first);</span><br><span class="line"> faded(first);</span><br><span class="line"> setTimeout(space,<span class="number">100</span>);</span><br><span class="line"> <span class="comment">//if(jQuery(".f-single").length==0){</span></span><br><span class="line"> <span class="comment">// window.scrollTo(window.scrollX, document.documentElement.scrollHeight);</span></span><br><span class="line"> <span class="comment">//}</span></span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">right</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"右 点赞"</span>);</span><br><span class="line"> jQuery(<span class="string">"#finishedClearLiked"</span>).html(<span class="string">"free."</span>);</span><br><span class="line"> <span class="keyword">var</span> first=jQuery(<span class="string">".f-single"</span>).eq(<span class="number">0</span>);</span><br><span class="line"> <span class="built_in">console</span>.log(first);</span><br><span class="line"> <span class="keyword">var</span> zan=first.find(<span class="string">"a.qz_like_btn_v3[data-clicklog='like']"</span>);</span><br><span class="line"> <span class="built_in">console</span>.log(zan.length);</span><br><span class="line"> <span class="keyword">if</span>(zan.length!=<span class="number">0</span>){</span><br><span class="line"> zan.eq(<span class="number">0</span>).click();</span><br><span class="line"> }</span><br><span class="line"> faded(first);</span><br><span class="line"> setTimeout(space,<span class="number">150</span>);</span><br><span class="line"> }</span><br><span class="line"> <span class="function"><span class="keyword">function</span> <span class="title">beg</span>(<span class="params"></span>)</span>{</span><br><span class="line"> <span class="built_in">console</span>.clear();</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"【【【【【】】】】】"</span>);</span><br><span class="line"> <span class="comment">/*插入输入框*/</span></span><br><span class="line"> <span class="keyword">var</span> $rect = jQuery(<span class="string">'<div id="rect_div">\</span></span><br><span class="line"><span class="string"> <style>\</span></span><br><span class="line"><span class="string"> #rect_div{\</span></span><br><span class="line"><span class="string"> position: fixed; z-index: 999;top: 40px; width: 90%; text-align: center; left: 0px; right: 0px; margin-left: auto; margin-right: auto;\</span></span><br><span class="line"><span class="string"> }\</span></span><br><span class="line"><span class="string"> #rect {\</span></span><br><span class="line"><span class="string"> height: 140px; width: 210px; border:red 5px solid; \</span></span><br><span class="line"><span class="string"> }\</span></span><br><span class="line"><span class="string"> #rect:focus{ border:5px green solid; }\</span></span><br><span class="line"><span class="string"> #clearLikedDiv{\</span></span><br><span class="line"><span class="string"> vertical-align: top;border: 4px solid darkseagreen;width: 100px;height: 120px;\</span></span><br><span class="line"><span class="string"> display: inline-flex;flex-direction: column;background-color: wheat;\</span></span><br><span class="line"><span class="string"> }\</span></span><br><span class="line"><span class="string"> #qzone_fix_button{\</span></span><br><span class="line"><span class="string"> height: 50px; width: 100px; \</span></span><br><span class="line"><span class="string"> }\</span></span><br><span class="line"><span class="string"> #finishedClearLiked{\</span></span><br><span class="line"><span class="string"> border: skyblue 3px inset; font-size: 1.5em;\</span></span><br><span class="line"><span class="string"> }\</span></span><br><span class="line"><span class="string"> #startClearLiked{\</span></span><br><span class="line"><span class="string"> width: 100%;flex-grow: 1;\</span></span><br><span class="line"><span class="string"> }\</span></span><br><span class="line"><span class="string"> \</span></span><br><span class="line"><span class="string"> #statusTable{\</span></span><br><span class="line"><span class="string"> border-collapse: collapse;\</span></span><br><span class="line"><span class="string"> display: inline-table;\</span></span><br><span class="line"><span class="string"> vertical-align: top;\</span></span><br><span class="line"><span class="string"> }\</span></span><br><span class="line"><span class="string"> #statusTable tr td:nth-child(1){\</span></span><br><span class="line"><span class="string"> background-color: #FFFFCC;\</span></span><br><span class="line"><span class="string"> width: 100px;\</span></span><br><span class="line"><span class="string"> }\</span></span><br><span class="line"><span class="string"> #statusTable tr td:nth-child(2){\</span></span><br><span class="line"><span class="string"> background-color: #DDDDDD;\</span></span><br><span class="line"><span class="string"> width: 100px;\</span></span><br><span class="line"><span class="string"> }\</span></span><br><span class="line"><span class="string"> #statusTable tr td:nth-child(3){\</span></span><br><span class="line"><span class="string"> background-color: #CCFFCC;\</span></span><br><span class="line"><span class="string"> width: 300px;\</span></span><br><span class="line"><span class="string"> }\</span></span><br><span class="line"><span class="string"> </style>\</span></span><br><span class="line"><span class="string"> <div id="clearLikedDiv">\</span></span><br><span class="line"><span class="string"> <button id="qzone_fix_button" onclick="QZFL.cookie.set(\'page_engine_off\',1,\'qzone.qq.com\',\'/\',12);location = location.href;return false;">网络问题<br>立即修复</button>\</span></span><br><span class="line"><span class="string"> <span id="finishedClearLiked">free.</span>\</span></span><br><span class="line"><span class="string"> <button id="startClearLiked">清理已点赞</button>\</span></span><br><span class="line"><span class="string"> </div>\</span></span><br><span class="line"><span class="string"> <textarea type="input" id="rect" value="">输入区操作:\n触摸板双指上下滑刷新动态\n空格 加载前五条动态信息\n上 清理顶部已点赞\n下 下一条\n左 评论\n右 点赞</textarea>\</span></span><br><span class="line"><span class="string"> <table id="statusTable" border="2"><tr>\</span></span><br><span class="line"><span class="string"> <td>100</td><td>100</td><td>100</td>\</span></span><br><span class="line"><span class="string"> </tr><tr>\</span></span><br><span class="line"><span class="string"> <td>200</td><td>200</td><td>200</td>\</span></span><br><span class="line"><span class="string"> </tr><tr>\</span></span><br><span class="line"><span class="string"> <td>300</td><td>300</td><td>300</td>\</span></span><br><span class="line"><span class="string"> </tr><tr>\</span></span><br><span class="line"><span class="string"> <td>400</td><td>400</td><td>400</td>\</span></span><br><span class="line"><span class="string"> </tr><tr>\</span></span><br><span class="line"><span class="string"> <td>500</td><td>500</td><td>500</td>\</span></span><br><span class="line"><span class="string"> </tr></table>\</span></span><br><span class="line"><span class="string"> </div>'</span>);</span><br><span class="line"> jQuery(<span class="string">"body"</span>).append($rect);</span><br><span class="line"> jQuery(<span class="string">"#startClearLiked"</span>).click(clearLiked);</span><br><span class="line"> <span class="comment">/*红色点赞*/</span></span><br><span class="line"> jQuery(<span class="string">"head"</span>).append(<span class="string">"<style id=\"addedCSS\" type=\"text/css\">a.item-on {background-color: red;}</style>"</span>);</span><br><span class="line"> <span class="comment">/*红色提示和文字</span></span><br><span class="line"><span class="comment"> jQuery("div.user-vip-info").eq(0).html("<span style='color:red;font-size:50px'>OOKK.</span>");</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"> <span class="comment">/*监听document的回车操作 37左 38上 39右 40下*/</span></span><br><span class="line"> jQuery(<span class="string">"#rect"</span>).keydown(<span class="function"><span class="keyword">function</span>(<span class="params">e</span>)</span>{</span><br><span class="line"> <span class="comment">//获取键盘输入的keyCode</span></span><br><span class="line"> <span class="comment">//console.log(e)</span></span><br><span class="line"> <span class="keyword">var</span> keycode = (<span class="built_in">Number</span>)(e.keyCode);</span><br><span class="line"> <span class="built_in">console</span>.log(keycode);</span><br><span class="line"> <span class="keyword">if</span>(keycode == <span class="number">32</span>){<span class="comment">//空格</span></span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"空格"</span>);</span><br><span class="line"> space();</span><br><span class="line"> }<span class="keyword">else</span> <span class="keyword">if</span>(keycode == <span class="number">37</span>){<span class="comment">//左</span></span><br><span class="line"> left();</span><br><span class="line"> }<span class="keyword">else</span> <span class="keyword">if</span>(keycode == <span class="number">38</span>){<span class="comment">//上</span></span><br><span class="line"> up();</span><br><span class="line"> }<span class="keyword">else</span> <span class="keyword">if</span>(keycode == <span class="number">39</span>){<span class="comment">//右</span></span><br><span class="line"> right();</span><br><span class="line"> }<span class="keyword">else</span> <span class="keyword">if</span>(keycode == <span class="number">40</span>){<span class="comment">//下</span></span><br><span class="line"> down();</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">false</span>;</span><br><span class="line"> });</span><br><span class="line"> }</span><br><span class="line"> <span class="built_in">console</span>.log(<span class="string">"----等两秒----"</span>);</span><br><span class="line"> setTimeout(beg,<span class="number">2000</span>);</span><br><span class="line">})();</span><br></pre></td></tr></table></figure>
]]></content>
<categories>
<category>none</category>
</categories>
<tags>
<tag>none</tag>
</tags>
</entry>
<entry>
<title>手机差点报废后的自救</title>
<url>/2020/05/Mi9-SE-screen-problem-self-rescue/</url>
<content><![CDATA[<p>今天手机屏幕出问题手机差点变砖</p>
<a id="more"></a>
<h1 id="莫名其妙的自动点击"><a href="#莫名其妙的自动点击" class="headerlink" title="莫名其妙的自动点击"></a>莫名其妙的自动点击</h1><p>今天(前几天开始),手机使用的时候总是有莫名其妙的自动的点击,造成了一些困扰。</p>
<p>今天下午开始直接十点同时点击,在屏幕最下方!</p>
<p>脑补一下:打开输入法,啪啦啪啦给我按一堆 <code>,.,.,,,</code> ,</p>
<p>打开设置,啪啦啪啦给我点进去不知道什么设置选项了</p>
<p>打开 Minecraft ,选中TNT,刚想摆,结果在右边给我放了一堆了(然后切换成火石…)</p>
<p>(事后模拟了一下,大概就像这样:)</p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200526173705203.jpg" alt></p>
<img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/006qir4oly1gdsc02cc2kj308c09474m.jpg" alt="img" style="zoom:50%;">
<h1 id="考虑是不是系统卡顿"><a href="#考虑是不是系统卡顿" class="headerlink" title="考虑是不是系统卡顿"></a>考虑是不是系统卡顿</h1><p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/ceeb653ely1g5muukoxz9j20dy07s3yy.jpg" alt="img"></p>
<p>锁屏,解锁。无效</p>
<p>关机,重启。无效。开机一会儿后又开始了,而且频繁的点击影响锁屏解锁!</p>
<p>什么?你想叫我重买?</p>
<img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/006APoFYly1g56oaeje2gj30ae0acmxi.jpg" alt="不可能想都不要想_不要_可能表情" style="zoom:50%;">
<h1 id="考虑是不是有病毒软件恶意程序"><a href="#考虑是不是有病毒软件恶意程序" class="headerlink" title="考虑是不是有病毒软件恶意程序"></a>考虑是不是有病毒软件恶意程序</h1><p>浩浩荡荡开始卸载(半年了终于清理一次手机)</p>
<blockquote>
<p>顺手发现了小米系统的自动启动程序是真的恶心。刚关了几个,又给我打开了几个程序</p>
</blockquote>
<p>检查并卸载了:白鲸V₱N、老王V₱N、蚂蚁V₱N、旋风V₱N、Minecraft网易版、adbd insecure(系统使用过程中提示授予了root权限 所以严重怀疑这个)、VMOS(占用空间大,顺手卸了吧)、轻启动(有模拟点击,所以也怀疑这个,而且长得还丑,顺手卸了吧)</p>
<p><strong>莫 有 卵 用 !</strong></p>
<p>还是那么自由的十点暴击</p>
<h1 id="冻结系统程序"><a href="#冻结系统程序" class="headerlink" title="冻结系统程序"></a>冻结系统程序</h1><p>浏览小米系统管家,看到了下面的程序然后冻结了</p>
<img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200526174312780.png" style="zoom:50%;">
<p>心想重启一下才能停止运行系统服务呢。重启手机。结果:</p>
<p><strong>触 摸 完 全 没 反 应 了 !</strong></p>
<p>下图是网上随便找的,脑补一下随便怎么划都没反应的状态。当时我心里就直接:噔噔咚</p>
<img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200526173640419.png" style="zoom: 80%;">
<p>咋办??????????????????</p>
<h1 id="adb-?试试就逝世。"><a href="#adb-?试试就逝世。" class="headerlink" title="adb ?试试就逝世。"></a>adb ?试试就逝世。</h1><p>连接电脑,adb shell进入命令行。</p>
<p>input,模拟触摸。不管用</p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200526175057121.png" alt></p>
<p>通过搜索,知道了如何列出已停用的系统程序</p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200526173039579.png" alt></p>
<p>通过搜索知道了启用已冻结的系统程序的方法,启用了两个,然后reboot重启</p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200526173458485.png" alt></p>
<p>还是不行。又启用了两个</p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200526173816548.png" alt></p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200526173752547.png" alt></p>
<p>重启,还是不行</p>
<h1 id="突然想到鼠标"><a href="#突然想到鼠标" class="headerlink" title="突然想到鼠标"></a>突然想到鼠标</h1><p>摸出手机 USB-C OTG 转接头,拔掉电脑无线鼠标插上OTG插上TypeC口,</p>
<p><strong>能用!</strong></p>
<img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200526180533257.png" style="zoom: 50%;">
<p>啊这?? 这变成巴掌大的 Android显示器了么</p>
<p>所幸是能用了</p>
<img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/006m97Kgly1gdl8qdjl1gj30h30hs40u.jpg" alt="希望人没事_没事_希望表情" style="zoom:33%;">
<p>现在又咋办呢????????????</p>
<h1 id="进入TRWP看看?"><a href="#进入TRWP看看?" class="headerlink" title="进入TRWP看看?"></a>进入TRWP看看?</h1><p>截图就不截图了,脑补一下。</p>
<p>重启进入TRWP,各种操作都是正常的,甚至还很流畅。</p>
<p>判定硬件没有问题。</p>
<p>判定TRWP手机驱动正常可用。</p>
<p>MIUI系统有问题。</p>
<h1 id="通过搜索,我们知道…"><a href="#通过搜索,我们知道…" class="headerlink" title="通过搜索,我们知道…"></a>通过搜索,我们知道…</h1><p>搜你妹,上莆田医院啊</p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/ceeb653ely1g5muukoxz9j20dy07s3yy.jpg" alt="img"></p>
<p>重装。。。系统?</p>
<p>然后又搜了一堆新版系统,又搜了刷系统。</p>
<p>不行,我程序还没备份。</p>
<p>于是打算开始用鼠标操作进行本地备份( <a href="https://www.jb51.net/shouji/675884.html" rel="external nofollow noopener noreferrer" target="_blank">如何操作</a> )</p>
<p>此处省略 1w 字 …</p>
<p>浏览器历史记录:(信息量很大)<img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200526165743064.png" alt="image-20200526165743064"></p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200526165817077.png" alt="image-20200526165817077"></p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200526165855658.png" alt="image-20200526165855658"></p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200526165952401.png" alt="image-20200526165952401"></p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/image-20200526170059829.png" alt="image-20200526170059829"></p>
<h1 id="我想起高兴的细情"><a href="#我想起高兴的细情" class="headerlink" title="我想起高兴的细情"></a>我想起高兴的细情</h1><p>手机发烫了。</p>
<p>想起前面哪篇文章说过触摸不行可能是屏幕上电荷什么的。。。</p>
<p>(<a href="http://gd.zhidao.189.cn/ckb/sj/20180629/1103_364939.html?city=gz" rel="external nofollow noopener noreferrer" target="_blank">终于找到这篇文章了</a>)</p>
<p>解决方案:湿抹布,上下左右前前后后擦一遍,重启。</p>
<p>问题解决。</p>
<p><img src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/006oOWahgy1fgl2m7ezfaj306y06yt8x.jpg" alt="意不意外!惊不惊喜! - 没想到吧?我想到了哈哈哈!意不意外?惊不惊喜?刺不刺激?_想不到_装逼_斗图_怼人表情表情"></p>
]]></content>
<categories>
<category>none</category>
</categories>
<tags>
<tag>adb</tag>
</tags>
</entry>
<entry>
<title>大举报:仿佛那个时代又来临了</title>
<url>/2020/05/dajubao/</url>
<content><![CDATA[<p>转自 <a href="https://www.douban.com/note/719813875/" rel="external nofollow noopener noreferrer" target="_blank">豆瓣</a> : 2019-05-25 03:37:45<a id="more"></a></p>
<hr>
<h2 id="大举报:仿佛那个时代又来临了"><a href="#大举报:仿佛那个时代又来临了" class="headerlink" title="大举报:仿佛那个时代又来临了"></a>大举报:仿佛那个时代又来临了</h2><p>原创:梅骁 </p>
<p>1</p>
<p>之前我很想写一篇文章,写举报是时代变坏的开始。</p>
<p>但最近我的想法变了,我们的时代不是在开始变坏,而是已经变得很坏了。</p>
<p>最近一个让我有这种感觉的事件是王晨艺的点赞事件。</p>
<p>王晨艺是今年《创造营2019》的一个选手,是个没什么背景的舞蹈老师,在《创造营2019》这个整体很糊的节目里人气排名很靠前。</p>
<p>你不知道他没关系,因为我其实对他也没那么熟悉。</p>
<p>但这两天他身上发生了一个事情,有人扒出他六年前曾经在微博点赞过荤段子,所以认为他点赞涉及“敏感问题”,认为他是劣迹艺人,要求他立刻退赛。</p>
<p><img src="../../blog-images/2020/dajubao/p61346149.webp" alt="img"></p>
<p>看到这条新闻的时候,我觉得这一切都荒谬透顶。</p>
<p>最可怕的还不是有人认为一个人点赞荤段子所以他就是劣迹艺人,最可怕的是居然有人为了寻找一个人的“劣迹”而去疯狂翻查这个人过去多年的人生经历,试图寻找出一个黑料、一个过失,并对此大加举报攻击,以达到封杀、退赛的目的。</p>
<p>这个画面实在太可怕了。</p>
<p>一个人,他面无表情地盯着手机、盯着电脑,去从另一个人过往的茫茫人生经历里寻找一个错漏之处,就为了攻击他、打垮他。</p>
<p>你十年前说过脏话、你五年前垃圾没扔进垃圾桶、你三年前打过人一拳……这些全部都有可能成为你被攻击的素材。</p>
<p>这太可怕了,这画面的恐怖程度不亚于任何一部恐怖片。</p>
<p>因为我们谁都不能保证自己过往人生里从没有过任何错漏不当之处,所以我们任何人都有可能成为被这种手段打倒的那个。</p>
<p>2</p>
<p>时间稍微往前推一下。</p>
<p>今年三月份时,曾经发生过一件事,重庆一所高校里,有个老师因为课堂上发表损害国家声誉的过激言论而被学生举报。</p>
<p>学校很快发布公告,认为他违反教师职业道德,撤销了他的教师资格。</p>
<p><img src="../../blog-images/2020/dajubao/p61346150.webp" alt="img"></p>
<p>这是举报者的又一次胜利,可我看得特别害怕。</p>
<p>试想一下,当一个大学老师在课堂上讲话都可能会被举报的时候,他会怎么办?</p>
<p>他会只敢讲那些最安全、最无聊也最没有价值的东西,因为只有那些东西才是不会被举报的,与传道授业解惑相比,当然是个人的安全最重要。</p>
<p>这次是撤销教师资格,下次可能就是被判刑入狱,不,据我所知,已经有大学老师因为这个而入狱三年了。</p>
<p><img src="../../blog-images/2020/dajubao/p61346148.webp" alt="img"></p>
<p>所以,会越来越少人敢冒这个风险。</p>
<p>可是,你知道吗,现代大学教育跟中世纪大学教育的区别就在于,中世纪大学是传授已有知识的场所,而现代大学则担负着不断开拓新的知识和学科的职能。</p>
<p>所以,从1809年现代大学由柏林大学创立开始,“自由”都是大学最核心的关键词。</p>
<p>曾经在清华大学里,闻一多是言论最激进的教授,动不动就要在课堂上发表演说,后来更是在西南联大的广场集会上高声呼喊,对学校大肆批评。</p>
<p><img src="../../blog-images/2020/dajubao/p61346151.webp" alt="img"></p>
<p>闻一多</p>
<p>当时政府要求学校解聘闻一多,时任校长梅贻琦根本不理会,即便他自己也对闻一多的言行很不满,但他知道“自由”才是让大学教育保持活力的唯一动力。</p>
<p>而当“举报”出现在大学课堂上,当大学老师的每一句话都可能成为被举报的理由和材料时,还谈什么自由,谈什么进步。</p>
<p>我们的年轻一代在面对自己不认可的言论时第一反应已经不是“与他辩论”“将他驳倒”,而是熟练的使用举报手段“我要举报他,堵上他说话的嘴巴”。</p>
<p>并且他们一次又一次的成功做到了。</p>
<p>他们毁掉的不只是一个又一个老师,他们毁掉的更是教育本身。</p>
<p>这真的很可悲。</p>
<p>3</p>
<p>前两天,在豆瓣鹅组有这么一个帖子,内容是一个投票。</p>
<p>帖子的作者问大家,如果你发现你的父母、爱人、师长、朋友发表了不当言论,你要不要举报ta?</p>
<p>那个帖子里甚至详细地把这些人分成了“关系亲近的父母”“有过过节的朋友”“分手分得不愉快的前任”等等,把这些人分门别类地做了投票,问当这些发表了不当言论,你要不要举报。</p>
<p>这还不是最可怕的,最可怕的是下面的跟帖是真的认真在讨论。</p>
<p>有人说,父母是绝对不会举报的。</p>
<p>有人说,就算是爸妈,说了不当言论,也不能姑息。</p>
<p>有人说,分得不愉快的前任、有过节的朋友当然要举报啊。</p>
<p>诸如此类,林林总总,这些讨论才是我觉得最可怕的地方,因为大家都默认了“举报”的合法性,默认了当一个人发表了不当言论,他就应该被举报。</p>
<p>这实在太荒谬了。</p>
<p>没有任何一个人应该因为他的言论而被举报</p>
<p>当你遇到一个人说了你不认可的、甚至你极端厌恶的言论,你要做的事情应该是去反驳他、去驳倒他,去用你的思想、你的知识、你的言论去和他正面对决。</p>
<p>“我看不惯你的言论,所以我要反驳你”,这才是一个文明社会的人应该做的事情。</p>
<p>而“举报”是“我看不惯你的言论,所以我要堵上你的嘴,不让你说话,我堵不上,我就让更高的权力去堵你的嘴”。</p>
<p>这是个太可怕的思路。</p>
<p>一旦你把对言论正确与否的决定权交给了更高的权力,那今天被打倒的是你看不惯的人,明天被打倒的就可能是你自己。</p>
<p>不要觉得自己一辈子都不可能有任何错漏,任何人都会有错漏,任何人都会在某些情况下发表不当言论。</p>
<p>甚至,很可能今天还是很合情合理合法的言论,明天就会变成不当言论。</p>
<p>枪口不会因为你曾经是举报者,就对你网开一面。</p>
<p>4</p>
<p>其实,最近这两年来,举报已经越来越常见</p>
<p>有粉丝为了打击别家偶像,就去举报对方主演的作品有思想问题,有的就去挖对方多年前的微博、文章,试图找出蛛丝马迹、错漏之处。</p>
<p>我们其实是眼看着这股风气越兴越胜的。</p>
<p>有人因言获罪入狱,有人靠举报他人以达到打击报复的目的。</p>
<p>有人讨论当父母发表不当言论时,要不要与父母划清界线。</p>
<p>有人认真觉得堵上越来越多的嘴,这世界才会变得更好。</p>
<p>我们已经可以看到那个可预见的未来了。</p>
<p>在那个未来里,大家会因为不知道自己哪天因为哪句话被举报,所以大学老师会越来越不敢说话,亲人、爱人、朋友之间会越来越无法相信彼此。</p>
<p>甚至,就连你用滴滴打个车,都可能被司机举报你有不当言论,只因为你在车上和朋友讨论了一下性少数群体的话题。</p>
<p><img src="../../blog-images/2020/dajubao/p61346152.webp" alt="img"></p>
<p>我们已经能看到那个人人自危的未来就在不远处了。</p>
<p>你我都知道那会是个糟糕、邪恶的时代,我们早就见识过了。</p>
<p>但你我也都知道,我们是很难阻挡举报时代的来临的。</p>
<p>不,其实风行举报的时代早就已经在我们没注意时来临了,它早就已经深入到了我们生活的方方面面。</p>
<p>可这是不对的,无论多少人这么做,它都依然是不对的。</p>
<p>它会毁掉教育,毁掉创造和文化,毁掉人与人之间的信任,毁掉所有自由进步的可能性。</p>
<p>它不是将要到来,它是已经到来了。</p>
<p>你我都拦不住这个糟糕时代的来临。</p>
<p>但至少,我们可以选择不使用它,我们可以选择不做这个糟糕时代的共犯。</p>
]]></content>
<categories>
<category>none</category>
</categories>
<tags>
<tag>none</tag>
</tags>
</entry>
<entry>
<title>adb自动刷钱</title>
<url>/2020/05/adb-auto-make-money/</url>
<content><![CDATA[<p>这是一款名字叫“Zen Idle”的游戏。来尝试下自动刷钱</p>
<img src="../../blog-images/2020/adb-auto-make-money/image-20200505094215251.png" alt="image-20200505094215251" style="zoom: 33%;">
<a id="more"></a>
<p>【adb获取包名以及当前运行的activity】</p>
<figure class="highlight sh"><table><tr><td class="code"><pre><span class="line">adb shell dumpsys window | findstr mCurrentFocus</span><br></pre></td></tr></table></figure>
<p>输出: </p>
<figure class="highlight sh"><table><tr><td class="code"><pre><span class="line">mCurrentFocus=Window{98555ab u0 com.TechTreeGames.ZenIdle/com.unity3d.player.UnityPlayerActivity}</span><br></pre></td></tr></table></figure>
<p>由包名获取apk路径</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">adb shell pm path io.ionic.starter</span><br></pre></td></tr></table></figure>
<p>【adb命令行启动应用程序】</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">adb shell am start -n 包名/类名</span><br></pre></td></tr></table></figure>
<p>如:</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">adb shell am start -n com.android.music/com.android.music.MusicBrowserActivity</span><br></pre></td></tr></table></figure>
<p>【adb shell 修改系统时间】<br>下面命令亲测可用,假如当前时间 01月05号08点23分改成 01月05号12点23分</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">adb shell date "01051223"</span><br></pre></td></tr></table></figure>
<p>【按钮的位置】<br>找到开发者选项,开启“指针位置”,在游戏里找到按钮的范围<br>Claim按钮<br>X: 390-690 300 540<br>Y: 1212-1362 150 1287<br>关闭广告按钮<br>x 915<br>y 835</p>
<p>【Android adb 模拟滑动 按键 点击事件】</p>
<p>关于tap的话,他模拟的是touch屏幕的事件,只需给出x、y坐标即可。<br>此x、y坐标对应的是真实的屏幕分辨率,所以要根据具体手机具体看,比如你想点击屏幕(x, y) = (250, 250)位置:</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">adb shell input tap 250 250</span><br></pre></td></tr></table></figure>
<p>此处我:</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">input tap 540 1287</span><br></pre></td></tr></table></figure>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">input tap 915 835</span><br></pre></td></tr></table></figure>
<p>【总命令】</p>
<figure class="highlight sh"><table><tr><td class="code"><pre><span class="line">adb shell date <span class="string">"01010601"</span> ; am start -n com.TechTreeGames.ZenIdle/com.unity3d.player.UnityPlayerActivity ; sleep 1 ; input tap 540 1287 ; sleep 1 ; date <span class="string">"01010101"</span> ; input keyevent 3</span><br></pre></td></tr></table></figure>
<p>加点循环</p>
<figure class="highlight sh"><table><tr><td class="code"><pre><span class="line"><span class="keyword">for</span> I <span class="keyword">in</span> $(seq 1 20);<span class="keyword">do</span></span><br><span class="line"> <span class="built_in">echo</span> <span class="variable">$I</span>/20 ; date <span class="string">"01010601"</span> ; am start -n com.TechTreeGames.ZenIdle/com.unity3d.player.UnityPlayerActivity ; sleep 1 ; input tap 915 835 ; input tap 915 835 ; input tap 540 1287 ; sleep 1 ; date <span class="string">"01010101"</span> ; input keyevent 3</span><br><span class="line"><span class="keyword">done</span></span><br></pre></td></tr></table></figure>
<p>写入sh脚本,懒得每次输入了</p>
<figure class="highlight sh"><table><tr><td class="code"><pre><span class="line"><span class="built_in">echo</span> <span class="string">'for I in $(seq 1 20);do\n echo $I/20 ; date "01010601" ; am start -n com.TechTreeGames.ZenIdle/com.unity3d.player.UnityPlayerActivity ; sleep 1 ; input tap 915 835 ; input tap 915 835 ; input tap 540 1287 ; sleep 1 ; date "01010101" ; input keyevent 3\ndone'</span> >zen.sh</span><br></pre></td></tr></table></figure>
<p>【adb 安装卸载程序】<br>adb root 失败,提示adbd cannot run as root in production builds<br>网上说安装adbd-Insecure-v2.00.apk,亲测无效。还是每次adb shell然后su吧。</p>
<figure class="highlight sh"><table><tr><td class="code"><pre><span class="line">adb install ./adbd-Insecure-v2.00.apk</span><br><span class="line"></span><br><span class="line">adb shell pm list packages|grep adb</span><br><span class="line">输出: package:eu.chainfire.adbd</span><br><span class="line"></span><br><span class="line">adb uninstall eu.chainfire.adbd</span><br></pre></td></tr></table></figure>
<p>【尝试只改时间】</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">date "01010101" ; date "01010601"</span><br></pre></td></tr></table></figure>
<p>并不能让程序显示奖励窗口(必须先退出这个页面再进入)</p>
<p>并不能让程序显示奖励窗口(必须先退出这个页面再进入)</p>
<p>【进一步的集成】<br>通过命令行参数决定要循环几次</p>
<figure class="highlight sh"><table><tr><td class="code"><pre><span class="line"><span class="built_in">echo</span> <span class="string">'CNT=10</span></span><br><span class="line"><span class="string">if [ $# != 0 ] ; then </span></span><br><span class="line"><span class="string">CNT=$1</span></span><br><span class="line"><span class="string">fi</span></span><br><span class="line"><span class="string">for I in $(seq 1 $CNT);do</span></span><br><span class="line"><span class="string"> echo $I/$CNT ; date "01010601" ; am start -n com.TechTreeGames.ZenIdle/com.unity3d.player.UnityPlayerActivity ; sleep 1 ; input tap 915 835 ; input tap 915 835 ; input tap 540 1287 ; sleep 1 ; date "01010101" ; input keyevent 3</span></span><br><span class="line"><span class="string">done'</span> >zen.sh</span><br></pre></td></tr></table></figure>
<p>然后:</p>
<figure class="highlight sh"><table><tr><td class="code"><pre><span class="line">adb shell</span><br><span class="line"><span class="built_in">cd</span> /sdcard/_sh</span><br><span class="line">su</span><br><span class="line">. ./zen.sh 20</span><br></pre></td></tr></table></figure>
<p>【手机闹钟BUG级响起】<br>无解<br>可以关闭闹钟</p>
<p>【尝试只在date的时候用su执行】</p>
<figure class="highlight sh"><table><tr><td class="code"><pre><span class="line">mkdir /sdcard/_sh</span><br><span class="line"><span class="built_in">echo</span> <span class="string">'CNT=10</span></span><br><span class="line"><span class="string">if [ $# != 0 ] ; then </span></span><br><span class="line"><span class="string">CNT=$1</span></span><br><span class="line"><span class="string">fi</span></span><br><span class="line"><span class="string">for I in $(seq 1 $CNT);do</span></span><br><span class="line"><span class="string"> echo $I/$CNT ; su -c date "01010601" ; am start -n com.TechTreeGames.ZenIdle/com.unity3d.player.UnityPlayerActivity ; sleep 1 ; input tap 915 835 ; input tap 915 835 ; input tap 540 1287 ; sleep 1 ; su -c date "01010101" ; input keyevent 3</span></span><br><span class="line"><span class="string">done'</span> >/sdcard/_sh/zen.sh</span><br></pre></td></tr></table></figure>
<p>完美~<br>但是会每次date的时候显示“已授予shell超级用户权限”,看着很难受<br>先su再执行脚本就不会了</p>
<p>可以在电脑上adb shell进去执行脚本,也可以用手机啦</p>
<p>【视频演示】</p>
<script src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/blog-images/static/jquery/jquery.min.js"></script>
<style>
#opener{
width: 250px;
height: 50px;
font-size: 1.5em;
text-align: center;
background-color: #69F0AE;
cursor: pointer;
transform: scale(1);
transition-duration: 0.5s;
}
#opener:hover{
transform: scale(1.04);
transition-duration: 0.5s;
}
</style>
<p><button id="opener">点击开启</button></p>
<script src="https://blogsrc-1301043685.cos.ap-chengdu.myqcloud.com/blog-images/2020/adb-auto-make-money/open_video.js"></script>
<div id="video_here"></div>
]]></content>
<categories>
<category>none</category>
</categories>
<tags>
<tag>adb</tag>
</tags>
</entry>
<entry>
<title>Why linux</title>
<url>/2020/03/why-linux/</url>
<content><![CDATA[<p>学习Linux之前,了解Linux哲学和Linux设计思想是必要的。</p>
<p>然后就是开始敲命令了啦<a id="more"></a></p>
<h2 id="Linux哲学"><a href="#Linux哲学" class="headerlink" title="Linux哲学"></a>Linux哲学</h2><h4 id="知乎:《unix-linux-设计哲学》"><a href="#知乎:《unix-linux-设计哲学》" class="headerlink" title="知乎:《unix/linux 设计哲学》"></a>知乎:《unix/linux 设计哲学》</h4><p><a href="https://zhuanlan.zhihu.com/p/57521605" rel="external nofollow noopener noreferrer" target="_blank">https://zhuanlan.zhihu.com/p/57521605</a></p>
<p>内容太多,不要求完全记住。可以以后回来再翻阅</p>
<h4 id="博客园:Linux的哲学思想"><a href="#博客园:Linux的哲学思想" class="headerlink" title="博客园:Linux的哲学思想"></a>博客园:<a href="https://www.cnblogs.com/ZhengLiming/p/5875049.html" rel="external nofollow noopener noreferrer" target="_blank">Linux的哲学思想</a></h4><p>Linux哲学思想:</p>
<ol>
<li>一切皆文件;</li>
<li>小型,单一用途的程序;</li>
<li>连接程序,共同完成复杂功能;</li>
<li>避免令人困惑的用户界面;</li>
<li>配置数据存储在文本中;</li>
</ol>
<p>解释:<br>一切皆文件:是 Unix/Linux 的基本哲学之一。不仅普通的文件,目录、字符设备、块设备、 套接字等在 Unix/Linux 中都是以文件被对待;它们虽然类型不同,但是对其提供的却是同一套操作界面。</p>
<p>小型,单一用途的程序:程序和可执行文件不要太复杂,这样才能保证了linux内核的高效运行</p>
<p>连接程序,共同完成复杂功能:复杂的任务可以通过连接多个简单的程序实现复杂的功能。对于复杂的功能linux通过许多简单程序的组合等方式实现,在保证简单功能的高效性的同时,复杂的程序也必然是高效性的</p>
<p>避免令人困惑的用户界面:如windows那样出了问题一般人选择的会是重启,实在是不行的话就是 重新 安装系统了,因为对于windows那样不是开源的,并且用户界面比较 复杂操作系统出了问题,一般的人是根本没有办法解决的。但是linux就不一样了,第一linux是开源的,无论什么问题都可以通过简洁的命令行实现 排错,修改系统的配置,一切都是简洁明了为基础。</p>
<p>配置数据存储在文本中:linux所有的配置文件都存放在文本配置文件当中,无论什么配置修改都只需修改其配置文件即可,配置文件时文本形式的只需任意一款文本编辑器修改即可而不是类似于windows那样将保存在注册表中,并且windows的注册表需要专门的二进制或十六进制的编辑器才可编辑,修改比较复杂</p>
<h4 id="bilibili:Linux哲学视频资料1:"><a href="#bilibili:Linux哲学视频资料1:" class="headerlink" title="bilibili:Linux哲学视频资料1:"></a>bilibili:Linux哲学视频资料1:</h4><p>哲学的魅力 | 非Windows系统家族的魅力之所在:“一切皆文件”</p>
<p><a href="https://www.bilibili.com/video/BV1Yb411g79x" rel="external nofollow noopener noreferrer" target="_blank">https://www.bilibili.com/video/BV1Yb411g79x</a></p>
<p>(命令不会没关系,了解一下“哲学”就好)</p>
<h4 id="bilibili:Linux哲学视频资料2"><a href="#bilibili:Linux哲学视频资料2" class="headerlink" title="bilibili:Linux哲学视频资料2"></a>bilibili:Linux哲学视频资料2</h4><p>TED-Linux背后的精神 _ Linus Torvalds</p>
<p><a href="https://www.bilibili.com/video/BV1a4411t7Kt?p=1" rel="external nofollow noopener noreferrer" target="_blank">https://www.bilibili.com/video/BV1a4411t7Kt?p=1</a></p>
<p>(一个有英文字幕的双语版本:)</p>
<p><a href="https://www.bilibili.com/video/BV1J7411v7BD" rel="external nofollow noopener noreferrer" target="_blank">https://www.bilibili.com/video/BV1J7411v7BD</a></p>
<hr>
<h2 id="系统目录结构"><a href="#系统目录结构" class="headerlink" title="系统目录结构"></a>系统目录结构</h2><p>Linux 里面最重要的概念估计就是“一切皆文件”了,我们来看看Linux系统的根目录结构。</p>
<p>首先是 Linux 不像 Windows 这种,系统里面看起来有多个“盘”,C,D,E,F,什么的,</p>
<p>在 Linux,只有一个“盘”(可以假想成 C盘),但是里面文件夹却有很多。</p>
<p><img src="https://www.runoob.com/wp-content/uploads/2014/06/4_20.png" alt="img"></p>
<p>我们来看看菜鸟教程 Linux 部分是怎么说的:</p>
<p><a href="https://www.runoob.com/linux/linux-system-contents.html" rel="external nofollow noopener noreferrer" target="_blank">https://www.runoob.com/linux/linux-system-contents.html</a></p>
<p>其中用得比较多的文件夹也不是很多啦:</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">/dev 虚拟的,你的硬件设备会列出在这里</span><br><span class="line">/etc 配置文件的集散地</span><br><span class="line">/home 用户目录,相当于 Windows 的 %USERPROFILE% (你可以试试把这个输入资源管理器的地址栏回车)</span><br><span class="line">/media 一些设备出现在这里</span><br><span class="line">/mnt 用于挂载文件系统(插入U盘并挂载后在这里找)(wsl可以在这里访问主系统文件)</span><br><span class="line">/bin | /usr/bin | /usr/sbin 你看到文件出现在这里,那大概率是可执行程序这样的东西了</span><br><span class="line">/var 做 web 你会爱死的</span><br></pre></td></tr></table></figure>
<hr>
<h2 id="Linux终端"><a href="#Linux终端" class="headerlink" title="Linux终端"></a>Linux终端</h2><p>终端(Terminal),也叫命令行,顾名思义,输入命令的地方。就是经常见到的黑窗口(当然并不见得都是黑的)</p>
<p>命令行是 Linux 最常见的状态,GUI (Graphical User Interface,图形用户界面) 反而不是</p>
<p>在 Linux 终端干得最多的一件事当然是敲命令了,命令一般是如下格式:</p>
<p><code>command [-option] parameter1 parameter2...</code></p>
<p>我们来看几个参考链接:</p>
<p>图示直观的:<a href="https://blog.csdn.net/pl0020/article/details/82012881" rel="external nofollow noopener noreferrer" target="_blank">https://blog.csdn.net/pl0020/article/details/82012881</a></p>
<p>分析有理的:<a href="https://blog.csdn.net/wangjianno2/article/details/16344807" rel="external nofollow noopener noreferrer" target="_blank">https://blog.csdn.net/wangjianno2/article/details/16344807</a></p>
<p>详细深入的:<a href="http://c.biancheng.net/view/720.html" rel="external nofollow noopener noreferrer" target="_blank">http://c.biancheng.net/view/720.html</a></p>
<p>这里还想 bb 几句:</p>
<ol>
<li>Windows Linux都有命令行(Windows早期DOS也是命令行系统),但是操作习惯有些小不同</li>
<li>Windows 参数一般是 <code>/option</code>,Linux 大多是 <code>-option</code> <code>--option</code></li>
<li>Windows 获取帮助一般是 <code>/?</code> ,Linux 大多是 <code>-h</code> <code>-help</code> <code>--help</code></li>
<li>Windows 路径以反斜杠 <code>\</code> 分隔,Linux 路径由正斜杠 <code>/</code> 分隔</li>
<li>Windows 命令行能运行 <code>.bat</code> 批处理脚本,Linux终端能运行 <code>.sh</code> 批处理脚本,语法大部分不同,少数相同</li>
</ol>
<hr>
<h2 id="开始背命令吧"><a href="#开始背命令吧" class="headerlink" title="开始背命令吧"></a>开始背命令吧</h2><h4 id="必学的少数命令"><a href="#必学的少数命令" class="headerlink" title="必学的少数命令"></a>必学的少数命令</h4><table>
<thead>
<tr>
<th align="center">ls</th>
<th align="center">ll</th>
<th align="center">cd</th>
<th align="center">touch</th>
<th align="center">clear</th>
<th align="center">pwd</th>
<th align="center">mkdir</th>
<th align="center">cat</th>
<th align="center">more</th>
</tr>
</thead>
<tbody><tr>
<td align="center">less</td>
<td align="center">tail</td>
<td align="center">cp</td>
<td align="center">mv</td>
<td align="center">rm(谨慎)</td>
<td align="center">find</td>
<td align="center">vi/vim</td>
<td align="center">|</td>
<td align="center">grep</td>
</tr>
<tr>
<td align="center">ps</td>
<td align="center">kill</td>
<td align="center">ipconfig</td>
<td align="center">tar</td>
<td align="center">reboot</td>
<td align="center">shutdown</td>
<td align="center">halt</td>
<td align="center">chmod</td>
<td align="center"></td>
</tr>
</tbody></table>
<p>这里是一些介绍:<a href="https://blog.csdn.net/weixin_44706512/article/details/90604635" rel="external nofollow noopener noreferrer" target="_blank">https://blog.csdn.net/weixin_44706512/article/details/90604635</a></p>
<h4 id="菜鸟教程:Linux-命令大全"><a href="#菜鸟教程:Linux-命令大全" class="headerlink" title="菜鸟教程:Linux 命令大全"></a>菜鸟教程:Linux 命令大全</h4><p>其他的,少见的,忘了的,可以在这里速查,也可以学习积累:</p>
<p> <a href="https://www.runoob.com/linux/linux-command-manual.html" rel="external nofollow noopener noreferrer" target="_blank">https://www.runoob.com/linux/linux-command-manual.html</a></p>
<h4 id="Linux常用命令大全-和用法"><a href="#Linux常用命令大全-和用法" class="headerlink" title="Linux常用命令大全(和用法)"></a>Linux常用命令大全(和用法)</h4><p><a href="https://www.cnblogs.com/fnlingnzb-learner/p/5831284.html" rel="external nofollow noopener noreferrer" target="_blank">https://www.cnblogs.com/fnlingnzb-learner/p/5831284.html</a></p>
<hr>
<h2 id="Q-amp-A"><a href="#Q-amp-A" class="headerlink" title="Q&A"></a>Q&A</h2><h4 id="Linux-怎么装?"><a href="#Linux-怎么装?" class="headerlink" title="Linux 怎么装?"></a>Linux 怎么装?</h4><p>必应搜索“WSL安装”:<a href="https://cn.bing.com/search?q=wsl安装" rel="external nofollow noopener noreferrer" target="_blank">https://cn.bing.com/search?q=wsl%E5%AE%89%E8%A3%85</a></p>
<p>必应搜索“VMware 安装 Linux”:<a href="https://cn.bing.com/search?q=VMware+安装+Linux" rel="external nofollow noopener noreferrer" target="_blank">https://cn.bing.com/search?q=VMware+%E5%AE%89%E8%A3%85+Linux</a></p>
<p>想知道VMware安装详细某版本,把上面 Linux 换成你的对应详细版本即可,如:Ubuntu18.04</p>
<h4 id="发行版这么多,用哪个版本好?"><a href="#发行版这么多,用哪个版本好?" class="headerlink" title="发行版这么多,用哪个版本好?"></a>发行版这么多,用哪个版本好?</h4><p>初学者:Ubuntu、deepin。极客:Arch。服务器用户:CentOS。发烧玩家:Steam OS。</p>
<h4 id="哪儿去获取-Linux-镜像?"><a href="#哪儿去获取-Linux-镜像?" class="headerlink" title="哪儿去获取 Linux 镜像?"></a>哪儿去获取 Linux 镜像?</h4><p>千万别再去XX下载站了。</p>
<p>必应搜索你想要的系统名字,搜索结果第一条都是官方网站了,一般他们域名都是 <code>系统名.org</code>,这是非营利组织的域名,也有部分是 <code>系统.com</code>,如Ubuntu,因为它包含了商业发行版。</p>
<p>打开网站,在醒目的位置,都能找到 Download 这种东西,仔细寻找,可以找到 <code>.iso</code> 镜像下载链接。如果下载慢,可以使用 <a href="https://blog.csdn.net/u010250863/article/details/70161188" rel="external nofollow noopener noreferrer" target="_blank">国内镜像站</a> ,他们提供了高速的软件下载和软件源服务,像 <a href="http://mirrors.tuna.tsinghua.edu.cn/" rel="external nofollow noopener noreferrer" target="_blank">清华源</a>、<a href="http://mirrors.aliyun.com/" rel="external nofollow noopener noreferrer" target="_blank">阿里云</a>、<a href="http://mirrors.163.com/" rel="external nofollow noopener noreferrer" target="_blank">网易</a>等等</p>
<h4 id="我应该使用-root-用户吗?"><a href="#我应该使用-root-用户吗?" class="headerlink" title="我应该使用 root 用户吗?"></a>我应该使用 root 用户吗?</h4><p>不建议。应当在系统安装过程中设置好用户名和密码,以后使用需要高权限的命令应该使用 <code>sudo</code> 或 <code>su</code> 。</p>
]]></content>
<categories>
<category>pwn</category>
</categories>
<tags>
<tag>linux</tag>
</tags>
</entry>
<entry>
<title>科学地让 OneDrive 飞,下载速度 5Mb/s</title>
<url>/2020/03/let-onedrive-fly-scientifically/</url>
<content><![CDATA[<p>OneDrive 是 Microsoft 的一个云存储服务,安装后集成在 Windows 资源管理器,所以比其他任何网盘都更有其与生俱来的优势。但由于众所周知的原因,OneDrive 的访问速度也极低。<br>访问速度慢还不算了,还经常会死在某个进度,一直下不动,这是最**的</p>
<img src="../../blog-images/2020/let-onedrive-fly-scientifically/image-20200321165324494.png" alt="image-20200321165324494" style="zoom:67%;">
<div style="text-align:center">你看这 243KB/秒 长得多标致啊</div>
<a id="more"></a>
<h2 id="解决方案"><a href="#解决方案" class="headerlink" title="解决方案"></a>解决方案</h2><ol>
<li>ShadowsocksR</li>
<li>Proxifier</li>
<li>设置 OneDrive 多线程</li>
</ol>
<h2 id="1-ShadowsocksR"><a href="#1-ShadowsocksR" class="headerlink" title="1. ShadowsocksR"></a>1. ShadowsocksR</h2><p>略。</p>
<p>配置好之后应该是会开启 <code>127.0.0.1:1080</code> ,HTTP、Socks5 均有(没出问题的话默认就是这个配置)</p>
<h2 id="2-Proxifier"><a href="#2-Proxifier" class="headerlink" title="2. Proxifier"></a>2. Proxifier</h2><p>搜索<code>Proxifier</code>找到官网:<a href="https://www.proxifier.com/download/" rel="external nofollow noopener noreferrer" target="_blank">https://www.proxifier.com/download/</a></p>
<img src="../../blog-images/2020/let-onedrive-fly-scientifically/image-20200321172127587.png" alt="image-20200321172127587" style="zoom:67%;">
<p>下载 <strong>Proxifier Standard Edition</strong> ,这个是安装版,Portable是绿色版,这里不用绿色版。</p>
<p>下载下来exe双击安装,安装过程中勾选Create a desktop shortcut,完了之后会默认打开软件,关掉它(你也可以在最后一步取消勾选Launch Proxifier)</p>
<p>在桌面快捷方式右键,用管理员权限运行。打开之后是长这个样子的:</p>
<img src="../../blog-images/2020/let-onedrive-fly-scientifically/image-20200321175935712.png" alt="image-20200321175935712" style="zoom:67%;">
<p>选择31天试用,<a href="https://www.52pojie.cn/forum.php?mod=viewthread&tid=747987&page=3#pid20397576" rel="external nofollow noopener noreferrer" target="_blank">或者输入注册码</a>,如果输入注册码,最好是勾选<code>All userss on this computer(require administrator)</code>,然后就会打开程序主界面</p>
<p><img src="../../blog-images/2020/let-onedrive-fly-scientifically/image-20200321180424905.png" alt="image-20200321180424905"></p>
<p>我们当然是希望开机启动,所以开启<code>Autostart</code></p>
<img src="../../blog-images/2020/let-onedrive-fly-scientifically/image-20200321191843270.png" alt="image-20200321191843270" style="zoom:67%;">
<p>通过Profile->Proxy Servers,添加 HTTPS 和 Socks5 代理配置</p>
<img src="../../blog-images/2020/let-onedrive-fly-scientifically/image-20200321181035454.png" alt="image-20200321181035454" style="zoom:67%;">
<p>通过Profile->Proxification Rules,配置软件代理规则</p>
<p><img src="../../blog-images/2020/let-onedrive-fly-scientifically/image-20200321182841860.png" alt="image-20200321182841860"></p>
<p>我们在这里添加OneDrive。</p>
<p>先找到OneDrive的可执行文件的位置。一般应该是在<code>%localappdata%\Microsoft\OneDrive\</code></p>
<p>如果没有,运行OneDrive,打开任务管理器,在详细信息标签页,找到<code>onedrive.exe</code>,右键打开文件所在位置</p>
<p>点击上面窗口的Add,添加配置。点击Browse输入OneDrive目录,选择<code>onedrive.exe</code>,action选择通过socks5代理</p>
<img src="../../blog-images/2020/let-onedrive-fly-scientifically/image-20200321183611160.png" alt="image-20200321183611160" style="zoom:67%;">
<p>保存,并把 default 的 action 设置为 direct(你也不希望所有程序都通过代理对吧)</p>
<img src="../../blog-images/2020/let-onedrive-fly-scientifically/image-20200321183553240.png" alt="image-20200321183553240" style="zoom:67%;">
<p>任务栏里面右键 OneDrive,更多,关闭 OneDrive,再找到刚才的OneDrive程序位置,开启OneDrive。</p>
<p>我们随便下载一个文件看看:</p>
<p><img src="../../blog-images/2020/let-onedrive-fly-scientifically/image-20200321191651660.png" alt="image-20200321191651660"></p>
<h2 id="3-设置-OneDrive-多线程"><a href="#3-设置-OneDrive-多线程" class="headerlink" title="3. 设置 OneDrive 多线程"></a>3. 设置 OneDrive 多线程</h2><p>你好像速度没我快?那肯定是你氪金不够(bushi),那就试试开启 OneDrive 多线程</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">修改这个文件:</span><br><span class="line">"%localappdata%\Microsoft\OneDrive\settings\Personal\global.ini"</span><br><span class="line">可通过win r运行,或cmd里运行下面直接打开修改:</span><br><span class="line">notepad "%localappdata%\Microsoft\OneDrive\settings\Personal\global.ini"</span><br></pre></td></tr></table></figure>
<p>第一行加入:</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">numberOfConcurrentUploads=3</span><br></pre></td></tr></table></figure>
<blockquote>
<p>PS:数值项即为线程数,最小值为1,最大值为3,根据实际需要选择即可</p>
</blockquote>
<img src="../../blog-images/2020/let-onedrive-fly-scientifically/image-20200321193422745.png" alt="image-20200321193422745" style="zoom:67%;">
<p>效果:(奇怪的网速增加了)</p>
<p><img src="../../blog-images/2020/let-onedrive-fly-scientifically/image-20200321213449574.png" alt="image-20200321213449574"></p>
]]></content>
<categories>
<category>科学上网</category>
</categories>
<tags>
<tag>代理</tag>
<tag>OneDrive</tag>
</tags>
</entry>
<entry>
<title>用 Visual Studio 2019 写 C++ 基础代码</title>
<url>/2020/03/cpp-with-Visual-Studio-2019/</url>
<content><![CDATA[<p>什么?你不会用VS?<a id="more"></a></p>
<h3 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h3><p>安装 <a href="https://visualstudio.microsoft.com/zh-hans/vs/community/" rel="external nofollow noopener noreferrer" target="_blank">Visual Studio2019 Community</a>,不多说了,虽然可能出现很多问题。这里假定你已经有安装好的 VS2019。</p>
<h3 id="打开VS,创建项目"><a href="#打开VS,创建项目" class="headerlink" title="打开VS,创建项目"></a>打开VS,创建项目</h3><p>打开VS2019,看到如下界面。</p>
<p><img src="../../blog-images/2020/cpp-with-Visual-Studio-2019/image-20200306134632068.png" alt="image-20200306134632068"></p>
<p>选择C++,Windows,选择控制台应用。</p>
<p><img src="../../blog-images/2020/cpp-with-Visual-Studio-2019/image-20200306134730096.png" alt="image-20200306134730096"></p>
<p>填写项目名称和存储位置,点击创建。</p>
<p><img src="../../blog-images/2020/cpp-with-Visual-Studio-2019/image-20200306134821590.png" alt="image-20200306134821590"></p>
<p>然后就会打开工程界面,在右边的解决方案资源管理器,源文件,可以找到刚才填写的名字的cpp文件,双击打开(默认会打开的),在左边正常编写代码,按 <code>F5</code> 运行,或点击上面绿色三角形,“本地Windows调试器”,(可以直接点也可以菜单栏选择调试,开始执行不调试(快捷键<code>Ctrl+F5</code>))</p>
<p><img src="../../blog-images/2020/cpp-with-Visual-Studio-2019/image-20200306134954770.png" alt="image-20200306134954770"></p>
<h3 id="没有“控制台应用”选项?"><a href="#没有“控制台应用”选项?" class="headerlink" title="没有“控制台应用”选项?"></a>没有“控制台应用”选项?</h3><p>创建项目窗口,拉到最下面,找到安装</p>
<p><img src="../../blog-images/2020/cpp-with-Visual-Studio-2019/image-20200306135632223.png" alt="image-20200306135632223"></p>
<p>在打开的窗口,勾选安装这三个。(其他的可以根据需要添加)(如果你确实不用VS开发高级应用,只勾选“使用C++的桌面开发”也就可以了)</p>
<p><img src="../../blog-images/2020/cpp-with-Visual-Studio-2019/image-20200306135706897.png" alt="image-20200306135706897"></p>
<p>另外需要注意的是,如果想要图形化设计程序界面,(即MFC),需要在勾选“使用C++的桌面开发”之后,勾选右边的 C++ MFC v142</p>
<p><img src="../../blog-images/2020/cpp-with-Visual-Studio-2019/image-20200306135751221.png" alt="image-20200306135751221"></p>
<p>,然后开始安装即可。可以选择下载时安装(下载一个安装一个),下载完成安装(全部下载完再一起装),我个人偏好后一种</p>
<p>(等待巨长时间,安装完成后再同理创建项目。)</p>
<h3 id="用VS进行简单调试"><a href="#用VS进行简单调试" class="headerlink" title="用VS进行简单调试"></a>用VS进行简单调试</h3><h4 id="断点"><a href="#断点" class="headerlink" title="断点"></a>断点</h4><p>在需要暂停的代码这一行前面灰色区域鼠标单击,出现一个红色圆点,就是下断点。</p>
<p><img src="../../blog-images/2020/cpp-with-Visual-Studio-2019/image-20200306141237786.png" alt="image-20200306141237786"></p>
<p>再<code>F5</code> 开始调试,或点上方“本地Windows调试器”或菜单栏调试,开始调试。</p>
<p>VS界面会发生变化,且之前下断点位置会变成橙色箭头,表示程序当前正在执行这一行代码。此时程序暂停,可以查看变量值和一行一行运行程序。</p>
<ul>