-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathatom.xml
1524 lines (1308 loc) · 137 KB
/
atom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
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"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>hhstore's blog</title>
<subtitle>Python, Golang 开发</subtitle>
<link href="/atom.xml" rel="self"/>
<link href="http://hhstore.github.io/"/>
<updated>2016-12-05T08:11:13.965Z</updated>
<id>http://hhstore.github.io/</id>
<author>
<name>hhstore</name>
</author>
<generator uri="http://hexo.io/">Hexo</generator>
<entry>
<title>使用 Docker 部署 Seafile</title>
<link href="http://hhstore.github.io/2016/12/05/deploy-seafile-by-docker/"/>
<id>http://hhstore.github.io/2016/12/05/deploy-seafile-by-docker/</id>
<published>2016-12-05T15:12:10.000Z</published>
<updated>2016-12-05T08:11:13.965Z</updated>
<content type="html"><![CDATA[<p>本篇介绍: 通过 Docker 部署 Seafile.</p>
<a id="more"></a>
<h2 id="Seafile-简介"><a href="#Seafile-简介" class="headerlink" title="Seafile 简介:"></a>Seafile 简介:</h2><ul>
<li><a href="https://www.seafile.com/home/" target="_blank" rel="external">Seafile 官网</a><ul>
<li><a href="https://www.seafile.com/download/" target="_blank" rel="external">download</a></li>
<li><a href="http://download-cn.seafile.com/seafile-client-6.0.0.dmg" target="_blank" rel="external">Mac 客户端</a></li>
<li><a href="https://manual-cn.seafile.com/" target="_blank" rel="external">seafile 帮助文档</a></li>
</ul>
</li>
<li>海文云盘:安全、可靠、快速的企业文件云存储</li>
<li>Seafile 服务器内核由 C 语言编写。运行起来小巧快速。</li>
</ul>
<h2 id="使用-docker-部署"><a href="#使用-docker-部署" class="headerlink" title="使用 docker 部署:"></a>使用 docker 部署:</h2><h3 id="拉取-docker-镜像"><a href="#拉取-docker-镜像" class="headerlink" title="拉取 docker 镜像:"></a>拉取 docker 镜像:</h3><ul>
<li><a href="https://github.com/JensErat/docker-seafile" target="_blank" rel="external">JensErat/docker-seafile</a></li>
<li><a href="https://hub.docker.com/r/jenserat/seafile/" target="_blank" rel="external">seafile - DockerHub</a></li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">docker pull jenserat/seafile</div></pre></td></tr></table></figure>
<h3 id="容器启动"><a href="#容器启动" class="headerlink" title="容器启动:"></a>容器启动:</h3><ul>
<li>新建容器共享目录: <code>/iDockerShare/seafile</code></li>
<li>当前 seafile 官网最新服务器端版本: seafile-server-6.0.6</li>
<li>关键细节:<ul>
<li>此容器本身并未打包 seafile 代码.</li>
<li>容器启动后, 需手动执行命令, 去 seafile 官网拉取最新代码.</li>
<li>容器中, 执行安装命令, 配置服务器.</li>
<li>容器中, 手动添加 admin 用户帐号, 密码.</li>
<li>当前版本, 8082 端口, 不可随便映射, 否则上传时会出错.</li>
</ul>
</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div><div class="line">50</div><div class="line">51</div><div class="line">52</div><div class="line">53</div><div class="line">54</div><div class="line">55</div><div class="line">56</div><div class="line">57</div><div class="line">58</div><div class="line">59</div><div class="line">60</div><div class="line">61</div><div class="line">62</div><div class="line">63</div><div class="line">64</div><div class="line">65</div><div class="line">66</div><div class="line">67</div><div class="line">68</div><div class="line">69</div><div class="line">70</div><div class="line">71</div><div class="line">72</div><div class="line">73</div><div class="line">74</div><div class="line">75</div><div class="line">76</div><div class="line">77</div><div class="line">78</div><div class="line">79</div><div class="line">80</div><div class="line">81</div><div class="line">82</div><div class="line">83</div><div class="line">84</div><div class="line">85</div><div class="line">86</div><div class="line">87</div><div class="line">88</div><div class="line">89</div><div class="line">90</div><div class="line">91</div><div class="line">92</div><div class="line">93</div><div class="line">94</div><div class="line">95</div><div class="line">96</div><div class="line">97</div><div class="line">98</div><div class="line">99</div><div class="line">100</div><div class="line">101</div><div class="line">102</div><div class="line">103</div><div class="line">104</div><div class="line">105</div><div class="line">106</div><div class="line">107</div><div class="line">108</div><div class="line">109</div><div class="line">110</div><div class="line">111</div><div class="line">112</div><div class="line">113</div><div class="line">114</div><div class="line">115</div><div class="line">116</div><div class="line">117</div><div class="line">118</div><div class="line">119</div><div class="line">120</div><div class="line">121</div><div class="line">122</div><div class="line">123</div><div class="line">124</div><div class="line">125</div><div class="line">126</div><div class="line">127</div><div class="line">128</div><div class="line">129</div><div class="line">130</div><div class="line">131</div><div class="line">132</div><div class="line">133</div><div class="line">134</div><div class="line">135</div><div class="line">136</div><div class="line">137</div><div class="line">138</div><div class="line">139</div><div class="line">140</div><div class="line">141</div><div class="line">142</div><div class="line">143</div><div class="line">144</div><div class="line">145</div><div class="line">146</div><div class="line">147</div><div class="line">148</div><div class="line">149</div><div class="line">150</div><div class="line">151</div><div class="line">152</div><div class="line">153</div><div class="line">154</div><div class="line">155</div><div class="line">156</div><div class="line">157</div><div class="line">158</div><div class="line">159</div><div class="line">160</div><div class="line">161</div><div class="line">162</div><div class="line">163</div><div class="line">164</div><div class="line">165</div></pre></td><td class="code"><pre><div class="line">#</div><div class="line"># -v : 目录映射:</div><div class="line"># -p 8000:8000 服务访问端口</div><div class="line"># -p 8082:8082 此端口, 不可随便映射, 因为代码写死的, 映射成其他端口, 无法上传文件</div><div class="line"># 建议都使用默认的端口映射, 防止出错.</div><div class="line">docker run -d \</div><div class="line"> --name seafile-server \</div><div class="line"> -p 10001:10001 \</div><div class="line"> -p 12001:12001 \</div><div class="line"> -p 8900:8000 \</div><div class="line"> -p 8980:8080 \</div><div class="line"> -p 8082:8082 \</div><div class="line"> -v /iDockerShare/seafile:/opt/seafile \</div><div class="line"> -e autostart=true \</div><div class="line"> jenserat/seafile</div><div class="line"></div><div class="line"></div><div class="line"># 登录容器配置:</div><div class="line">docker exec -it seafile-server /bin/bash</div><div class="line"></div><div class="line">################################################</div><div class="line"># 如下部分, 在 docker 容器中操作</div><div class="line">################################################</div><div class="line"></div><div class="line"># 下载最新代码:</div><div class="line">docker >: download-seafile</div><div class="line"></div><div class="line"># 执行安装:</div><div class="line">docker >: /opt/seafile/seafile-server-5.*/setup-seafile.sh</div><div class="line">docker >: /opt/seafile/seafile-server-6.*/setup-seafile.sh</div><div class="line"></div><div class="line"># 安装日志:</div><div class="line">root@11f5e9ad841a:/opt/seafile/seafile-server-6.0.6# ./setup-seafile.sh</div><div class="line">-----------------------------------------------------------------</div><div class="line">This script will guide you to config and setup your seafile server.</div><div class="line"></div><div class="line">Make sure you have read seafile server manual at</div><div class="line"></div><div class="line"> https://github.com/haiwen/seafile/wiki</div><div class="line"></div><div class="line">Note: This script will guide your to setup seafile server using sqlite3,</div><div class="line">which may have problems if your disk is on a NFS/CIFS/USB.</div><div class="line">In these cases, we sugguest you setup seafile server using MySQL.</div><div class="line"></div><div class="line">Press [ENTER] to continue</div><div class="line">-----------------------------------------------------------------</div><div class="line"></div><div class="line"></div><div class="line">Checking packages needed by seafile ...</div><div class="line"></div><div class="line">Checking python on this machine ...</div><div class="line">Find python: python2.7</div><div class="line"></div><div class="line"> Checking python module: setuptools ... Done.</div><div class="line"> Checking python module: python-imaging ... Done.</div><div class="line"> Checking python module: python-sqlite3 ... Done.</div><div class="line"></div><div class="line">Checking for sqlite3 ...Done.</div><div class="line"></div><div class="line">Checking Done.</div><div class="line"></div><div class="line"></div><div class="line">What would you like to use as the name of this seafile server?</div><div class="line">Your seafile users will be able to see the name in their seafile client.</div><div class="line">You can use a-z, A-Z, 0-9, _ and -, and the length should be 3 ~ 15</div><div class="line">[server name]: jolly-seafile</div><div class="line"></div><div class="line">What is the ip or domain of this server?</div><div class="line">For example, www.mycompany.com, or, 192.168.1.101</div><div class="line"></div><div class="line">[This server's ip or domain]: 192.168.0.100</div><div class="line"></div><div class="line">Where would you like to store your seafile data?</div><div class="line">Note: Please use a volume with enough free space.</div><div class="line">[default: /opt/seafile/seafile-data ]</div><div class="line"></div><div class="line">What tcp port do you want to use for seafile fileserver?</div><div class="line">8082 is the recommended port.</div><div class="line">[default: 8082 ]</div><div class="line"></div><div class="line"></div><div class="line">This is your config information:</div><div class="line"></div><div class="line">server name: jolly-seafile</div><div class="line">server ip/domain: 192.168.0.100</div><div class="line">seafile data dir: /opt/seafile/seafile-data</div><div class="line">fileserver port: 8082</div><div class="line"></div><div class="line">If you are OK with the configuration, press [ENTER] to continue.</div><div class="line"></div><div class="line">Generating ccnet configuration in /opt/seafile/ccnet...</div><div class="line"></div><div class="line">done</div><div class="line">Successly create configuration dir /opt/seafile/ccnet.</div><div class="line"></div><div class="line">Generating seafile configuration in /opt/seafile/seafile-data ...</div><div class="line"></div><div class="line">Done.</div><div class="line"></div><div class="line">-----------------------------------------------------------------</div><div class="line">Seahub is the web interface for seafile server.</div><div class="line">Now let's setup seahub configuration. Press [ENTER] to continue</div><div class="line">-----------------------------------------------------------------</div><div class="line"></div><div class="line">Creating seahub database now, it may take one minute, please wait...</div><div class="line"></div><div class="line">Done.</div><div class="line"></div><div class="line">creating seafile-server-latest symbolic link ... done</div><div class="line"></div><div class="line"></div><div class="line">-----------------------------------------------------------------</div><div class="line">Your seafile server configuration has been completed successfully.</div><div class="line">-----------------------------------------------------------------</div><div class="line"></div><div class="line">run seafile server: ./seafile.sh { start | stop | restart }</div><div class="line">run seahub server: ./seahub.sh { start <port> | stop | restart <port> }</div><div class="line"></div><div class="line">-----------------------------------------------------------------</div><div class="line">If the server is behind a firewall, remember to open these tcp ports:</div><div class="line">-----------------------------------------------------------------</div><div class="line"></div><div class="line">port of seafile fileserver: 8082</div><div class="line">port of seahub: 8000</div><div class="line"></div><div class="line">When problems occur, refer to</div><div class="line"></div><div class="line"> https://github.com/haiwen/seafile/wiki</div><div class="line"></div><div class="line">for more information.</div><div class="line"></div><div class="line"></div><div class="line"># 容器中启动服务: start the seafile controller process.</div><div class="line">docker >: /opt/seafile/seafile-server-6.*/seafile.sh start</div><div class="line"></div><div class="line">root@11f5e9ad841a:/opt/seafile/seafile-server-6.0.6# /opt/seafile/seafile-server-6.*/seafile.sh start</div><div class="line"></div><div class="line">Seafile controller is already running, pid 1935</div><div class="line"></div><div class="line"></div><div class="line"># 容器中启动服务: for configuring the web UI.</div><div class="line">docker >: /opt/seafile/seafile-server-6.*/seahub.sh start</div><div class="line"></div><div class="line">root@11f5e9ad841a:/opt/seafile/seafile-server-6.0.6# /opt/seafile/seafile-server-6.*/seahub.sh start</div><div class="line"></div><div class="line">LANG is not set in ENV, set to en_US.UTF-8</div><div class="line">LC_ALL is not set in ENV, set to en_US.UTF-8</div><div class="line">Seahub is already running.</div><div class="line"></div><div class="line"></div><div class="line"># 设置管理员帐号:(重置用户)</div><div class="line">docker >: /opt/seafile/seafile-server-6.*/reset-admin.sh</div><div class="line"></div><div class="line">root@11f5e9ad841a:/opt/seafile/seafile-server-6.0.6# ./reset-admin.sh</div><div class="line">E-mail address: [email protected]</div><div class="line">Password:</div><div class="line">Password (again):</div><div class="line">Superuser created successfully.</div><div class="line"></div><div class="line"></div><div class="line"># 配置完成, 退出容器:</div><div class="line">docker >: exit</div><div class="line"></div><div class="line"># 浏览器访问:</div><div class="line"># localhost:8900</div></pre></td></tr></table></figure>
<h3 id="浏览器登录访问"><a href="#浏览器登录访问" class="headerlink" title="浏览器登录访问:"></a>浏览器登录访问:</h3><ul>
<li><a href="http://0.0.0.0:8900/accounts/login/?next=/" target="_blank" rel="external">0.0.0.0:8900</a></li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div></pre></td><td class="code"><pre><div class="line"># 查看容器状态:</div><div class="line">-> % docker ps</div><div class="line">CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES</div><div class="line">11f5e9ad841a jenserat/seafile "/sbin/my_init" 3 hours ago Up 3 hours 0.0.0.0:10001->10001/tcp, 0.0.0.0:12001->12001/tcp, 0.0.0.0:8900->8000/tcp, 0.0.0.0:8980->8080/tcp, 0.0.0.0:8982->8082/tcp seafile-server</div><div class="line"></div><div class="line"># 关闭容器:</div><div class="line">-> % docker stop seafile-server</div><div class="line"></div><div class="line"># 启动容器:</div><div class="line">-> % docker start seafile-server</div></pre></td></tr></table></figure>
<h3 id="常用配置参数修改"><a href="#常用配置参数修改" class="headerlink" title="常用配置参数修改:"></a>常用配置参数修改:</h3><ul>
<li><a href="https://manual-cn.seafile.com/config/seafile-conf.html" target="_blank" rel="external">seafile.conf 配置 </a></li>
<li>/opt/seafile/conf/seafile.conf</li>
</ul>
<ul>
<li>上传/下载大小限制:</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div></pre></td><td class="code"><pre><div class="line">[fileserver]</div><div class="line">port=8082</div><div class="line">#port=10062</div><div class="line"></div><div class="line">###################################</div><div class="line"></div><div class="line">[history]</div><div class="line"># 文件修改历史保存期限(单位为“天”)</div><div class="line">keep_days = 150</div><div class="line"></div><div class="line"></div><div class="line">[quota]</div><div class="line"># 用户默认空间上限</div><div class="line"># 单位为 GB</div><div class="line">default = 20</div><div class="line"></div><div class="line"></div><div class="line">[fileserver]</div><div class="line"># 上传文件最大为2000M.</div><div class="line">max_upload_size=2000</div><div class="line"></div><div class="line"># 最大下载目录限制为2000M.</div><div class="line">max_download_dir_size=2000</div></pre></td></tr></table></figure>
<ul>
<li>邮件通知配置:</li>
<li><a href="https://manual-cn.seafile.com/config/sending_email.html" target="_blank" rel="external">发送邮件提醒</a></li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div></pre></td><td class="code"><pre><div class="line"></div><div class="line"># QQ 邮箱示例:</div><div class="line"></div><div class="line">EMAIL_USE_TLS = False</div><div class="line">EMAIL_HOST = 'smtp.exmail.qq.com'</div><div class="line">EMAIL_HOST_USER = '[email protected]'</div><div class="line">EMAIL_HOST_PASSWORD = 'password'</div><div class="line">EMAIL_PORT = '25'</div><div class="line">DEFAULT_FROM_EMAIL = EMAIL_HOST_USER</div><div class="line">SERVER_EMAIL = EMAIL_HOST_USER</div></pre></td></tr></table></figure>
<h2 id="参考"><a href="#参考" class="headerlink" title="参考:"></a>参考:</h2><ul>
<li><a href="http://www.jianshu.com/p/bd4b55b6d0cd" target="_blank" rel="external">云服务器之个人云存储的搭建(docker+seafile)</a></li>
</ul>
]]></content>
<summary type="html">
<p>本篇介绍: 通过 Docker 部署 Seafile.</p>
</summary>
<category term="Docker" scheme="http://hhstore.github.io/categories/Docker/"/>
<category term="Docker" scheme="http://hhstore.github.io/tags/Docker/"/>
<category term="Seafile" scheme="http://hhstore.github.io/tags/Seafile/"/>
</entry>
<entry>
<title>使用 Docker 部署 opengrok</title>
<link href="http://hhstore.github.io/2016/11/21/deploy-opengrok-by-docker/"/>
<id>http://hhstore.github.io/2016/11/21/deploy-opengrok-by-docker/</id>
<published>2016-11-21T15:12:10.000Z</published>
<updated>2016-12-05T08:11:13.965Z</updated>
<content type="html"><![CDATA[<p>本篇介绍: 通过 Docker 部署 opengrok.</p>
<a id="more"></a>
<h2 id="OpenGrok-简介"><a href="#OpenGrok-简介" class="headerlink" title="OpenGrok 简介:"></a>OpenGrok 简介:</h2><ul>
<li>OpenGrok特点:<ul>
<li>OpenGrok 是 一套开源的源码阅读工具, B/S 架构.</li>
<li>需要搭建服务器, 通过浏览器方式访问.</li>
</ul>
</li>
<li>部署方式:<ul>
<li>鉴于部署过程略繁琐, 且在 Mac/Windows 平台下, 不如 Linux 方便</li>
<li>很自然想到使用 docker 来解决.</li>
</ul>
</li>
<li><a href="http://opengrok.github.io/OpenGrok/" target="_blank" rel="external">OpenGrok</a></li>
<li>其他源码阅读工具:<ul>
<li>IDE:<ul>
<li>VS (win, 近期有 Mac 版本要放出)</li>
<li>JB 家全家桶 (跨平台)</li>
<li>eclipse (跨平台)</li>
</ul>
</li>
<li>source insight (win)</li>
</ul>
</li>
<li><a href="https://www.zhihu.com/question/33505693/answer/132224974" target="_blank" rel="external">有没有好的大型项目代码浏览工具?- 知乎</a><ul>
<li>此回答, <code>韦大</code>安利.</li>
<li>顺手来测试一下效果.</li>
</ul>
</li>
</ul>
<h2 id="docker-镜像拉取"><a href="#docker-镜像拉取" class="headerlink" title="docker 镜像拉取:"></a>docker 镜像拉取:</h2><ul>
<li><a href="https://store.docker.com/community/images/scue/docker-opengrok" target="_blank" rel="external">docker-opengrok 镜像地址:</a><ul>
<li><a href="https://github.com/scue/docker-opengrok" target="_blank" rel="external">docker-opengrok - github</a></li>
<li>参考说明文档</li>
</ul>
</li>
<li>国内直接拉取 docker 官方 store 的镜像非常慢.使用国内加速器. <ul>
<li><a href="https://www.daocloud.io/mirror#accelerator-doc" target="_blank" rel="external">daocloud - 配置 Docker 加速器</a><ul>
<li>本文使用 daocloud 加速拉取, 仅保证当前 daocloud 服务是 OK 的.</li>
<li>如不可用, 可尝试国内其他几家代理加速.</li>
</ul>
</li>
<li><a href="https://c.163.com/wiki/index.php?title=DockerHub%E9%95%9C%E5%83%8F%E5%8A%A0%E9%80%9F" target="_blank" rel="external">网易-DockerHub镜像加速</a></li>
<li><a href="http://blog.csdn.net/bwlab/article/details/50542261" target="_blank" rel="external">阿里云加速</a></li>
</ul>
</li>
</ul>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div></pre></td><td class="code"><pre><div class="line"></div><div class="line"><span class="comment"># 镜像拉取:</span></div><div class="line">docker pull scue/docker-opengrok:latest</div><div class="line"></div><div class="line"><span class="comment"># 使用 daocloud 代理加速拉取, 比想象的快.</span></div><div class="line"><span class="comment"># 查看拉取结果:</span></div><div class="line">-> % docker images</div><div class="line">REPOSITORY TAG IMAGE ID CREATED SIZE</div><div class="line">scue/docker-opengrok latest 93c3cb01d8cb 15 months ago 387 MB</div></pre></td></tr></table></figure>
<h2 id="部署"><a href="#部署" class="headerlink" title="部署:"></a>部署:</h2><h3 id="启动容器"><a href="#启动容器" class="headerlink" title="启动容器:"></a>启动容器:</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div><div class="line">50</div><div class="line">51</div><div class="line">52</div><div class="line">53</div><div class="line">54</div><div class="line">55</div><div class="line">56</div><div class="line">57</div><div class="line">58</div><div class="line">59</div><div class="line">60</div><div class="line">61</div><div class="line">62</div><div class="line">63</div><div class="line">64</div><div class="line">65</div><div class="line">66</div><div class="line">67</div><div class="line">68</div><div class="line">69</div><div class="line">70</div><div class="line">71</div><div class="line">72</div><div class="line">73</div><div class="line">74</div><div class="line">75</div><div class="line">76</div><div class="line">77</div><div class="line">78</div><div class="line">79</div><div class="line">80</div><div class="line">81</div></pre></td><td class="code"><pre><div class="line"></div><div class="line"><span class="comment"># 运行一次, 退出时,自动删除容器:</span></div><div class="line"><span class="comment"># - 此容器, 默认挂载了源码目录, 自动建索引</span></div><div class="line"><span class="comment"># - 注意:</span></div><div class="line"><span class="comment"># - 此镜像构建的容器, 当挂载了源码目录, 会自动建索引</span></div><div class="line"><span class="comment"># - 故不要挂载太大的目录, 不然建索引很慢.</span></div><div class="line"><span class="comment"># - 非常耗 CPU.</span></div><div class="line">sudo docker run --rm \</div><div class="line"> -v /path/to/<span class="built_in">source</span>:/src \</div><div class="line"> -v /path/to/opengrok_data:/data \</div><div class="line"> -p 8888:8080 \</div><div class="line"> scue/docker-opengrok</div><div class="line"></div><div class="line"></div><div class="line"><span class="comment">###################################################</span></div><div class="line"><span class="comment"># 容器启动方式 1: 运行完, 自动删除</span></div><div class="line"><span class="comment"># 适合:</span></div><div class="line"><span class="comment"># - 单个项目阅读</span></div><div class="line"><span class="comment">#</span></div><div class="line"><span class="comment"># 挂载目录:</span></div><div class="line"><span class="comment"># - 项目源码目录: /Users/hhstore/iGit/iGitRepoRead</span></div><div class="line"><span class="comment"># - 索引目录: /Users/hhstore/iGit/iSpace/iDocker/shareDir/opengrok</span></div><div class="line"><span class="comment">#</span></div><div class="line"><span class="comment">###################################################</span></div><div class="line">sudo docker run --rm \</div><div class="line"> -v /Users/hhstore/iGit/iGitRepoRead/iPython/Libs/aiohttp:/src \</div><div class="line"> -v /Users/hhstore/iGit/iSpace/iDocker/shareDir/opengrok:/data \</div><div class="line"> -p 8889:8080 \</div><div class="line"> scue/docker-opengrok</div><div class="line"></div><div class="line"></div><div class="line">docker run --name opengrok-server \</div><div class="line"> -v /Users/hhstore/iGit/iGitRepoRead:/src \</div><div class="line"> -v /Users/hhstore/iGit/iSpace/iDocker/shareDir/opengrok:/data \</div><div class="line"> -p 8888:8080 \</div><div class="line"> <span class="_">-d</span> scue/docker-opengrok </div><div class="line"></div><div class="line"></div><div class="line"><span class="comment">###################################################</span></div><div class="line"><span class="comment"># 容器启动方式 2: 长期保持</span></div><div class="line"><span class="comment"># 适合:</span></div><div class="line"><span class="comment"># - 批量项目阅读</span></div><div class="line"><span class="comment"># - 建索引非常耗时, 耗 CPU</span></div><div class="line"><span class="comment">#</span></div><div class="line"><span class="comment"># 挂载目录:</span></div><div class="line"><span class="comment"># - 项目源码目录: /Users/hhstore/iGit/iGitRepoRead</span></div><div class="line"><span class="comment"># - 索引目录: /Users/hhstore/iGit/iSpace/iDocker/shareDir/opengrok</span></div><div class="line"><span class="comment">###################################################</span></div><div class="line"></div><div class="line"><span class="comment"># 后台进程方式启动:</span></div><div class="line">docker run --name opengrok-server \</div><div class="line"> -v /Users/hhstore/iGit/iGitRepoRead:/src \</div><div class="line"> -v /Users/hhstore/iGit/iSpace/iDocker/shareDir/opengrok:/data \</div><div class="line"> -p 8888:8080 \</div><div class="line"> <span class="_">-d</span> scue/docker-opengrok </div><div class="line"></div><div class="line"><span class="comment"># 浏览器查看是否正常启动</span></div><div class="line"></div><div class="line"><span class="comment">###################################################</span></div><div class="line"><span class="comment"># 容器中处理:</span></div><div class="line"><span class="comment">###################################################</span></div><div class="line"><span class="comment"># 登录到已创建容器:</span></div><div class="line">docker <span class="built_in">exec</span> -it opengrok-server bash</div><div class="line"></div><div class="line"><span class="comment"># 容器中操作:</span></div><div class="line">root@0a75d4fe98d1:/usr/<span class="built_in">local</span>/tomcat<span class="comment"># pwd</span></div><div class="line">/usr/<span class="built_in">local</span>/tomcat</div><div class="line"></div><div class="line"><span class="comment"># 切换到 opengrok 目录:</span></div><div class="line"><span class="built_in">cd</span> /opengrok*</div><div class="line">root@0a75d4fe98d1:/opengrok-0.12.1.5<span class="comment">#</span></div><div class="line"></div><div class="line"><span class="comment"># 容器中源码目录为:</span></div><div class="line"><span class="comment"># - /src 下</span></div><div class="line"><span class="comment"># - 示例目录: /src/iPython/Libs/aiohttp</span></div><div class="line"></div><div class="line"><span class="comment"># 源码初始化索引:</span></div><div class="line">/opengrok-0.12.1.5/bin/OpenGrok index /src</div><div class="line"></div><div class="line"><span class="comment"># 单个具体项目源码:</span></div><div class="line">/opengrok-0.12.1.5/bin/OpenGrok index /src/iPython/Libs/aiohttp</div></pre></td></tr></table></figure>
<h3 id="浏览器访问"><a href="#浏览器访问" class="headerlink" title="浏览器访问:"></a>浏览器访问:</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line"># 浏览器:</div><div class="line">http://localhost:8888/.</div><div class="line"></div><div class="line">#</div><div class="line">http://localhost:8888/source/</div></pre></td></tr></table></figure>
<ul>
<li><p>docker 容器启动成功<br><img src="https://github.com/hhstore/hhstore.github.io/blob/master/images/2016/11/20161121-001.png?raw=true" alt="效果图"></p>
</li>
<li><p>项目源码阅读目录:</p>
</li>
</ul>
<p><img src="https://github.com/hhstore/hhstore.github.io/blob/master/images/2016/11/20161121-002.png?raw=true" alt="效果图"></p>
<ul>
<li>代码阅读效果:</li>
</ul>
<p><img src="https://github.com/hhstore/hhstore.github.io/blob/master/images/2016/11/20161121-004.png?raw=true" alt="效果图"></p>
<h3 id="容器关闭-清理"><a href="#容器关闭-清理" class="headerlink" title="容器关闭/清理:"></a>容器关闭/清理:</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div></pre></td><td class="code"><pre><div class="line"></div><div class="line"><span class="comment"># 查看:</span></div><div class="line">-> % docker ps</div><div class="line">CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES</div><div class="line">0a75d4fe98d1 scue/docker-opengrok <span class="string">"/scripts/start.sh"</span> 5 hours ago Up 5 hours 0.0.0.0:8888->8080/tcp opengrok-server</div><div class="line"></div><div class="line"><span class="comment"># 退出:</span></div><div class="line">-> % docker stop opengrok-server</div><div class="line">opengrok-server</div><div class="line"></div><div class="line"><span class="comment"># 删除容器:</span></div><div class="line"><span class="comment"># - 并不会删除源代码挂载目录</span></div><div class="line">-> % docker rm -v opengrok-server</div><div class="line">opengrok-server</div></pre></td></tr></table></figure>
<h2 id="示例访问项目"><a href="#示例访问项目" class="headerlink" title="示例访问项目:"></a>示例访问项目:</h2><ul>
<li><a href="https://github.com/KeepSafe/aiohttp/" target="_blank" rel="external">aiohttp - github</a><ul>
<li><a href="http://aiohttp.readthedocs.io/en/stable/" target="_blank" rel="external">aiohttp - 官方文档</a></li>
<li>python 项目</li>
<li>git clone 方式获取.</li>
<li>docker 中对应路径: <code>/src/iPython/Libs/aiohttp</code></li>
<li>注意<code>opengrok</code> 建立好索引之后的目录结构, 与此对应</li>
</ul>
</li>
<li><p>原本以为需要单独在容器中启动建索引命令, 后发现该 image 会自动执行.</p>
</li>
<li><p>示例项目目录截图:<br><img src="https://github.com/hhstore/hhstore.github.io/blob/master/images/2016/11/20161121-003.png?raw=true" alt="效果图"></p>
</li>
</ul>
<h2 id="总结"><a href="#总结" class="headerlink" title="总结:"></a>总结:</h2><ul>
<li>使用体验并没有比 source insight / understand / pycharm 等JB 全家桶更好.</li>
<li>优点:<ul>
<li>浏览器打开, 似乎是可以iPad, 手机等阅读? (意义不大)</li>
<li>搜索功能比较完善, 不过还不是 语义分析, 跟 pycharm 比, 弱爆</li>
<li>对 PHP, Ruby 等支持较好</li>
</ul>
</li>
<li>缺点:<ul>
<li>当前版本, 对 Python 支持并不好, 对 Golang 不支持(计划在下一版本中)</li>
<li>Python, Nodejs 等项目, 需要从项目根目录开始建索引.(不友好)</li>
<li>索引资源, 几百 MB 吧. 并不比 pycharm 等好到哪里去.</li>
</ul>
</li>
<li>对于新工具, 要去了解, 尝试.<ul>
<li>只有使用之后, 才有发言权.</li>
<li>究竟是更好, 还是没那么好. 用过才知道.</li>
<li>探索的过程, 哪怕并没有预期那么好, 也仍然是有收获的.</li>
</ul>
</li>
<li>综合评价:<ul>
<li>当前的版本, 仍然不值得用.</li>
<li>对比: pycharm 等, 无明显亮点.</li>
</ul>
</li>
</ul>
<h2 id="参考"><a href="#参考" class="headerlink" title="参考:"></a>参考:</h2><ul>
<li><a href="http://www.voidcn.com/blog/u013656962/article/p-6131858.html" target="_blank" rel="external">Ubuntu下OpenGrok的安装配置</a></li>
</ul>
]]></content>
<summary type="html">
<p>本篇介绍: 通过 Docker 部署 opengrok.</p>
</summary>
<category term="Docker" scheme="http://hhstore.github.io/categories/Docker/"/>
<category term="Docker" scheme="http://hhstore.github.io/tags/Docker/"/>
<category term="opengrok" scheme="http://hhstore.github.io/tags/opengrok/"/>
<category term="code-reading" scheme="http://hhstore.github.io/tags/code-reading/"/>
</entry>
<entry>
<title>使用Travis CI自动部署你的Hexo博客到Github</title>
<link href="http://hhstore.github.io/2016/11/16/github-hexo-blog-auto-deploy/"/>
<id>http://hhstore.github.io/2016/11/16/github-hexo-blog-auto-deploy/</id>
<published>2016-11-16T14:15:31.000Z</published>
<updated>2016-12-05T08:11:13.965Z</updated>
<content type="html"><![CDATA[<p>本篇详细介绍使用 Travis CI 自动部署 Hexo 博客到 Github.</p>
<a id="more"></a>
<h2 id="部署说明"><a href="#部署说明" class="headerlink" title="部署说明:"></a>部署说明:</h2><ul>
<li>本博客, 当前已成功使用 <code>Travis CI</code> 配合 <code>github</code> 多分支, 实现自动部署.</li>
<li>详细参考我博客仓库: <ul>
<li><a href="https://github.com/hhstore/hhstore.github.io/tree/blog_source" target="_blank" rel="external">blog_source 分支</a> </li>
<li>本分支, 包含博客全部资源文件, 配置文件.</li>
</ul>
</li>
</ul>
<h3 id="博客仓库结构"><a href="#博客仓库结构" class="headerlink" title="博客仓库结构:"></a>博客仓库结构:</h3><ul>
<li><code>hhstore.github.io</code> 仓库:<ul>
<li><code>master</code> 分支: 自动发布分支, <code>Travis CI</code> 自动生成.</li>
<li><code>blog_source</code> 分支: 博客源文件.</li>
</ul>
</li>
</ul>
<h3 id="博客发布流程"><a href="#博客发布流程" class="headerlink" title="博客发布流程:"></a>博客发布流程:</h3><pre><code>- 本地 git 仓库, 拉取 `blog_source` 分支
- 在此分支, 编辑博客文档.
- 推送本地文档, 到 github.
- `Travis CI` 通过钩子, 自动触发`发布流程`.
- `Travis CI` 自动把最新博客发布到 `master` 分支.
</code></pre><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line"><span class="comment"># 执行推送, 其他全自动:</span></div><div class="line">git push blog_source blog_source</div></pre></td></tr></table></figure>
<h2 id="部署参考"><a href="#部署参考" class="headerlink" title="部署参考:"></a>部署参考:</h2><ul>
<li>具体部署过程, 请参考此篇, 步骤非常详细, 没有问题.<ul>
<li><a href="http://www.jianshu.com/p/e22c13d85659" target="_blank" rel="external">手把手教你使用Travis CI自动部署你的Hexo博客到Github上</a></li>
</ul>
</li>
<li>可参考我博客的 <code>blog_source</code> 分支配置文件.</li>
</ul>
<h2 id="部署提醒"><a href="#部署提醒" class="headerlink" title="部署提醒:"></a>部署提醒:</h2><ul>
<li>个人博客, 对 博客分支的 <code>token 环境变量</code>, 作了修改.</li>
<li>小坑: <ul>
<li>.travis.yml 文件里最后的 git 仓库访问配置是 HTTTPS 方式, 不是 GIT 方式.</li>
</ul>
</li>
</ul>
]]></content>
<summary type="html">
<p>本篇详细介绍使用 Travis CI 自动部署 Hexo 博客到 Github.</p>
</summary>
<category term="Hexo" scheme="http://hhstore.github.io/categories/Hexo/"/>
<category term="Hexo" scheme="http://hhstore.github.io/tags/Hexo/"/>
<category term="github" scheme="http://hhstore.github.io/tags/github/"/>
<category term="Next" scheme="http://hhstore.github.io/tags/Next/"/>
<category term="blog" scheme="http://hhstore.github.io/tags/blog/"/>
<category term="TravisCI" scheme="http://hhstore.github.io/tags/TravisCI/"/>
</entry>
<entry>
<title>Hexo 部署博客踩坑记录</title>
<link href="http://hhstore.github.io/2016/11/15/github-hexo-update-shits/"/>
<id>http://hhstore.github.io/2016/11/15/github-hexo-update-shits/</id>
<published>2016-11-15T21:15:31.000Z</published>
<updated>2016-12-05T08:11:13.965Z</updated>
<content type="html"><![CDATA[<p>本篇详细介绍 Hexo 部署博客, 踩坑记录.</p>
<a id="more"></a>
<h2 id="前言"><a href="#前言" class="headerlink" title="前言:"></a>前言:</h2><ul>
<li>使用 github + hexo 部署的博客1年多, 稳定运行很久.</li>
<li>博客访问量也有 5000 +.</li>
<li>结果最近本地电脑的目录, 不明原因的被误删除很多文件.</li>
<li>部分项目的 lib 出问题, 包括这个博客.</li>
<li>结果, hexo 不能用, 想都没想, 就重装了下 hexo, 然后, 像往常一样 <code>hexo -g d</code>, 推博客, 推上去, 发现博客挂了.</li>
<li>妈蛋, 用 chrome 看了下, 怀疑是 ES6 语法不认的问题.</li>
<li>考虑回滚, 结果默默奇妙的发现, 某次 push 之后, github 本参考的 commit 提交记录变成 2条. 之前的 几十条 commit 被吃了!</li>
<li>what a fuck !</li>
</ul>
<h2 id="问题根源"><a href="#问题根源" class="headerlink" title="问题根源:"></a>问题根源:</h2><ul>
<li>github 自己的 bug.GitHub Pages 更新 Jekyll 3.3</li>
<li><a href="https://github.com/blog/2277-what-s-new-in-github-pages-with-jekyll-3-3" target="_blank" rel="external">What’s new in GitHub Pages with Jekyll 3.3</a></li>
<li>导致 hexo 的 <code>Next 主题</code> 插件目录: <code>venders目录</code> 被屏蔽, 目录资源变404</li>
</ul>
<h2 id="解决办法"><a href="#解决办法" class="headerlink" title="解决办法:"></a>解决办法:</h2><ul>
<li><code>Next 主题</code>插件, issue 里, 有小伙伴给 github 官方去邮件, 回复解决办法: <a href="https://github.com/iissnan/hexo-theme-next/issues/1220" target="_blank" rel="external">issue 1220</a></li>
<li>回顾:<a href="https://github.com/iissnan/hexo-theme-next/issues/1214#issuecomment-260843583" target="_blank" rel="external">hexo-theme-next : issue1214</a></li>
<li>看 issue 快爆炸了, 被坑的人不再少数. 莫名喜感.</li>
<li><a href="https://jetyu.github.io/2016/11/04/20161104/" target="_blank" rel="external">Hexo博客部署到主页只显示部分内容</a><ul>
<li>这哥们是 11-04 号踩坑, 我是15号. ==!</li>
</ul>
</li>
<li>折腾这一番, 顺便把 hexo 和 Next 主题等都升级到最新版本了. 增加了些新功能.</li>
</ul>
<h2 id="Next-v5-0-1-主题配置"><a href="#Next-v5-0-1-主题配置" class="headerlink" title="Next v5.0.1 主题配置:"></a>Next v5.0.1 主题配置:</h2><h3 id="配置统计"><a href="#配置统计" class="headerlink" title="配置统计:"></a>配置统计:</h3><ul>
<li>如下配置, 都可以在新版本通过配置选项开启.</li>
<li><a href="http://theme-next.iissnan.com/third-party-services.html#analytics-busuanzi" target="_blank" rel="external">不蒜子统计</a><ul>
<li>开启配置选项</li>
</ul>
</li>
<li><a href="http://theme-next.iissnan.com/getting-started.html#sidebar-settings" target="_blank" rel="external">设置「侧栏」</a><ul>
<li>永久开启侧栏</li>
</ul>
</li>
<li><a href="http://theme-next.iissnan.com/getting-started.html#comment-system-duoshuo" target="_blank" rel="external">多说评论</a></li>
<li><a href="http://theme-next.iissnan.com/theme-settings.html#duoshuo-ua" target="_blank" rel="external">多说评论显示 UA</a></li>
<li><a href="http://theme-next.iissnan.com/theme-settings.html#reward" target="_blank" rel="external">打赏功能</a><ul>
<li>微信打赏</li>
</ul>
</li>
<li><a href="http://theme-next.iissnan.com/getting-started.html#search-system-swiftype" target="_blank" rel="external">Swiftype 搜索</a></li>
<li><a href="http://theme-next.iissnan.com/theme-settings.html#volunteer-404" target="_blank" rel="external">腾讯公益404页面</a></li>
</ul>
<h2 id="参考"><a href="#参考" class="headerlink" title="参考:"></a>参考:</h2><ul>
<li><a href="http://theme-next.iissnan.com/getting-started.html" target="_blank" rel="external">Hexo - Next 主题官方文档</a></li>
</ul>
]]></content>
<summary type="html">
<p>本篇详细介绍 Hexo 部署博客, 踩坑记录.</p>
</summary>
<category term="Hexo" scheme="http://hhstore.github.io/categories/Hexo/"/>
<category term="Hexo" scheme="http://hhstore.github.io/tags/Hexo/"/>
<category term="github" scheme="http://hhstore.github.io/tags/github/"/>
<category term="Next" scheme="http://hhstore.github.io/tags/Next/"/>
<category term="blog" scheme="http://hhstore.github.io/tags/blog/"/>
</entry>
<entry>
<title>Mac 平台: 使用 vscode 搭建 Golang 开发环境</title>
<link href="http://hhstore.github.io/2016/11/15/mac-osx-use-vscode-config-golang-env/"/>
<id>http://hhstore.github.io/2016/11/15/mac-osx-use-vscode-config-golang-env/</id>
<published>2016-11-15T16:42:13.000Z</published>
<updated>2016-12-05T08:11:13.965Z</updated>
<content type="html"><![CDATA[<p>本篇介绍 Mac 平台 使用 virtual studio code 搭建 golang 开发环境, 包含 debug 环境的配置.</p>
<a id="more"></a>
<h2 id="1-vscode-简介"><a href="#1-vscode-简介" class="headerlink" title="1. vscode 简介:"></a>1. vscode 简介:</h2><h3 id="1-1-vscode-亮点"><a href="#1-1-vscode-亮点" class="headerlink" title="1.1 vscode 亮点:"></a>1.1 vscode 亮点:</h3><ul>
<li>Microsoft 开发, 高质量, 高颜值</li>
<li>启动速度比 atom 快, 资源占用少</li>
<li>插件比 atom 好用, 官方插件库下载安装快</li>
<li>对 Python, golang 支持够好</li>
<li>集成终端好用</li>
<li>debug 功能好用(简直是 mini 的 IDE)</li>
</ul>
<h3 id="1-2-对比-IDE"><a href="#1-2-对比-IDE" class="headerlink" title="1.2 对比 IDE:"></a>1.2 对比 IDE:</h3><ul>
<li>之前一直使用: pycharm + go 插件, 搭配开发 golang.</li>
<li>优点: <ul>
<li>go 插件的 debug 功能,比较强大</li>
<li>pycharm 的有强大的代码跳转,补全功能.</li>
</ul>
</li>
<li>缺点:<ul>
<li>pycharm 每次建立项目索引比较慢.</li>
<li>启动比较笨重, 有些时候只是写测试代码, 不太需要启动 IDE.</li>
</ul>
</li>
<li>vscode 的优点, 刚好可以弥补 pycharm 的不足.</li>
<li>以后搭配2者作开发.很方便.</li>
</ul>
<h3 id="1-3-技巧操作"><a href="#1-3-技巧操作" class="headerlink" title="1.3 技巧操作:"></a>1.3 技巧操作:</h3><ul>
<li>列编辑模式: ultraedit 中特色功能<ul>
<li>快捷键: <code>shift + alt + 鼠标左键</code></li>
<li>vscode 版本 > 1.2.0</li>
</ul>
</li>
<li>Ctrl+P 模式: (Mac 是 <code>CMD+P</code>)<ul>
<li>直接输入文件名,快速打开文件</li>
<li><code>:</code> 跳转到<code>行数</code>,也可以<code>Ctrl+G</code>直接进入(Mac 是 <code>CMD+G</code>)</li>
<li><code>@</code> 跳转到symbol(搜索变量或者函数),也可以Ctrl+Shift+O直接进入</li>
<li><code>@:</code>根据分类跳转symbol,查找属性或函数,也可以Ctrl+Shift+O后输入:进入</li>
<li><code>#</code> 根据名字查找symbol,也可以Ctrl+T</li>
</ul>
</li>
<li>编辑:<ul>
<li>上下移动一行: <code>Alt+Up</code> 或 <code>Alt+Down</code></li>
<li>向上向下复制一行: <code>Shift+Alt+Up</code> 或 <code>Shift+Alt+Down</code></li>
<li>代码格式化:<code>Shift+Alt+F</code>,或 <code>Ctrl+Shift+P</code> 后输入 <code>format code</code></li>
<li>更改代码文件语言模式: 显示–>状态栏显示.</li>
</ul>
</li>
<li>代码重构:<ul>
<li>跳转到定义处:<code>F12</code></li>
<li>列出所有的引用:<code>Shift+F12</code></li>
<li>重命名:比如要修改一个方法名,可以选中后按F2,输入新的名字,回车,会发现所有的文件都修改过了。</li>
</ul>
</li>
<li>显示相关:<ul>
<li>侧边栏显/隐:<code>Ctrl+B</code></li>
<li>预览markdown: <code>Ctrl+Shift+V</code></li>
<li>双栏对比: <code>Ctrl+\</code></li>
</ul>
</li>
<li>皮肤预览:<ul>
<li>f1后输入 theme 回车,然后上下键即可预览</li>
</ul>
</li>
<li><a href="https://nshen.net/article/2015-11-20/vscode/" target="_blank" rel="external">学会用好 Visual Studio Code</a></li>
<li><a href="http://geek.csdn.net/news/detail/94108" target="_blank" rel="external">VS Code tips and tricks 翻译</a></li>
<li><a href="https://github.com/Microsoft/vscode-tips-and-tricks" target="_blank" rel="external">VS Code Tips and Tricks</a></li>
</ul>
<h2 id="2-vscode-安装"><a href="#2-vscode-安装" class="headerlink" title="2 vscode 安装:"></a>2 vscode 安装:</h2><ul>
<li>官网下载安装: <a href="https://code.visualstudio.com/" target="_blank" rel="external">vscode 官网</a></li>
<li>brew cask 安装:</li>
</ul>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div></pre></td><td class="code"><pre><div class="line"></div><div class="line"><span class="comment"># 安装:</span></div><div class="line">brew cask install visual-studio-code</div><div class="line"></div><div class="line"><span class="comment"># 查看 vscode 信息:</span></div><div class="line">-> % brew cask info visual-studio-code</div><div class="line"></div><div class="line">visual-studio-code: 1.3.1,e6b4afa53e9c0f54edef1673de9001e9f0f547ae</div><div class="line">Microsoft Visual Studio Code, VS Code</div><div class="line">https://code.visualstudio.com/</div><div class="line">Not installed</div><div class="line">https://github.com/caskroom/homebrew-cask/blob/master/Casks/visual-studio-code.rb</div><div class="line">==> Contents</div><div class="line"> Visual Studio Code.app (app)</div><div class="line"> /Applications/Visual Studio Code.app/Contents/Resources/app/bin/code (binary)</div></pre></td></tr></table></figure>
<h2 id="3-vscode-常用插件安装"><a href="#3-vscode-常用插件安装" class="headerlink" title="3 vscode 常用插件安装:"></a>3 vscode 常用插件安装:</h2><ul>
<li>基础插件:<ul>
<li>vscode-icons: 颜值, 彩色文件,目录</li>
<li>Material Theme Kit: 编辑器 UI 主题</li>
<li>visual studio code settings sync: 同步 vscode 配置文件</li>
</ul>
</li>
<li>开发必备:<ul>
<li>code runner: 执行 go, python,各种代码</li>
<li>beautify : 格式化代码</li>
<li>git history:</li>
<li>go: 开发必备</li>
<li>python: 开发必备</li>
<li>docker support:</li>
<li>debugger for chrome:</li>
<li>bootstrap3 snippets: </li>
<li>html snippets: 各种 补全用的 snippets, 官方插件库搜索添加.</li>
</ul>
</li>
<li>补充: <a href="https://www.zhihu.com/question/40640654" target="_blank" rel="external">Visual Studio Code有哪些你常用的插件?- 知乎</a></li>
</ul>
<h2 id="4-vscode-配置-golang-开发环境"><a href="#4-vscode-配置-golang-开发环境" class="headerlink" title="4. vscode 配置 golang 开发环境:"></a>4. vscode 配置 golang 开发环境:</h2><h3 id="4-1-安装-golang"><a href="#4-1-安装-golang" class="headerlink" title="4.1 安装 golang:"></a>4.1 安装 golang:</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div></pre></td><td class="code"><pre><div class="line"># 安装:</div><div class="line">brew install go</div><div class="line"></div><div class="line"># 查看安装成功:</div><div class="line">-> % go version</div><div class="line">go version go1.7.3 darwin/amd64</div></pre></td></tr></table></figure>
<h3 id="4-2-配置-golang-环境变量"><a href="#4-2-配置-golang-环境变量" class="headerlink" title="4.2 配置 golang 环境变量:"></a>4.2 配置 golang 环境变量:</h3><ul>
<li><code>GOPATH</code> : 必须设置</li>
<li><code>GOBIN</code>: 非必需, 但通常顺手设置.</li>
<li>设置办法: 添加到 zsh 的配置文件: <code>~/.zprofile</code></li>
<li>参考如下配置 <code>~/.zprofile</code>:</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div></pre></td><td class="code"><pre><div class="line"></div><div class="line">#######################################################</div><div class="line"># for Golang:</div><div class="line">#######################################################</div><div class="line"></div><div class="line">#-------------------------------</div><div class="line"># set GOPATH:</div><div class="line">#-------------------------------</div><div class="line"></div><div class="line"># go lib path:</div><div class="line">GO_LIB_PATH=${HOME}/iGit/iSpace/iGo/libdir</div><div class="line"></div><div class="line"># go user workspace:</div><div class="line">GO_WORK_PATH=${HOME}/iGit/iSpace/iGo/workdir</div><div class="line"></div><div class="line">export GOPATH=${GO_LIB_PATH}:${GO_WORK_PATH}</div><div class="line"></div><div class="line">#-------------------------------</div><div class="line"># set GOBIN:</div><div class="line">#-------------------------------</div><div class="line"></div><div class="line">export GOBIN="${GO_LIB_PATH}/bin:${GO_WORK_PATH}/bin"</div><div class="line">export PATH="${PATH}:${GOBIN}"</div></pre></td></tr></table></figure>
<ul>
<li>检查 golang 环境变量设置成功:</li>
</ul>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div></pre></td><td class="code"><pre><div class="line"></div><div class="line"><span class="comment"># 查看环境变量:</span></div><div class="line"><span class="comment"># 关键看 GOPATH 和 GOBIN, GOROOT</span></div><div class="line">-> % go env</div><div class="line"></div><div class="line">GOARCH=<span class="string">"amd64"</span></div><div class="line">GOBIN=<span class="string">"/Users/hhstore/iGit/iSpace/iGo/libdir/bin:/Users/hhstore/iGit/iSpace/iGo/workdir/bin"</span></div><div class="line">GOEXE=<span class="string">""</span></div><div class="line">GOHOSTARCH=<span class="string">"amd64"</span></div><div class="line">GOHOSTOS=<span class="string">"darwin"</span></div><div class="line">GOOS=<span class="string">"darwin"</span></div><div class="line">GOPATH=<span class="string">"/Users/hhstore/iGit/iSpace/iGo/libdir:/Users/hhstore/iGit/iSpace/iGo/workdir"</span></div><div class="line">GORACE=<span class="string">""</span></div><div class="line">GOROOT=<span class="string">"/usr/local/Cellar/go/1.7.3/libexec"</span></div><div class="line">GOTOOLDIR=<span class="string">"/usr/local/Cellar/go/1.7.3/libexec/pkg/tool/darwin_amd64"</span></div><div class="line">CC=<span class="string">"clang"</span></div><div class="line">GOGCCFLAGS=<span class="string">"-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -gno-record-gcc-switches -fno-common"</span></div><div class="line">CXX=<span class="string">"clang++"</span></div><div class="line">CGO_ENABLED=<span class="string">"1"</span></div></pre></td></tr></table></figure>
<h3 id="4-3-配置-golang-开发-debug-模式"><a href="#4-3-配置-golang-开发-debug-模式" class="headerlink" title="4.3 配置 golang 开发 debug 模式:"></a>4.3 配置 golang 开发 debug 模式:</h3><h4 id="4-3-1-安装-golang-debug-插件-delve"><a href="#4-3-1-安装-golang-debug-插件-delve" class="headerlink" title="4.3.1 安装 golang debug 插件 delve:"></a>4.3.1 安装 golang debug 插件 delve:</h4><ul>
<li>golang 调试工具: delve</li>
<li>安装 <code>delve</code>: <a href="https://github.com/derekparker/delve/blob/master/Documentation/installation/osx/install.md" target="_blank" rel="external">Installation on OSX</a></li>
<li>Mac 平台: <ul>
<li><code>必须用 brew 安装</code>, </li>
<li><code>不要直接使用 go get 安装</code>, 会出现签名, 权限问题, 导致 无法使用 <code>dlv</code> 调试工具.</li>
</ul>
</li>
<li>请严格参考 <code>delve</code> 项目官方安装文档.这一步最容易出问题.</li>
</ul>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line"><span class="comment"># 安装 delev 工具:</span></div><div class="line">brew install go-delve/delve/delve</div></pre></td></tr></table></figure>
<ul>
<li>查看安装情况:</li>
</ul>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div></pre></td><td class="code"><pre><div class="line"><span class="comment"># 查看安装路径: (go get 安装路径, 必然不是这个)</span></div><div class="line">-> % <span class="built_in">which</span> dlv</div><div class="line">/usr/<span class="built_in">local</span>/bin/dlv</div><div class="line"></div><div class="line"><span class="comment"># 查看 dlv 版本:</span></div><div class="line">-> % dlv version</div><div class="line">Delve Debugger</div><div class="line">Version: 0.11.0-alpha</div><div class="line">Build: v0.11.0</div><div class="line"></div><div class="line"><span class="comment"># 查看安装情况:</span></div><div class="line">-> % brew info delve</div><div class="line"></div><div class="line">go-delve/delve/delve: stable 0.11.0, HEAD</div><div class="line">Debugger <span class="keyword">for</span> the Go programming language.</div><div class="line">https://github.com/derekparker/delve</div><div class="line">/usr/<span class="built_in">local</span>/Cellar/delve/0.11.0 (6 files, 7.4M) *</div><div class="line"> Built from <span class="built_in">source</span> on 2016-11-15 at 14:14:07</div><div class="line">From: https://github.com/go-delve/homebrew-delve/blob/master/Formula/delve.rb</div><div class="line">==> Dependencies</div><div class="line">Build: go ✔</div><div class="line">==> Caveats</div><div class="line">If you get <span class="string">"could not launch process: could not fork/exec"</span>, you need to try</div><div class="line"><span class="keyword">in</span> a new terminal.</div><div class="line"></div><div class="line">When uninstalling, to remove the dlv-cert certificate, run this <span class="built_in">command</span>:</div><div class="line"></div><div class="line"> $ sudo security delete-certificate -t -c dlv-cert /Library/Keychains/System.keychain</div><div class="line"></div><div class="line">Alternatively, you may want to delete from the Keychain (with the Imported private key).</div></pre></td></tr></table></figure>
<ul>
<li>配置问题解决:<ul>
<li>error: could not launch process: could not fork/exec<ul>
<li>原因: 没有使用 brew 安装, 请使用 brew 安装, </li>
</ul>
</li>
<li>error: <a href="https://github.com/derekparker/delve/issues/159" target="_blank" rel="external">delve/issues/159</a></li>
</ul>
</li>
</ul>
<h4 id="4-3-2-使用-vscode-自动安装-debug-必备的插件"><a href="#4-3-2-使用-vscode-自动安装-debug-必备的插件" class="headerlink" title="4.3.2 使用 vscode 自动安装 debug 必备的插件:"></a>4.3.2 使用 vscode 自动安装 debug 必备的插件:</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div></pre></td><td class="code"><pre><div class="line"></div><div class="line"><span class="comment"># 如下工具: vscode 会自动安装:</span></div><div class="line"><span class="comment"># 基本不会出现问题:</span></div><div class="line">go get -u -v github.com/nsf/gocode</div><div class="line">go get -u -v github.com/rogpeppe/godef</div><div class="line">go get -u -v github.com/golang/lint/golint</div><div class="line">go get -u -v github.com/lukehoban/go-outline</div><div class="line">go get -u -v sourcegraph.com/sqs/goreturns</div><div class="line">go get -u -v golang.org/x/tools/cmd/gorename</div><div class="line">go get -u -v github.com/tpng/gopkgs</div><div class="line">go get -u -v github.com/newhook/go-symbols</div><div class="line">go get -u -v golang.org/x/tools/cmd/guru</div></pre></td></tr></table></figure>
<h4 id="4-3-3-自定义配置-vscode"><a href="#4-3-3-自定义配置-vscode" class="headerlink" title="4.3.3 自定义配置 vscode:"></a>4.3.3 自定义配置 vscode:</h4><ul>
<li>修改: 首选项/用户设置:</li>
<li>添加如下配置:<ul>
<li><code>settings.json</code></li>
</ul>
</li>
<li>关键修改: <ul>
<li><code>go.gopath</code></li>
<li><code>go.goroot</code></li>
</ul>
</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div></pre></td><td class="code"><pre><div class="line"></div><div class="line">// 将设置放入此文件中以覆盖默认设置</div><div class="line">{</div><div class="line"> "files.autoSave": "afterDelay",</div><div class="line"> // 以像素为单位控制字号。</div><div class="line"> "editor.fontSize": 14,</div><div class="line"></div><div class="line"> // 自定义要在 OS X 上运行的终端应用程序。</div><div class="line"> "terminal.external.osxExec": "iterm.app",</div><div class="line"></div><div class="line"></div><div class="line">// Go configuration</div><div class="line"> // Specifies the GOPATH to use when no environment variable is set.</div><div class="line"> // 这是我个人的 GOPATH, 设置2个, 首个为 lib 路径, 次个为个人开发工作区</div><div class="line"> "go.gopath": "/Users/hhstore/iGit/iSpace/iGo/libdir:/Users/hhstore/iGit/iSpace/iGo/workdir",</div><div class="line"> // Specifies the GOROOT to use when no environment variable is set.</div><div class="line"> "go.goroot": "/usr/local/Cellar/go/1.7.3/libexec",</div><div class="line"></div><div class="line"> "workbench.statusBar.visible": false</div><div class="line">}</div></pre></td></tr></table></figure>
<h4 id="4-3-4-测试-golang-debug-效果"><a href="#4-3-4-测试-golang-debug-效果" class="headerlink" title="4.3.4 测试 golang debug 效果:"></a>4.3.4 测试 golang debug 效果:</h4><ul>
<li>修改: launch.json<ul>
<li>此文件在执行 debug 时, 会根据提示, 自动生成.</li>
<li>生成在项目根目录下: <code>/Users/hhstore/iGit/iSpace/iGo/.vscode/launch.json</code></li>
</ul>
</li>
<li>根据具体情况, 修改: <code>program</code> 参数值.</li>
<li><p>具体参考如下图示.</p>
</li>
<li><p>debug 代码目录:<br><img src="https://github.com/hhstore/hhstore.github.io/blob/master/images/2016/11/20161115-002.png?raw=true" alt="测试图片"></p>
</li>
</ul>
<ul>
<li>debug 断点效果图:<br><img src="https://github.com/hhstore/hhstore.github.io/blob/master/images/2016/11/20161115-001.png?raw=true" alt="测试图片"></li>
</ul>
]]></content>
<summary type="html">
<p>本篇介绍 Mac 平台 使用 virtual studio code 搭建 golang 开发环境, 包含 debug 环境的配置.</p>
</summary>
<category term="Tools" scheme="http://hhstore.github.io/categories/Tools/"/>
<category term="Mac" scheme="http://hhstore.github.io/tags/Mac/"/>
<category term="vscode" scheme="http://hhstore.github.io/tags/vscode/"/>
<category term="Golang" scheme="http://hhstore.github.io/tags/Golang/"/>
<category term="IDE" scheme="http://hhstore.github.io/tags/IDE/"/>
</entry>
<entry>
<title>Github 国内加速访问</title>
<link href="http://hhstore.github.io/2016/11/01/github-fast-host/"/>
<id>http://hhstore.github.io/2016/11/01/github-fast-host/</id>
<published>2016-11-01T17:12:10.000Z</published>
<updated>2016-12-05T08:11:13.965Z</updated>
<content type="html"><![CDATA[<p>本篇介绍如何通过修改本机 host, 提升 github 访问速度.</p>
<a id="more"></a>
<h2 id="前述"><a href="#前述" class="headerlink" title="前述:"></a>前述:</h2><ul>
<li>最近发现 github 访问非常慢.</li>
<li>办公网络: <ul>
<li>100M 电信共享, 测试 VPN 访问很慢. git clone 没法用.</li>
<li>100M 联通独享, 测试 VPN 访问很慢. git clone 较快.</li>
</ul>
</li>
<li>猜测是 github 的 部分 CDN 被墙了.</li>
<li>搜索找到解决办法, 记录如下, 备复查.</li>
</ul>
<h2 id="Mac-修改方法"><a href="#Mac-修改方法" class="headerlink" title="Mac 修改方法:"></a>Mac 修改方法:</h2><h3 id="修改-etc-hosts"><a href="#修改-etc-hosts" class="headerlink" title="修改 /etc/hosts:"></a>修改 /etc/hosts:</h3><ul>
<li>特别提醒:<ul>
<li>网上找到的 host, 不要轻易添加.</li>
<li>先通过 ping 查看一下. 是否 ping 的通, 且速度是否够快.</li>
<li>添加了 不同的 host IP, 反而会使访问速度更慢.</li>
<li>上述 IP, 是在联通网络下, 访问非常快. 使用前, 请自行测试.</li>
</ul>
</li>
<li>添加如下内容:</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div></pre></td><td class="code"><pre><div class="line"></div><div class="line">###################################</div><div class="line"># Github:</div><div class="line">###################################</div><div class="line">103.245.222.249 github.global.ssl.fastly.net</div><div class="line"></div><div class="line">103.245.222.133 assets-cdn.github.com</div><div class="line">23.235.47.133 assets-cdn.github.com</div><div class="line"></div><div class="line">185.31.19.133 avatars1.githubusercontent.com</div></pre></td></tr></table></figure>
<h3 id="修改-etc-resolv-conf"><a href="#修改-etc-resolv-conf" class="headerlink" title="修改 /etc/resolv.conf"></a>修改 /etc/resolv.conf</h3><ul>
<li>添加如下内容:</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line"></div><div class="line"># add for github:</div><div class="line">nameserver 8.8.8.8</div><div class="line">nameserver 8.8.4.4</div><div class="line">nameserver 114.114.114.114</div></pre></td></tr></table></figure>
<h3 id="刷新-NDS-使之生效"><a href="#刷新-NDS-使之生效" class="headerlink" title="刷新 NDS, 使之生效:"></a>刷新 NDS, 使之生效:</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">sudo dscacheutil -flushcache</div></pre></td></tr></table></figure>
<h2 id="Linux-修改方法"><a href="#Linux-修改方法" class="headerlink" title="Linux 修改方法:"></a>Linux 修改方法:</h2><ul>
<li><p>同样修改:</p>
<ul>
<li>/etc/hosts</li>
<li>/etc/resolv.conf</li>
</ul>
</li>
<li><p>刷新启动命令:</p>
</li>
</ul>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">sudo /etc/init.d/networking restart</div></pre></td></tr></table></figure>
<h2 id="参考"><a href="#参考" class="headerlink" title="参考:"></a>参考:</h2><ul>
<li><a href="http://chenxuhua.com/technology/githubjia-su-fang-wen" target="_blank" rel="external">GitHub加速访问</a></li>
<li><a href="http://www.jianshu.com/p/a578963f10f0" target="_blank" rel="external">Github访问很慢的解决方法</a></li>
<li><a href="https://segmentfault.com/a/1190000004171536" target="_blank" rel="external">GtiHub访问慢解决办法</a></li>
</ul>
]]></content>
<summary type="html">
<p>本篇介绍如何通过修改本机 host, 提升 github 访问速度.</p>
</summary>
<category term="Tools" scheme="http://hhstore.github.io/categories/Tools/"/>
<category term="github" scheme="http://hhstore.github.io/tags/github/"/>
<category term="vpn" scheme="http://hhstore.github.io/tags/vpn/"/>
<category term="host" scheme="http://hhstore.github.io/tags/host/"/>
</entry>
<entry>
<title>Apache Web 服务器配置网站二级域名</title>
<link href="http://hhstore.github.io/2016/10/11/xampp-config-sub-domain/"/>
<id>http://hhstore.github.io/2016/10/11/xampp-config-sub-domain/</id>
<published>2016-10-11T22:12:10.000Z</published>
<updated>2016-12-05T08:11:13.965Z</updated>
<content type="html"><![CDATA[<p>本篇介绍如何配置 Apache, 设置网站二级域名.</p>
<a id="more"></a>
<h2 id="参考"><a href="#参考" class="headerlink" title="参考:"></a>参考:</h2><ul>
<li><a href="http://www.voidcn.com/blog/u011447828/article/p-6192616.html" target="_blank" rel="external">apache 二级域名设置完整步骤</a></li>
</ul>
<h2 id="设置"><a href="#设置" class="headerlink" title="设置:"></a>设置:</h2><h3 id="1-域名解析商解析二级域名"><a href="#1-域名解析商解析二级域名" class="headerlink" title="1. 域名解析商解析二级域名:"></a>1. 域名解析商解析二级域名:</h3><ul>
<li>阿里云-万网, 解析域名:</li>
<li>oa.abc.com 指向 服务器 IP (阿里云主机 IP)</li>
<li>pms.abc.com 指向 服务器 IP (阿里云主机 IP)</li>
</ul>
<h3 id="2-主机-Apache-配置"><a href="#2-主机-Apache-配置" class="headerlink" title="2. 主机 Apache 配置:"></a>2. 主机 Apache 配置:</h3><ul>
<li>修改: httpd.conf<ul>
<li>Ubuntu 下路径: /opt/lampp/etc/httpd.conf</li>
</ul>
</li>
<li>修改: httpd-vhosts.conf<ul>
<li>Ubuntu 下路径: /opt/lampp/etc/extra/httpd-vhosts.conf</li>
</ul>
</li>
<li></li>
</ul>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div><div class="line">50</div><div class="line">51</div><div class="line">52</div><div class="line">53</div><div class="line">54</div><div class="line">55</div><div class="line">56</div><div class="line">57</div><div class="line">58</div></pre></td><td class="code"><pre><div class="line"></div><div class="line"></div><div class="line">➜ cat /etc/hosts</div><div class="line">127.0.0.1 localhost</div><div class="line">127.0.1.1 localhost.localdomain localhost</div><div class="line"></div><div class="line"><span class="comment"># The following lines are desirable for IPv6 capable hosts</span></div><div class="line">::1 localhost ip6-localhost ip6-loopback</div><div class="line">ff02::1 ip6-allnodes</div><div class="line">ff02::2 ip6-allrouters</div><div class="line">10.116.112.62 iZ94l9zg66aZ</div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"><span class="comment"># /opt/lampp/etc/httpd.conf</span></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"><Directory /></div><div class="line"> AllowOverride none</div><div class="line"> Require all denied</div><div class="line"></Directory></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"><span class="comment"># 改为:</span></div><div class="line"><Directory /></div><div class="line">Options FollowSymLinks</div><div class="line">AllowOverride All</div><div class="line">Order deny,allow</div><div class="line">Deny from all</div><div class="line"></Directory></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"><span class="comment"># Virtual hosts</span></div><div class="line"><span class="comment">#Include etc/extra/httpd-vhosts.conf</span></div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line">各个参数含义说明</div><div class="line">ServerAdmin 管理员邮箱</div><div class="line">DocumentRoot 所需指向路径</div><div class="line">ServerName 域名名称</div><div class="line">ServerAlias 域名别名 可要可不要</div><div class="line">ErrorLog 错误日志</div><div class="line">CustomLog 访问日志</div><div class="line"></div><div class="line"></div><div class="line"></div><div class="line"><span class="comment"># restart:</span></div><div class="line"></div><div class="line">sudo /opt/lampp/lampp restart</div></pre></td></tr></table></figure>
]]></content>
<summary type="html">
<p>本篇介绍如何配置 Apache, 设置网站二级域名.</p>
</summary>
<category term="Tools" scheme="http://hhstore.github.io/categories/Tools/"/>
<category term="Apache" scheme="http://hhstore.github.io/tags/Apache/"/>
<category term="web" scheme="http://hhstore.github.io/tags/web/"/>
</entry>
<entry>
<title>Golang 开发环境搭建</title>
<link href="http://hhstore.github.io/2016/09/01/go-mac-dev-env-config/"/>
<id>http://hhstore.github.io/2016/09/01/go-mac-dev-env-config/</id>
<published>2016-09-01T22:12:10.000Z</published>
<updated>2016-12-05T08:11:13.965Z</updated>
<content type="html"><![CDATA[<p>本篇介绍如何搭建 Golang 的开发环境, 以及推荐一些 go 的项目资源.</p>
<a id="more"></a>
<h2 id="golang-简介"><a href="#golang-简介" class="headerlink" title="golang 简介:"></a>golang 简介:</h2><ul>
<li><a href="https://golang.org/" target="_blank" rel="external">golang 官网</a></li>
<li><a href="https://go-zh.org/" target="_blank" rel="external">golang 中文官网</a></li>
<li><a href="https://go-zh.org/doc/install" target="_blank" rel="external">go 官方中文安装指南</a><ul>
<li>参考此中文文档,基本不需要多介绍,就可以搭建好环境.</li>
</ul>
</li>
<li><a href="https://github.com/golang/go" target="_blank" rel="external">go - github</a></li>
<li>go 的一些安利:<ul>
<li>go 是 C 语言他爸, 又一个儿子. C 他爸的设计水平,不用怀疑.<ul>
<li>这里多说一句, 语言发明人本身的背景, 其实很关键.</li>
<li>很多语言设计上先天不足, 都跟语言发明人的背景有关.</li>
<li>比如 PHP, 发明人是个业余开发者, 缺少科学训练, 导致 PHP 早期设计上有很多缺陷, 靠后天打补丁, 是无法改变本质的不足的.</li>
<li>比如 Python 他爸是搞数学的, 数学系的思维, 通常喜欢简化, 追求极简的解题思路, 喜欢追求最优解. 所以, Python 追求极简, 追求单一最优解.</li>
<li>对比 Ruby 他爸是日本人, 喜欢炫技(茴香豆的茴有16种写法,这种无聊的事,爱干) 这些小聪明, 消磨太多人的精力, 除了自娱自乐, 与他人无益.</li>
<li>c 语言, 自然不必多说, 工业级排第一位的应用, c++, java等都受其影响, 而 c 他爹是正经的科班博士, 贝尔实验室的大咖.由此可见.</li>
<li>go 是 c 他爸, 几十年后又一发明, 其他几位合作者, 都是大咖中的大咖, 背靠 Google 这个大树, 还要说啥?</li>
</ul>
</li>
<li>go 有 google 干爹.</li>
<li>go 的 1.6 版本之后, 性能已优化到很好</li>
<li>go 的设计理念: 更偏向工程的务实, 而不是学院派炫技.</li>
<li>go 天然支持并发编程, 这方面 Python 先天缺陷</li>
<li>go 现在在云计算领域很火, docker 等项目,多用 go</li>
<li>国内企业实践: <ul>
<li>七牛大量使用</li>
<li>BAT 很多业务部门在用</li>
</ul>
</li>
</ul>
</li>
<li>围观 go 的过程:<ul>
<li>从2013年到今天(2016年), 围观了 go 多个版本, 以及国内很多公司的实践</li>
<li>目前这个节点,切入 go,还是比较理想的.</li>
<li>雨痕等菊苣, 多是2012年切入, 之所以现在切入, 差不少是精力投入成本最低的</li>
<li>现在 go 的生态圈已比较完善, 各种中文资料也比较丰富, 开源的 go 项目也多</li>
<li>在大量开发者使用 go 的过程中, 慢慢有了 go 的最佳实践,可供参考.</li>
<li>所以, 吃瓜群众,决定入坑了.</li>
</ul>
</li>
</ul>
<h2 id="go-适合谁"><a href="#go-适合谁" class="headerlink" title="go 适合谁?"></a>go 适合谁?</h2><ul>
<li>python 等脚本语言开发者:<ul>
<li>崇尚简介, go 的实践理念跟 Python 一致</li>
<li>不喜欢 c++ 的复杂</li>
<li>讨厌 java 的冗长语法</li>
<li>对 ruby 低性能, 又提不起兴致</li>
<li>苦于 Python 的性能瓶颈</li>
<li>所以, 学一门 go 防身, 是必要的</li>
</ul>
</li>
<li>web 后端开发者:<ul>
<li>未来 Python 更适合快速的原型创建</li>
<li>性能瓶颈, 用 go 重写替代</li>
</ul>
</li>
</ul>
<h2 id="Mac-安装-golang"><a href="#Mac-安装-golang" class="headerlink" title="Mac 安装 golang:"></a>Mac 安装 golang:</h2><ul>
<li>推荐 homebrew 方式安装:</li>
<li>当前 golang 最新版本: 1.7.1</li>
<li>设置 shell 环境变量:<ul>
<li>本机是 zsh 环境.所以修改: ~/.zprofile 文件</li>
<li>如果是 brew 方式安装, 不需要设置 GOROOT 环境变量值.</li>
<li>添加GOPATH环境变量:<ul>
<li>此环境变量用途: 是个人的 go 开发目录(必须)</li>
<li>用来存放个人开发代码, 以及下载的 go 第三方包等</li>
<li>我个人的 go 开发目录: ~/iGit/iGoSpace</li>
</ul>
</li>
</ul>
</li>
</ul>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div><div class="line">50</div></pre></td><td class="code"><pre><div class="line"></div><div class="line"><span class="comment"># 初次安装 go:</span></div><div class="line">-> % brew install go</div><div class="line"></div><div class="line"><span class="comment"># 查看过期安装包:</span></div><div class="line">-> % brew outdated</div><div class="line">go (1.6.3) < 1.7.1</div><div class="line"></div><div class="line"><span class="comment"># 更新 go 版本:</span></div><div class="line">-> % brew upgrade go</div><div class="line"></div><div class="line">...</div><div class="line">You may wish to add the GOROOT-based install location to your PATH:</div><div class="line"> <span class="built_in">export</span> PATH=<span class="variable">$PATH</span>:/usr/<span class="built_in">local</span>/opt/go/libexec/bin</div><div class="line">==> Summary</div><div class="line">🍺 /usr/<span class="built_in">local</span>/Cellar/go/1.7.1: 6,436 files, 250.6M</div><div class="line"></div><div class="line"><span class="comment"># 安装路径:如上</span></div><div class="line"></div><div class="line"><span class="comment"># 检查是否安装成功:</span></div><div class="line">-> % go version</div><div class="line">go version go1.7.1 darwin/amd64</div><div class="line"></div><div class="line"></div><div class="line"><span class="comment">#################################</span></div><div class="line"><span class="comment"># 配置环境变量:</span></div><div class="line"><span class="comment"># - zsh: 修改 ~/.zprofile</span></div><div class="line"><span class="comment"># - bash: 修改 ~/.bash_profile</span></div><div class="line"><span class="comment">#################################</span></div><div class="line"></div><div class="line"></div><div class="line"><span class="comment"># 添加 go 环境变量:</span></div><div class="line">vim ~/.zprofile</div><div class="line"></div><div class="line"><span class="comment">#################################</span></div><div class="line"><span class="comment"># 如下添加到 ~/.zprofile</span></div><div class="line"><span class="comment"># Golang Config:</span></div><div class="line"><span class="built_in">export</span> GOPATH=<span class="variable">${HOME}</span>/iGit/iGoSpace</div><div class="line"></div><div class="line"><span class="comment">#################################</span></div><div class="line"></div><div class="line"></div><div class="line"><span class="comment"># 刷新环境变量:</span></div><div class="line"><span class="built_in">source</span> ~/.zprofile</div><div class="line"></div><div class="line"><span class="comment"># 查看环境变量是否生效:</span></div><div class="line">-> % <span class="built_in">echo</span> <span class="variable">$GOPATH</span></div><div class="line">/Users/hhstore/iGit/iGoSpace</div><div class="line"></div><div class="line"><span class="comment"># 看到上面的路径, 可知已生效.</span></div></pre></td></tr></table></figure>
<h2 id="Windows-安装-golang"><a href="#Windows-安装-golang" class="headerlink" title="Windows 安装 golang:"></a>Windows 安装 golang:</h2><ul>
<li>参考: <a href="https://go-zh.org/doc/install" target="_blank" rel="external">go 官方中文安装指南</a></li>
</ul>
<h2 id="Go-开发-IDE-选择"><a href="#Go-开发-IDE-选择" class="headerlink" title="Go 开发 IDE 选择:"></a>Go 开发 IDE 选择:</h2><ul>
<li>jetbrains 家 IDE 全家桶 + go 插件<ul>
<li>我常用 pycharm + go 插件</li>
<li>IDEA, PhpStorm, RubyMine等都可用</li>
</ul>
</li>
<li>sublime text3 + go 插件</li>
<li><a href="https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins" target="_blank" rel="external">这有个IDE参考列表</a></li>
<li>雨痕菊苣, 建议多用 命令行来编写,调试 go.深以为然,应该多多练习一下.</li>
</ul>
<h2 id="Go-学习资源"><a href="#Go-学习资源" class="headerlink" title="Go 学习资源:"></a>Go 学习资源:</h2><ul>
<li><a href="https://go-zh.org/doc/" target="_blank" rel="external">官方中文文档</a><ul>
<li><a href="https://go-tour-zh.appspot.com/welcome/1" target="_blank" rel="external">Go 指南 - 必读</a><ul>
<li>这个指南, 可以在线编辑,运行 go 代码, 必读</li>
</ul>
</li>
<li>go 官方中文文档,很完善, 对用户很友好</li>
</ul>
</li>
<li><a href="https://github.com/astaxie/build-web-application-with-golang" target="_blank" rel="external">build-web-application-with-golang</a><ul>
<li>中文教程</li>
</ul>
</li>
<li><a href="https://github.com/qyuhen/book" target="_blank" rel="external">go 笔记 - 雨痕</a><ul>
<li>必读, 高质量</li>
</ul>
</li>
</ul>
<h2 id="Go-热门项目"><a href="#Go-热门项目" class="headerlink" title="Go 热门项目:"></a>Go 热门项目:</h2><ul>
<li>热门项目的价值:<ul>
<li>学习语言本身</li>
<li>学习最佳实践</li>
<li>学习各种技术: 数据库, 并发, 网络等</li>
</ul>
</li>
<li><a href="https://github.com/golang/go/wiki/Projects" target="_blank" rel="external">go-project-list</a></li>
<li><a href="https://github.com/avelino/awesome-go" target="_blank" rel="external">awesome-go</a><ul>
<li>列举了大量 go 项目, 可以在这里扒拉各种.</li>
</ul>
</li>
<li>感兴趣的项目:<ul>
<li><a href="https://github.com/astaxie/beego" target="_blank" rel="external">beego - github</a></li>
<li><a href="http://beego.me/" target="_blank" rel="external">beego - 官网</a><ul>
<li>用途: go web 框架</li>
<li>作者:国人</li>
</ul>
</li>
<li><a href="https://github.com/docker/docker" target="_blank" rel="external">docker - github</a><ul>
<li>热门应用, 很喜欢用</li>
</ul>
</li>
<li><a href="https://github.com/lunny/tango" target="_blank" rel="external">tango</a><ul>
<li>用途: web 框架</li>
<li>作者: 国人</li>
</ul>
</li>
<li><a href="https://github.com/go-xorm/xorm" target="_blank" rel="external">xorm</a><ul>
<li>用途: 数据库 ORM</li>
<li>作者: 国人</li>
</ul>
</li>
</ul>
</li>
</ul>
]]></content>
<summary type="html">
<p>本篇介绍如何搭建 Golang 的开发环境, 以及推荐一些 go 的项目资源.</p>
</summary>
<category term="Tools" scheme="http://hhstore.github.io/categories/Tools/"/>
<category term="golang" scheme="http://hhstore.github.io/tags/golang/"/>
<category term="mac" scheme="http://hhstore.github.io/tags/mac/"/>
</entry>
<entry>
<title>Tornado 最佳实践</title>
<link href="http://hhstore.github.io/2016/08/25/tornado-tips/"/>
<id>http://hhstore.github.io/2016/08/25/tornado-tips/</id>
<published>2016-08-25T22:12:10.000Z</published>
<updated>2016-12-05T08:11:13.965Z</updated>
<content type="html"><![CDATA[<p>本篇介绍 Tornado 最佳实践相关内容.</p>
<a id="more"></a>
<h2 id="参考"><a href="#参考" class="headerlink" title="参考:"></a>参考:</h2><ul>
<li><a href="https://www.v2ex.com/t/88797" target="_blank" rel="external">有关Tornado 异步的讨论</a><ul>
<li>reply12回答</li>
</ul>
</li>
<li><p><a href="https://github.com/mher/tornado-celery/" target="_blank" rel="external">tornado-celery 项目</a></p>
<ul>
<li>搭配 celery 实现便捷异步 IO</li>
</ul>
</li>
<li><p><a href="http://kjam.org/cn/tornado-prespective.html" target="_blank" rel="external">Tornado最佳实践</a></p>
</li>
</ul>
]]></content>
<summary type="html">
<p>本篇介绍 Tornado 最佳实践相关内容.</p>
</summary>
<category term="Tools" scheme="http://hhstore.github.io/categories/Tools/"/>
<category term="Python" scheme="http://hhstore.github.io/tags/Python/"/>
<category term="Tornado" scheme="http://hhstore.github.io/tags/Tornado/"/>
</entry>
<entry>
<title>使用 Mweb 配合 hexo 编写 github 博客</title>
<link href="http://hhstore.github.io/2016/08/25/mweb-hexo-blog-config/"/>
<id>http://hhstore.github.io/2016/08/25/mweb-hexo-blog-config/</id>
<published>2016-08-25T22:12:10.000Z</published>
<updated>2016-12-05T08:11:13.965Z</updated>
<content type="html"><![CDATA[<p>本篇介绍如何使用 Mweb 配合 hexo 编写 github 博客.</p>
<a id="more"></a>
<h2 id="MWeb-简介"><a href="#MWeb-简介" class="headerlink" title="MWeb 简介:"></a>MWeb 简介:</h2><ul>
<li>Mac 下目前最好用的 markdown 编辑器</li>
<li>亮点:<ul>
<li>所见即所得</li>
<li>直接复制粘贴图片到编辑框,自动生成图片 URL</li>
<li>支持上传各种图床</li>
<li>支持发布到各种博客网站</li>
</ul>
</li>
<li>简单搜索了一下,找到配合 hexo 在 github 上写博客的办法.</li>
</ul>
<h2 id="MWeb-配置"><a href="#MWeb-配置" class="headerlink" title="MWeb 配置:"></a>MWeb 配置:</h2><h3 id="1-打开-MWeb-外部模式"><a href="#1-打开-MWeb-外部模式" class="headerlink" title="1. 打开 MWeb 外部模式:"></a>1. 打开 MWeb 外部模式:</h3><ul>
<li>mweb 中, <code>CMD+E</code>快捷键激活</li>
</ul>
<h3 id="2-导入原-github-博客仓库资源目录"><a href="#2-导入原-github-博客仓库资源目录" class="headerlink" title="2. 导入原 github 博客仓库资源目录:"></a>2. 导入原 github 博客仓库资源目录:</h3><ul>
<li>找到本机的 github 仓库目录</li>
<li>点击 <code>引入文件夹</code>, 把 github 博客的 <code>source</code> 目录导入, 如截图所示.</li>
</ul>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div></pre></td><td class="code"><pre><div class="line">~/iGithub/iB<span class="built_in">log</span></div><div class="line"></div><div class="line"><span class="comment"># 查看 我的 github 博客项目目录:</span></div><div class="line">-> % tree iB<span class="built_in">log</span> -L 1</div><div class="line">iB<span class="built_in">log</span></div><div class="line">├── _config.yml</div><div class="line">├── cfg_backup.yml</div><div class="line">├── db.json</div><div class="line">├── node_modules</div><div class="line">├── package.json</div><div class="line">├── public</div><div class="line">├── readme.mdown</div><div class="line">├── scaffolds</div><div class="line">├── <span class="built_in">source</span> <span class="comment"># 博客源目录, 导入此目录</span></div><div class="line">└── themes</div><div class="line"></div><div class="line"></div><div class="line"><span class="comment"># 找到 source 目录.</span></div><div class="line">-> % tree <span class="built_in">source</span> -L 1</div><div class="line"><span class="built_in">source</span></div><div class="line">├── CNAME</div><div class="line">├── _posts</div><div class="line">├── about</div><div class="line">├── books</div><div class="line">├── categories</div><div class="line">├── images</div><div class="line">├── links</div><div class="line">├── media <span class="comment"># 默认 Mweb 保存图片的路径.</span></div><div class="line">├── projects</div><div class="line">├── tags</div><div class="line">├── tools</div><div class="line">└── translations</div></pre></td></tr></table></figure>
<p><img src="/media/14732178319341.jpg" alt=""></p>
<h3 id="3-设置-source-目录属性"><a href="#3-设置-source-目录属性" class="headerlink" title="3. 设置 source 目录属性:"></a>3. 设置 <code>source</code> 目录属性:</h3><ul>
<li><code>source</code> 文件夹,右键,找到<code>编辑</code>.</li>
<li>设置 图片保存路径,默认 <code>media</code> 文件夹,并改成<code>绝对位置</code></li>
</ul>
<p><img src="/media/14732182875227.jpg" alt=""></p>
<p><img src="/media/14732184402723.jpg" alt=""></p>
<ul>
<li>保存成功后,就可以愉快的在 MWeb 编辑器里写博客了.</li>
</ul>
<h3 id="4-写一篇博客测试"><a href="#4-写一篇博客测试" class="headerlink" title="4. 写一篇博客测试:"></a>4. 写一篇博客测试:</h3><p><img src="/media/14732186698429.jpg" alt=""></p>
<h3 id="5-发布到-github"><a href="#5-发布到-github" class="headerlink" title="5. 发布到 github"></a>5. 发布到 github</h3><ul>
<li>首先, Mweb 编辑的博客文件,是保存在原 github 博客仓库路径下,所以, 按照正常的发布流程来.</li>
<li>切换到 项目目录.</li>
</ul>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line"><span class="comment"># 发布命令</span></div><div class="line">[~/xx/xx/iB<span class="built_in">log</span>] [master *]</div><div class="line">-> % hexo g <span class="_">-d</span></div></pre></td></tr></table></figure>
<h3 id="6-查看"><a href="#6-查看" class="headerlink" title="6. 查看:"></a>6. 查看:</h3><ul>
<li>打开博客地址, 查看: <a href="http://hhstore.github.io">http://hhstore.github.io</a> </li>
</ul>
<h2 id="参考"><a href="#参考" class="headerlink" title="参考:"></a>参考:</h2><ul>
<li><a href="https://joilence.github.io/2016/07/14/improve-blog/" target="_blank" rel="external">Hexo 博客进阶配置与常见问题</a></li>
</ul>
]]></content>
<summary type="html">
<p>本篇介绍如何使用 Mweb 配合 hexo 编写 github 博客.</p>
</summary>
<category term="Tools" scheme="http://hhstore.github.io/categories/Tools/"/>
<category term="github" scheme="http://hhstore.github.io/tags/github/"/>
<category term="blog" scheme="http://hhstore.github.io/tags/blog/"/>
<category term="hexo" scheme="http://hhstore.github.io/tags/hexo/"/>
<category term="mweb" scheme="http://hhstore.github.io/tags/mweb/"/>
</entry>
<entry>
<title>网络编程socket IO核心概念对比: 阻塞,非阻塞,同步,异步, select, epoll</title>
<link href="http://hhstore.github.io/2016/08/24/socket-io-programming/"/>
<id>http://hhstore.github.io/2016/08/24/socket-io-programming/</id>
<published>2016-08-24T22:12:10.000Z</published>
<updated>2016-12-05T08:11:13.965Z</updated>
<content type="html"><![CDATA[<p>本篇介绍 socket 编程最核心的概念区别.</p>
<a id="more"></a>
<h2 id="高质量参考"><a href="#高质量参考" class="headerlink" title="高质量参考:"></a>高质量参考:</h2><ul>
<li><a href="">Unix 网络编程 - 第6章</a><ul>
<li>权威参考,网上各种博客,大都摘抄自此.</li>
</ul>
</li>
<li><a href="">Linux/Unix 系统编程手册- 第63章</a></li>
<li><a href="http://blog.csdn.net/historyasamirror/article/details/5778378" target="_blank" rel="external">IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)</a></li>
<li><a href="https://segmentfault.com/a/1190000003063859" target="_blank" rel="external">Linux IO模式及 select、poll、epoll详解</a><ul>
<li>写的比较通俗</li>
</ul>
</li>
<li><a href="http://python.jobbole.com/86097/" target="_blank" rel="external">tornado源码解析之IOLoop</a></li>
</ul>
<h2 id="socket-编程几个核心概念"><a href="#socket-编程几个核心概念" class="headerlink" title="socket 编程几个核心概念:"></a>socket 编程几个核心概念:</h2><ul>
<li>阻塞: blocking</li>
<li>非阻塞: non-blocking</li>
<li>同步: synchronous</li>
<li>异步: asynchronous</li>
</ul>
<h2 id="IO模式"><a href="#IO模式" class="headerlink" title="IO模式:"></a>IO模式:</h2><ul>
<li>IO 读两阶段:<ul>
<li><ol>
<li>等待数据准备 (Waiting for the data to be ready)</li>
</ol>
</li>
<li><ol>
<li>将数据从内核拷贝到进程中 (Copying the data from the kernel to the process)</li>
</ol>
</li>
</ul>
</li>
<li>由此产生的5种网络模式:<ul>
<li>阻塞 I/O(blocking IO)</li>
<li>非阻塞 I/O(nonblocking IO)</li>
<li>I/O 多路复用( IO multiplexing)</li>
<li>信号驱动 I/O( signal driven IO): 不常用,略过.</li>
<li>异步 I/O(asynchronous IO)</li>
</ul>
</li>
</ul>
<h2 id="核心总结"><a href="#核心总结" class="headerlink" title="核心总结:"></a>核心总结:</h2><ul>
<li>阻塞 I/O(blocking IO): IO 两阶段都阻塞</li>
<li>非阻塞 I/O(nonblocking IO): <ul>
<li>命名不精确, 精确定义应为: 部分阻塞,部分非阻塞</li>
</ul>
</li>
<li>I/O 多路复用( IO multiplexing): <ul>