-
Notifications
You must be signed in to change notification settings - Fork 0
/
atom.xml
1488 lines (1337 loc) · 268 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>Busihacker</title>
<subtitle>inner peace</subtitle>
<link href="/atom.xml" rel="self"/>
<link href="check_hexo_config_url/"/>
<updated>2016-12-22T03:38:55.000Z</updated>
<id>check_hexo_config_url/</id>
<author>
<name>Nora Chan</name>
</author>
<generator uri="http://hexo.io/">Hexo</generator>
<entry>
<title>test_draft_publish_without_layout_variable</title>
<link href="check_hexo_config_url/2016/12/22/test-draft-publish-without-layout-variable/"/>
<id>check_hexo_config_url/2016/12/22/test-draft-publish-without-layout-variable/</id>
<published>2016-12-22T03:38:42.000Z</published>
<updated>2016-12-22T03:38:55.000Z</updated>
<summary type="html">
</summary>
</entry>
<entry>
<title>test_draft_publish</title>
<link href="check_hexo_config_url/2016/12/22/test-draft-publish-1/"/>
<id>check_hexo_config_url/2016/12/22/test-draft-publish-1/</id>
<published>2016-12-22T03:21:36.000Z</published>
<updated>2016-12-22T03:26:19.000Z</updated>
<summary type="html">
</summary>
</entry>
<entry>
<title>在python里通过myql访问远程服务器数据库配置memo</title>
<link href="check_hexo_config_url/2016/12/21/%E5%9C%A8python%E9%87%8C%E9%80%9A%E8%BF%87myql%E8%AE%BF%E9%97%AE%E8%BF%9C%E7%A8%8B%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%95%B0%E6%8D%AE%E5%BA%93%E9%85%8D%E7%BD%AEmemo/"/>
<id>check_hexo_config_url/2016/12/21/在python里通过myql访问远程服务器数据库配置memo/</id>
<published>2016-12-21T13:35:51.000Z</published>
<updated>2016-12-23T02:06:44.000Z</updated>
<content type="html"><![CDATA[<h1 id="mac安装mysql"><a href="#mac安装mysql" class="headerlink" title="mac安装mysql"></a>mac安装mysql</h1><p>mac:<code>brew install mysql</code></p>
<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></pre></td><td class="code"><pre><div class="line">==> Caveats</div><div class="line">We've installed your MySQL database without a root password. To secure it run:</div><div class="line"> mysql_secure_installation</div><div class="line"></div><div class="line">To connect run:</div><div class="line"> mysql -uroot</div><div class="line"></div><div class="line">To have launchd start mysql now and restart at login:</div><div class="line"> brew services start mysql</div><div class="line">Or, if you don't want/need a background service you can just run:</div><div class="line"> mysql.server start</div><div class="line">==> Summary</div><div class="line">🍺 /usr/local/Cellar/mysql/5.7.13: 13,344 files, 445.0M</div></pre></td></tr></table></figure>
<p>ubuntu:sudo apt-get-install mysql-server mysql-client<br>sudo apt-get-install libmysqlclient-dev# 为了支持python,有依赖</p>
<p><a href="http://stackoverflow.com/questions/1857861/libmysqlclient15-dev-on-macs" target="_blank" rel="external">#reference-How to get the MySQL C API libraries on OS X</a><br><a href="http://bbs.csdn.net/topics/310117511" target="_blank" rel="external">mysql-server与mysql-client有什么区别?</a></p>
<p><a href="http://blog.neten.de/posts/2014/01/27/install-mysql-using-homebrew/" target="_blank" rel="external">在 Mac 下用 Homebrew 安装 MySQL</a></p>
<h1 id="python支持"><a href="#python支持" class="headerlink" title="python支持"></a>python支持</h1><p>mac:<code>pip install mysqlclient</code>/<code>easy_install mysql-python</code><br>ubuntu:<code>pip install mysqlclient</code></p>
<p><a href="http://blog.csdn.net/a657941877/article/details/8944683" target="_blank" rel="external">#reference-MySQL database connector for Python</a><br><a href="https://www.zhihu.com/question/19869186/answer/98805967" target="_blank" rel="external">#reference-有哪些比较好的在 Python 中访问 MySQL 的类库?</a></p>
<h2 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h2><p>import mysqldb</p>
<h1 id="可能遇见的问题"><a href="#可能遇见的问题" class="headerlink" title="可能遇见的问题"></a>可能遇见的问题</h1><h2 id="连接远程服务器返回ERROR-2003-HY000-Can-39-t-connect-to-MySQL-server"><a href="#连接远程服务器返回ERROR-2003-HY000-Can-39-t-connect-to-MySQL-server" class="headerlink" title="连接远程服务器返回ERROR 2003 (HY000): Can't connect to MySQL server"></a>连接远程服务器返回<code>ERROR 2003 (HY000): Can't connect to MySQL server</code></h2><p>原因就是Mysql数据库的默认配置文件my.cnf(linux下)中的bind-address默认为127.0.0.1,即只允许本机访问,需要取消该限制。</p>
<p>ubuntu下使用<code>locate my.cnf</code>获取文件地址,如果返回<code>locate: can not stat ()</code>/var/lib/mlocate/mlocate.db’:<code>,执行</code>updatedb<code>解决。
[locate: can not stat ()</code>/var/lib/mlocate/mlocate.db’: No such file or directory](<a href="http://blog.csdn.net/w13770269691/article/details/6987384" target="_blank" rel="external">http://blog.csdn.net/w13770269691/article/details/6987384</a>)<br><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">root@localhost:~# locate my.cnf</div><div class="line">/etc/alternatives/my.cnf</div><div class="line">/etc/mysql/my.cnf</div><div class="line">/etc/mysql/my.cnf.fallback</div><div class="line">/var/lib/dpkg/alternatives/my.cnf</div></pre></td></tr></table></figure></p>
<p>my.cnf一般在/etc/mysql下面,网络绝大部分资源都显示直接修改该文件。<br>root@localhost:~# cat /etc/alternatives/my.cnf<br><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></pre></td><td class="code"><pre><div class="line">#</div><div class="line"># The MySQL database server configuration file.</div><div class="line">#</div><div class="line"># You can copy this to one of:</div><div class="line"># - "/etc/mysql/my.cnf" to set global options,</div><div class="line"># - "~/.my.cnf" to set user-specific options.</div><div class="line"># </div><div class="line"># One can use all long options that the program supports.</div><div class="line"># Run program with --help to get a list of available options and with</div><div class="line"># --print-defaults to see which it would actually understand and use.</div><div class="line">#</div><div class="line"># For explanations see</div><div class="line"># http://dev.mysql.com/doc/mysql/en/server-system-variables.html</div><div class="line"></div><div class="line">#</div><div class="line"># * IMPORTANT: Additional settings that can override those from this file!</div><div class="line"># The files must end with '.cnf', otherwise they'll be ignored.</div><div class="line">#</div><div class="line"></div><div class="line">!includedir /etc/mysql/conf.d/</div><div class="line">!includedir /etc/mysql/mysql.conf.d/</div></pre></td></tr></table></figure></p>
<p>根据<a href="http://askubuntu.com/questions/699903/why-etc-mysql-my-cnf-is-empty" target="_blank" rel="external">Why /etc/mysql/my.cnf is EMPTY</a>,配置文件(.cnf文件,一般是mysqld.cnf)locate在<br><code>/etc/mysql/conf.d/</code>和<code>/etc/mysql/mysql.conf.d/</code>中,我的mysqld.cnf地址是:<code>/etc/mysql/mysql.conf.d/mysqld.cnf</code></p>
<p>这才开始修改我的配置(mysqld.cnf)<br>修改前的配置文件为:<br><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></pre></td><td class="code"><pre><div class="line"># </div><div class="line"># Instead of skip-networking the default is now to listen only on </div><div class="line"># localhost which is more compatible and is not less secure. </div><div class="line">bind-address = 127.0.0.1</div></pre></td></tr></table></figure></p>
<p>修改后:<br><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></pre></td><td class="code"><pre><div class="line"># </div><div class="line"># Instead of skip-networking the default is now to listen only on </div><div class="line"># localhost which is more compatible and is not less secure. </div><div class="line"># bind-address = 127.0.0.1</div></pre></td></tr></table></figure></p>
<p>修改后并未立即生效,需要重启生效(可以找办法restart该服务,我是直接reboot)</p>
<p><a href="http://tk-zhang.iteye.com/blog/735467" target="_blank" rel="external">#reference-远程连接Mysql数据库问题(ERROR 2003 (HY000)</a><br><a href="http://www.jianshu.com/p/d501af0f127c" target="_blank" rel="external">#reference-MySQL数据库无法远程连接的解决办法</a><br><a href="http://www.2cto.com/database/201204/127400.html" target="_blank" rel="external">MySQL远程连接ERROR 2003 (HY000):Can’t connect to MySQL server on’XXXXX’的问题</a><br><a href="https://ihower.tw/rails/advanced-installation.html" target="_blank" rel="external">mac/ubuntu环境安装</a></p>
<h2 id="连接远程服务器返回ERROR-1130-HY000-is-not-allowed-to-connect-to-this-MySQL-server"><a href="#连接远程服务器返回ERROR-1130-HY000-is-not-allowed-to-connect-to-this-MySQL-server" class="headerlink" title="连接远程服务器返回ERROR 1130 (HY000): is not allowed to connect to this MySQL server"></a>连接远程服务器返回<code>ERROR 1130 (HY000): is not allowed to connect to this MySQL server</code></h2><p>服务器连接上mysql后, 授权myuser使用mypassword从任何主机连接到mysql服务器<br><code>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;</code></p>
<p><a href="http://www.cnblogs.com/chutianyao/archive/2011/12/28/2304332.html" target="_blank" rel="external">mysql远程连接解决办法</a><br><a href="http://blog.csdn.net/rongjch/article/details/607124" target="_blank" rel="external">无法远程登入MySQL Server解决</a></p>
<h2 id="ERROR-1045-28000-Access-denied-for-user"><a href="#ERROR-1045-28000-Access-denied-for-user" class="headerlink" title="ERROR 1045 (28000): Access denied for user"></a>ERROR 1045 (28000): Access denied for user</h2><p>尝试从本地连接服务器:<br><code>!mysql -h'104.128.92.224' -u<%username> -p<%password></code><br>反馈<code>mysql: [Warning] Using a password on the command line interface can be insecure.</code><br>所以执行<code>mysql -h'104.128.92.224' -uroot</code><br>但返回<code>ERROR 1045 (28000): Access denied for user</code>,属于粗心,正确的执行方式为:<code>`mysql -h'104.128.92.224' -u<%username> -p</code>再输入密码即可。</p>
<p><a href="http://blog.csdn.net/zzq900503/article/details/14163769" target="_blank" rel="external">遇到问题—mysql账户密码以及权限的问题</a><br><a href="http://blog.csdn.net/nel0511/article/details/13091163" target="_blank" rel="external">完整过程解决 ERROR 1045 (28000)</a><br><a href="https://segmentfault.com/a/1190000002514402" target="_blank" rel="external">Ubuntu服务器常用配置-mysql数据库的安装</a></p>
<h2 id="log问题"><a href="#log问题" class="headerlink" title="log问题"></a>log问题</h2><p><a href="http://www.cnblogs.com/jackluo/archive/2013/03/04/2942500.html" target="_blank" rel="external">mysql错误日志分析</a><br><a href="http://blog.csdn.net/lxpbs8851/article/details/7892256" target="_blank" rel="external">IP address could not be resolved: Temporary failure in name resolution</a></p>
<h2 id="mysql连接到远程服务器的思考"><a href="#mysql连接到远程服务器的思考" class="headerlink" title="mysql连接到远程服务器的思考"></a>mysql连接到远程服务器的思考</h2><p>mysql-client连接到mysql-server,通过什么协议发起请求?是否安全?看起来不是https 的<br><a href="http://stackoverflow.com/questions/21386005/python-and-connecting-to-mysql-over-ssh" target="_blank" rel="external">Python and Connecting to MySQL over SSH</a><br><a href="http://stackoverflow.com/questions/12972867/connect-on-remote-mysql-database-through-python" target="_blank" rel="external">Connect on remote MySQL database through Python</a><br><a href="http://python.jobbole.com/87088/" target="_blank" rel="external">python模块paramiko与ssh</a></p>
<p>#<br><a href="http://dev.mysql.com/doc/" target="_blank" rel="external">Standard Mysql Documentation</a><br><a href="http://mysql-python.sourceforge.net/MySQLdb.html" target="_blank" rel="external">MySQLdb User’s Guide</a><br><a href="https://www.python.org/dev/peps/pep-0249/" target="_blank" rel="external">Python Database API Specification v2.0</a></p>
]]></content>
<summary type="html">
<h1 id="mac安装mysql"><a href="#mac安装mysql" class="headerlink" title="mac安装mysql"></a>mac安装mysql</h1><p>mac:<code>brew install mysql</code></p
</summary>
<category term="mysql" scheme="check_hexo_config_url/tags/mysql/"/>
<category term="python" scheme="check_hexo_config_url/tags/python/"/>
<category term="ubuntu" scheme="check_hexo_config_url/tags/ubuntu/"/>
<category term="mac" scheme="check_hexo_config_url/tags/mac/"/>
</entry>
<entry>
<title>数据科学笔记</title>
<link href="check_hexo_config_url/2016/12/19/%E6%95%B0%E6%8D%AE%E7%A7%91%E5%AD%A6%E7%AC%94%E8%AE%B0/"/>
<id>check_hexo_config_url/2016/12/19/数据科学笔记/</id>
<published>2016-12-19T12:59:46.000Z</published>
<updated>2016-12-20T03:38:01.000Z</updated>
<content type="html"><![CDATA[<p><a href="http://pandas.pydata.org/pandas-docs/stable/10min.html" target="_blank" rel="external">10 Minutes to pandas</a><br><a href="https://docs.scipy.org/doc/numpy-dev/user/quickstart.html" target="_blank" rel="external">Quickstart tutorial</a><br><strong>STANDARD</strong><br><a href="https://docs.python.org/2/library/array.html" target="_blank" rel="external">array — Efficient arrays of numeric values¶</a><br><a href="https://www.douban.com/group/topic/92144802/" target="_blank" rel="external">Python 中常用的数据类型</a></p>
<p>#了解scikit-learn<br><a href="http://scikit-learn.org/stable/auto_examples/index.html" target="_blank" rel="external">General examples</a><br><a href="http://scikit-learn.org/stable/tutorial/basic/tutorial.html" target="_blank" rel="external">An introduction to machine learning with scikit-learn</a></p>
]]></content>
<summary type="html">
<p><a href="http://pandas.pydata.org/pandas-docs/stable/10min.html" target="_blank" rel="external">10 Minutes to pandas</a><br><a href="http
</summary>
</entry>
<entry>
<title>docker初探</title>
<link href="check_hexo_config_url/2016/12/18/docker%E5%88%9D%E6%8E%A2/"/>
<id>check_hexo_config_url/2016/12/18/docker初探/</id>
<published>2016-12-18T13:22:56.000Z</published>
<updated>2016-12-18T13:32:20.000Z</updated>
<content type="html"><![CDATA[<h1 id="主机的概念"><a href="#主机的概念" class="headerlink" title="主机的概念"></a>主机的概念</h1><h1 id="集群的概念"><a href="#集群的概念" class="headerlink" title="集群的概念"></a>集群的概念</h1><h1 id="利用daocloud管理独立主机-kvm架构vps-amp-docker的加速器dao命令"><a href="#利用daocloud管理独立主机-kvm架构vps-amp-docker的加速器dao命令" class="headerlink" title="利用daocloud管理独立主机/kvm架构vps&docker的加速器dao命令"></a>利用daocloud管理独立主机/kvm架构vps&docker的加速器dao命令</h1><p><a href="http://docs.daocloud.io/cluster-mgmt/advanced-cluster-node-mgmt#-3" target="_blank" rel="external">集群和主机的管理及注意事项</a><br><a href="http://docs.daocloud.io/cluster-mgmt/add-node-by-script" target="_blank" rel="external">使用脚本命令手动添加主机</a><br><a href="http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html" target="_blank" rel="external">Systemd 入门教程:命令篇</a><br><a href="https://www.google.com.hk/search?ie=utf-8&oe=UTF-8&hl=zh-CN&q=Failed+to+start+Docker+Application+Container+Engine.&gws_rd=ssl" target="_blank" rel="external">Failed to start Docker Application Container Engine.</a></p>
<p><a href="http://phonzia.github.io/2016/09/Docker%E4%BD%BF%E7%94%A8%E5%AE%98%E6%96%B9mysql%E9%95%9C%E5%83%8F0" target="_blank" rel="external">Docker使用官方mysql镜像</a></p>
]]></content>
<summary type="html">
<h1 id="主机的概念"><a href="#主机的概念" class="headerlink" title="主机的概念"></a>主机的概念</h1><h1 id="集群的概念"><a href="#集群的概念" class="headerlink" title="集群的
</summary>
<category term="docker" scheme="check_hexo_config_url/tags/docker/"/>
<category term="daocloud.io" scheme="check_hexo_config_url/tags/daocloud-io/"/>
</entry>
<entry>
<title>test_draft_layout</title>
<link href="check_hexo_config_url/2016/12/07/test-draft-layout/"/>
<id>check_hexo_config_url/2016/12/07/test-draft-layout/</id>
<published>2016-12-07T13:13:47.000Z</published>
<updated>2016-12-07T13:13:47.000Z</updated>
<summary type="html">
</summary>
</entry>
<entry>
<title>photoe_test</title>
<link href="check_hexo_config_url/2016/12/06/photoe-test/"/>
<id>check_hexo_config_url/2016/12/06/photoe-test/</id>
<published>2016-12-06T03:22:45.000Z</published>
<updated>2016-12-08T01:23:39.000Z</updated>
<summary type="html">
</summary>
</entry>
<entry>
<title>draft_test</title>
<link href="check_hexo_config_url/2016/12/05/draft-test/"/>
<id>check_hexo_config_url/2016/12/05/draft-test/</id>
<published>2016-12-05T03:36:06.000Z</published>
<updated>2016-12-05T03:36:07.000Z</updated>
<summary type="html">
</summary>
</entry>
<entry>
<title>Hexo Blog Setup以及常见配置</title>
<link href="check_hexo_config_url/2016/11/24/Hexo-Blog-Setup%E4%BB%A5%E5%8F%8A%E5%B8%B8%E8%A7%81%E9%85%8D%E7%BD%AE/"/>
<id>check_hexo_config_url/2016/11/24/Hexo-Blog-Setup以及常见配置/</id>
<published>2016-11-24T01:08:34.000Z</published>
<updated>2016-12-22T03:49:10.000Z</updated>
<content type="html"><![CDATA[<style type="text/css">
img {
-moz-box-shadow: 3px 3px 5px 6px #ccc;
-webkit-box-shadow: 3px 3px 5px 6px #ccc;
box-shadow: 3px 3px 5px 6px #ccc;
}
</style>
<p>使用Hexo进行了Blog的Setup后,我们希望选择一个心仪的theme(即不同页面类型保持一致的风格),配置需要的功能选项/属性,甚至进行一些个性化的定制。<br><a id="more"></a><br>如何预览和使用心仪的theme,Google后有足够的信息,这里就不详细介绍了。Hexo默认theme是landscape。网络上也有不少对默认主题的自定义配置方案,例如,<a href="http://blog.sunnyxx.com/2014/03/07/hexo_customize/" target="_blank" rel="external">hexo的私人订制</a><br>Simple is the best,毕竟不是搞设计和前端开发的。个人选择了Next作为theme,一方面偏好它的极简主义,另一方面,整体设计的留白和交互都很不错。</p>
<p>theme本身很优秀,但我们还是有一些个性化的需求,需要了解Hexo的更详细配置(对应next下的主题级别的<a href="http://theme-next.iissnan.com/" target="_blank" rel="external">配置</a>),或,简单地修改脚本。例如:</p>
<ul>
<li>post granularity的SEO</li>
<li>post granularity的tracking & conversation tracking</li>
<li>隐藏部分post,不按timeline呈现,按特定方式访问</li>
<li>设置404 page</li>
<li>新增简历 page</li>
<li>修改搜索的UI(未完成)</li>
<li>…</li>
</ul>
<p>大部分信息网络页都有,利用这篇文章简单总结,并在最后探索Hexo & Next theme的架构。</p>
<h1 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h1><h2 id="Hexo(site)-配置"><a href="#Hexo(site)-配置" class="headerlink" title="Hexo(site) 配置"></a>Hexo(site) 配置</h2><p>Hexo级别的<a href="https://hexo.io/zh-cn/docs/configuration.html" target="_blank" rel="external">配置</a> 关于站点/项目级别的内容、样式属性。如网站标题、网站描述、网站的SEO关键词、项目Github地址等。一般是内容属性。<br>类似meta类。</p>
<h2 id="theme-配置"><a href="#theme-配置" class="headerlink" title="theme 配置"></a>theme 配置</h2><p>theme级别的<a href="http://theme-next.iissnan.com/" target="_blank" rel="external">配置</a>已经对基础设置,如,如何切换theme,更新profie、social link等,做了比较详细的介绍。主要是样式属性。</p>
<p>就像html+css把内容、样式分离开来一样,theme负责Hexo的默认展现(样式)。<br>除了配置外的内容信息一般存放于<code>./source</code>目录</p>
<h1 id="进阶"><a href="#进阶" class="headerlink" title="进阶"></a>进阶</h1><p>theme级别的<a href="http://theme-next.iissnan.com/" target="_blank" rel="external">配置</a>有部分用户路径是没有考虑,如404页面,搜索等。</p>
<h2 id="设置404页面"><a href="#设置404页面" class="headerlink" title="设置404页面"></a>设置404页面</h2><p>我们希望404并非纯粹的<code>Cannot GET <%path></code>或者其它一成不变的错误信息。<br><img src="http://of2r0f294.bkt.clouddn.com/hexo_default_404" alt="hexo 默认404"></p>
<p>我们希望有效地利用这部分流量,甚至做一些有意义的事情。<br>例如:<br>构建搜索的闭环;<br><img src="http://of2r0f294.bkt.clouddn.com/404搜索流量.png" alt="404搜索流量"><br>做一些公益;<br><img src="http://of2r0f294.bkt.clouddn.com/404宝贝回家.png" alt="404宝贝回家"></p>
<h3 id="新建页面"><a href="#新建页面" class="headerlink" title="新建页面"></a>新建页面</h3><p>执行<code>$ hexo new page 404</code><br>进入<code>source/404</code>编辑index.md</p>
<p><strong>宝贝回家-腾讯公益</strong></p>
<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></pre></td><td class="code"><pre><div class="line">---</div><div class="line">title: 404</div><div class="line">permalink: /404</div><div class="line">comments: false</div><div class="line">---</div><div class="line"><!DOCTYPE HTML></div><div class="line"><html></div><div class="line"> <head></div><div class="line"> <meta http-equiv="content-type" content="text/html;charset=utf-8;"/></div><div class="line"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /></div><div class="line"> <meta name="robots" content="all" /></div><div class="line"> <meta name="robots" content="index,follow"/></div><div class="line"> </head></div><div class="line"> <body></div><div class="line"> <script type="text/javascript" src="http://www.qq.com/404/search_children.js" charset="utf-8" homePageUrl="/ " homePageName="回到我的主页"></div><div class="line"> </script></div><div class="line"> </body></div><div class="line"></html></div></pre></td></tr></table></figure>
<p>PS:</p>
<ol>
<li>新建page和新建post是不一样的,新建page利用<code>hexo new page %pagename</code>,创建后会有<code>%pagename</code>文件夹,文件夹有<code>index.md</code>,md内容为该page调用内容。 新建post利用<code>hexo new %postname</code>创建后有<code>%postname.md</code>为名的md文件,存放于<code>source/_post</code>。page和post属于hexo的两种layout,其它layout差异请看<a href="#默认布局-post">这儿</a></li>
<li>参考<a href="https://hexo.io/zh-cn/docs/variables.html" target="_blank" rel="external">hexo变量</a></li>
</ol>
<h3 id="其他"><a href="#其他" class="headerlink" title="其他"></a>其他</h3><p>除非DNS或者其他网络异常,无法请求到custom_domain的情况,否则404页面都会正常显示<br><a href="http://of2r0f294.bkt.clouddn.com/connection%20reset.png" target="_blank" rel="external">网络异常导致的不能访问</a></p>
<h2 id="设置about"><a href="#设置about" class="headerlink" title="设置about"></a>设置about</h2><p>同理</p>
<h2 id="设置RSS"><a href="#设置RSS" class="headerlink" title="设置RSS"></a>设置RSS</h2><p>RSS是一个模版粒度的设置,换了模版就有必要重新设置(如果有需要)<br><a href="https://github.com/iissnan/hexo-theme-next/wiki/%E6%98%BE%E7%A4%BA-feed-%E9%93%BE%E6%8E%A5" target="_blank" rel="external">#reference-显示feed链接</a></p>
<h2 id="设置分享插件(duoshuo)"><a href="#设置分享插件(duoshuo)" class="headerlink" title="设置分享插件(duoshuo)"></a>设置分享插件(duoshuo)</h2><h2 id="设置站内搜索"><a href="#设置站内搜索" class="headerlink" title="设置站内搜索"></a>设置站内搜索</h2><p>利用Next主题的local search插件的时候,会出现一个特别的情况:<br>当你在<code>yoursite.com/<%page></code>做search的时候,点击搜索结果会出现异常:<br>会navigate到<code>yoursite.com/<%page1>/<%search_result_relativePath></code><br>出现这个问题的主要原因是站点配置<code>/path_your_blog/source/_cofig.</code>yml的url值配置问题,改为absolutePath可以杜绝这个情况。<br>即,<br><code>yoursite.com</code><br><code>http://yoursite.com/</code><br>其中最后的斜杠<code>/</code>不能遗漏,会导致转义出现问题</p>
<p>新问题:<br>修改generator-search-db<br>search.ejs<br><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></pre></td><td class="code"><pre><div class="line"><!--modified by Nora</div><div class="line"><url><%- encodeURIComponent(config.root + post.path) %></url></div><div class="line">--></div><div class="line"><url><%- config.url + config.root + encodeURIComponent( post.path) %></url></div></pre></td></tr></table></figure></p>
<p>增加绝对路径<br>生成search.xml</p>
<p>再更新:<br>确认了html 属性href作相对引用的逻辑后,修改为:<br>因为href=’/path’<br>会直接访问当前主域名+path(取决于浏览器)</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><url><%- config.root + encodeURIComponent( post.path) %></url></div></pre></td></tr></table></figure>
<p>因为使用相对路径404页面也更新为:<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><script type="text/javascript" src="http://www.qq.com/404/search_children.js" charset="utf-8" homePageUrl="/ " homePageName="回到我的主页"></div></pre></td></tr></table></figure></p>
<p>其它md的相对路径也按照该逻辑处理。减少绝对路径使用,因为有多个发布地点。<br>为了减少所有的绝对饮用,url设置为url: check_hexo_config_url 观察是否有问题。</p>
<h2 id="github的包含关系。"><a href="#github的包含关系。" class="headerlink" title="github的包含关系。"></a>github的包含关系。</h2><p>例如_post已经在一个仓库了,希望建一个新的仓库包涵旧仓库</p>
<h2 id="encode-amp-decode"><a href="#encode-amp-decode" class="headerlink" title="encode& decode"></a>encode& decode</h2><p>根据http协议,URL中的部分字符会进行转义(encode),例如中文字符,会遇见的一个问题是把<code>/</code>转为<code>%2F</code>进行页面访问。<br>检查yoursite.com/search.xml可以发现<code>npm install hexo-generator-searchdb --save</code>会根据文章简历索引,并编码后访问<br><a href="">#reference:</a><br><a href="http://www.w3school.com.cn/tags/html_ref_urlencode.html" target="_blank" rel="external">#reference: HTML URL 编码</a></p>
<h2 id="github做了子项目pages"><a href="#github做了子项目pages" class="headerlink" title="github做了子项目pages"></a>github做了子项目pages</h2><p>coding也需要做<br>noragithub/prd_deployment映射到nora_coding/prd_deployment,同时pages业务。<br>两个项目都已经忽略了主域名,不做映射回出问题(coding找不到该页面)<br>这里利用hook设置</p>
<h2 id="hook需要自由服务器,结合docker的自动化常识,daoke-cluod"><a href="#hook需要自由服务器,结合docker的自动化常识,daoke-cluod" class="headerlink" title="hook需要自由服务器,结合docker的自动化常识,daoke.cluod"></a>hook需要自由服务器,结合docker的自动化常识,daoke.cluod</h2><p>名字是pages blog</p>
<h1 id="文章配置"><a href="#文章配置" class="headerlink" title="文章配置"></a>文章配置</h1><p>参考<a href="https://hexo.io/zh-cn/docs/variables.html" target="_blank" rel="external">hexo变量</a><br>增加updated: 1482378550000</p>
<h2 id="显示updated"><a href="#显示updated" class="headerlink" title="显示updated"></a>显示updated</h2><h1 id="SEO优化设置"><a href="#SEO优化设置" class="headerlink" title="SEO优化设置"></a>SEO优化设置</h1><h2 id="keywords"><a href="#keywords" class="headerlink" title="keywords"></a>keywords</h2><p>页面级别配置</p>
<h2 id="友链"><a href="#友链" class="headerlink" title="友链"></a>友链</h2><h2 id="sitetracking"><a href="#sitetracking" class="headerlink" title="sitetracking"></a>sitetracking</h2><h2 id="出现在搜索引擎"><a href="#出现在搜索引擎" class="headerlink" title="出现在搜索引擎"></a>出现在搜索引擎</h2><h1 id="Favicon"><a href="#Favicon" class="headerlink" title="Favicon"></a>Favicon</h1><p><a href="http://ww2.sinaimg.cn/mw690/6fa34428jw8e6sgfwn3suj20c80afmxk.jpg" target="_blank" rel="external">http://ww2.sinaimg.cn/mw690/6fa34428jw8e6sgfwn3suj20c80afmxk.jpg</a></p>
<h1 id="反向代理"><a href="#反向代理" class="headerlink" title="反向代理"></a>反向代理</h1><p> Github 访问速度太慢,有没有通过反向代理或者CDN加速的方式提高访问速度?特别是如果更新DNS的情况下</p>
<p>经过调研,最简单快速的方法是利用coding.net(墙内版Github)的pages服务设置hook自动更新 </p>
<p>//godaddy<br>设置www别名到pages.coding.me<br>绑定coding pages到www.busihacker.com</p>
<h4 id="定期更新问题-amp-hook问题-amp-父子域名、(发布到coding-me/noragithub-io)"><a href="#定期更新问题-amp-hook问题-amp-父子域名、(发布到coding-me/noragithub-io)" class="headerlink" title="定期更新问题&hook问题&父子域名、(发布到coding.me/noragithub.io)"></a>定期更新问题&hook问题&父子域名、(发布到coding.me/noragithub.io)</h4><h1 id="可能有的问题"><a href="#可能有的问题" class="headerlink" title="可能有的问题"></a>可能有的问题</h1><ol>
<li>https协议的支持</li>
<li>seo支持</li>
<li><p>自定义监测支持<br><a href="https://github.com/PaicHyperionDev/hexo-generator-search/issues/8" target="_blank" rel="external">提示有编码错误</a></p>
</li>
<li><p>不支持所有页面进行local search(当对配置中 search- field从<code>post</code>修改为<code>all</code>,会提醒post is not defined )</p>
</li>
</ol>
<p>updatetime function</p>
<p><a href="http://www.arao.me/2015/hexo-next-theme-optimize-base/" target="_blank" rel="external">动动手指,NexT主题与Hexo更搭哦(基础篇)</a><br><a href="http://vonalex.github.io/2016/04/03/hexo-gitpages%E5%BB%BA%E7%AB%8B%E5%8D%9A%E5%AE%A2/" target="_blank" rel="external">hexo + gitpages 搭建博客</a><br><a href="https://chensd.com/2016-06/hexo-theme-guide.html" target="_blank" rel="external">Hexo 主题制作指南</a></p>
<h1 id="定制化(进阶)"><a href="#定制化(进阶)" class="headerlink" title="定制化(进阶)"></a>定制化(进阶)</h1><h2 id="Hexo的布局(layout)"><a href="#Hexo的布局(layout)" class="headerlink" title="Hexo的布局(layout)"></a>Hexo的布局(layout)</h2><h3 id="默认布局-post"><a href="#默认布局-post" class="headerlink" title="默认布局-post"></a>默认布局-post</h3><p>layout(布局)概念类似一种页面类型,(默认情况下,但是如何新建一个type?新的渲染格式?)Hexo有三种不同的layout,不同layout保存的路径并不一样。</p>
<table>
<thead>
<tr>
<th style="text-align:center">Layout</th>
<th style="text-align:left">Path</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">post</td>
<td style="text-align:left">./source/_post</td>
</tr>
<tr>
<td style="text-align:center">page</td>
<td style="text-align:left">./source</td>
</tr>
<tr>
<td style="text-align:center">draft</td>
<td style="text-align:left">./source/_draft</td>
</tr>
</tbody>
</table>
<ol>
<li>不同layout的唯一区别是保存到不同的路径(to some extent)</li>
<li>layout支持自定义,存放目录和post一样,当scaffold无自定义类型时,调用默认layout</li>
<li>hexo publish 可用于发表草稿(draft–>post,参考1)(仅用于发表草稿,不代表支持转移目录,是否代表支持修改scaffold里的layout变量?)</li>
<li>hexo new page</li>
</ol>
<p>可以利用layout组织template</p>
<table>
<thead>
<tr>
<th style="text-align:center">template</th>
<th style="text-align:center">Page</th>
<th style="text-align:center">Fallback</th>
<th>Path</th>
<th>Fallback Path</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">index</td>
<td style="text-align:center">Home page</td>
<td style="text-align:center"></td>
</tr>
<tr>
<td style="text-align:center">post</td>
<td style="text-align:center">Posts</td>
<td style="text-align:center">index</td>
<td>_post</td>
</tr>
<tr>
<td style="text-align:center">page</td>
<td style="text-align:center">Pages</td>
<td style="text-align:center">index</td>
<td>source</td>
<td>source/%pagename</td>
</tr>
<tr>
<td style="text-align:center">archive</td>
<td style="text-align:center">Archives</td>
<td style="text-align:center">index</td>
</tr>
<tr>
<td style="text-align:center">category</td>
<td style="text-align:center">Category archives</td>
<td style="text-align:center">archive</td>
</tr>
<tr>
<td style="text-align:center">tag</td>
<td style="text-align:center">Tag archives</td>
<td style="text-align:center">archive</td>
</tr>
</tbody>
</table>
<p>Fallback位于类似于scaffolds,只是定义了变量,<br>不同template的渲染文件位于 <code>./themes/next/layout/\*</code> 下,利用swig组成,<a href="http://www.cnblogs.com/elementstorm/p/3142644.html" target="_blank" rel="external">swig是一个js模版引擎</a><br><a href="http://imweb.io/topic/565b2e23bb6a753a136242b5" target="_blank" rel="external">http://imweb.io/topic/565b2e23bb6a753a136242b5</a></p>
<p>/source/_其它(page?)<br><a href="https://hexo.io/zh-cn/docs/writing.html" target="_blank" rel="external">reference-写作</a></p>
<p>hexo new draft ..<br>其中..d的layout是post,并非draft,有点坑啊。。。<br>在scaffolds中国年增加变量layout: draft解决该问题,然而历史的的md都会被认为是默认的layout:post,需手动添加layout: draft补充<br>在post.swig和post-collapse的 </p><h1>标签增加<p></p>
<pre><code>{% if post.layout === "draft" %}
<font color="#FF4500" size="1"> 撰写中</font>
{% endif %}
</code></pre><p>用于提醒。</p>
<p>通过<code>hexo new darft "test_draft_publish"</code>然后<code>hexo publish "test_draft_publish"</code>,知识修改了文件的名称,从<code>test-draft-publish.md</code>修改为<code>test-draft-publish-1.md</code>,layout并未修改为post(期望是layout变量修改为post,并把md文件转移到_post文件夹),这个问题的主要原因是scaffold/draft.md增加了layout变量,需要想办法修改下。</p>
<h2 id="scaffold自定义模版"><a href="#scaffold自定义模版" class="headerlink" title="scaffold自定义模版"></a>scaffold自定义模版</h2><p>scaffolds/%layout<br>scaffolds决定不同layout的变量,在initial一个article时出现的变量,不同的layout变量使用不同的template和不同的path<br>template上述内容的展现方式<br>切换布局</p>
<p><em>如果要显示草稿,页面级别设置是没用的,只能全站级别</em><br><strong>希望修改为页面级别,而且修改样式提醒为草稿以及首页显示后提醒草稿样式</strong></p>
<p><a href="https://hexo.io/zh-cn/docs/setup.html" target="_blank" rel="external">建站</a><br><a href="https://hexo.io/zh-cn/docs/templates.html" target="_blank" rel="external">结构</a></p>
<p>为了进行个性化定制,先定义一些主要的数据类型:<br>页面(类型),如首页,归档页,标签页等:page<br>页面:默认(default)post</p>
<p>我们页了解下Hexo框架下,页面(html)的生成逻辑。<br>另外也应该了解同一个选项,hexo的<br>配置的优先级:page>theme>hexo<br>从html角度进行个性化定制</p>
<p>我们来看看hexo 的名录以及各目录下配置或文件的作用<br><code>tree -L 3 -I node_modules\|public</code></p>
<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></pre></td><td class="code"><pre><div class="line">.</div><div class="line">├── _config.yml//站点配置</div><div class="line">├── db.json</div><div class="line">├── debug.log</div><div class="line">├── package.json</div><div class="line">├── scaffolds</div><div class="line">│ ├── draft.md//草稿</div><div class="line">│ ├── page.md//页面</div><div class="line">│ └── post.md//博客</div><div class="line">├── source</div><div class="line">│ ├── 404 //404页面</div><div class="line">│ │ └── index.md</div><div class="line">│ ├── _posts //博客目录</div><div class="line">│ │ ├── Hexo-Blog-Setup以?\217\212常?\201?\205\215置.md</div><div class="line">│ │ ├── Markdown\ Web\ \ ?\226?\221?\231?产?\223\201?\203?\224.md</div><div class="line">│ │ ├── README.md</div><div class="line">│ │ ├── ..</div><div class="line">│ │ ├── ..</div><div class="line">│ │ </div><div class="line">│ ├── about //关于页面</div><div class="line">│ │ └── index.md</div><div class="line">│ └── tags //tags页面</div><div class="line">│ └── index.md</div><div class="line">└── themes//模版信息</div><div class="line"> ├── landscape //landscape模版脚本</div><div class="line"> │ ├── Gruntfile.js</div><div class="line"> │ ├── LICENSE</div><div class="line"> │ ├── README.md</div><div class="line"> │ ├── _config.yml</div><div class="line"> │ ├── languages</div><div class="line"> │ ├── layout</div><div class="line"> │ ├── package.json</div><div class="line"> │ ├── scripts</div><div class="line"> │ └── source</div><div class="line"> └── next //next模版脚本</div><div class="line"> ├── README.en.md</div><div class="line"> ├── README.md</div><div class="line"> ├── _config.yml//模版配置</div><div class="line"> ├── bower.json</div><div class="line"> ├── gulpfile.coffee</div><div class="line"> ├── languages</div><div class="line"> ├── layout</div><div class="line"> ├── package.json</div><div class="line"> ├── scripts</div><div class="line"> ├── source</div><div class="line"> └── test//测试</div></pre></td></tr></table></figure>
<p>我们进到next模版目录详细研究<br><code>tree -I test</code></p>
<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><div class="line">166</div><div class="line">167</div><div class="line">168</div><div class="line">169</div><div class="line">170</div><div class="line">171</div><div class="line">172</div><div class="line">173</div><div class="line">174</div><div class="line">175</div><div class="line">176</div><div class="line">177</div><div class="line">178</div><div class="line">179</div><div class="line">180</div><div class="line">181</div><div class="line">182</div><div class="line">183</div><div class="line">184</div><div class="line">185</div><div class="line">186</div><div class="line">187</div><div class="line">188</div><div class="line">189</div><div class="line">190</div><div class="line">191</div><div class="line">192</div><div class="line">193</div><div class="line">194</div><div class="line">195</div><div class="line">196</div><div class="line">197</div><div class="line">198</div><div class="line">199</div><div class="line">200</div><div class="line">201</div><div class="line">202</div><div class="line">203</div><div class="line">204</div><div class="line">205</div><div class="line">206</div><div class="line">207</div><div class="line">208</div><div class="line">209</div><div class="line">210</div><div class="line">211</div><div class="line">212</div><div class="line">213</div><div class="line">214</div><div class="line">215</div><div class="line">216</div><div class="line">217</div><div class="line">218</div><div class="line">219</div><div class="line">220</div><div class="line">221</div><div class="line">222</div><div class="line">223</div><div class="line">224</div><div class="line">225</div><div class="line">226</div><div class="line">227</div><div class="line">228</div><div class="line">229</div><div class="line">230</div><div class="line">231</div><div class="line">232</div><div class="line">233</div><div class="line">234</div><div class="line">235</div><div class="line">236</div><div class="line">237</div><div class="line">238</div><div class="line">239</div><div class="line">240</div><div class="line">241</div><div class="line">242</div><div class="line">243</div><div class="line">244</div><div class="line">245</div><div class="line">246</div><div class="line">247</div><div class="line">248</div><div class="line">249</div><div class="line">250</div><div class="line">251</div><div class="line">252</div><div class="line">253</div><div class="line">254</div><div class="line">255</div><div class="line">256</div><div class="line">257</div><div class="line">258</div><div class="line">259</div><div class="line">260</div><div class="line">261</div><div class="line">262</div><div class="line">263</div><div class="line">264</div><div class="line">265</div><div class="line">266</div><div class="line">267</div><div class="line">268</div><div class="line">269</div><div class="line">270</div><div class="line">271</div><div class="line">272</div><div class="line">273</div><div class="line">274</div><div class="line">275</div><div class="line">276</div><div class="line">277</div><div class="line">278</div><div class="line">279</div><div class="line">280</div></pre></td><td class="code"><pre><div class="line">.</div><div class="line">├── README.en.md</div><div class="line">├── README.md</div><div class="line">├── _config.yml</div><div class="line">├── bower.json</div><div class="line">├── gulpfile.coffee</div><div class="line">├── languages//语言包</div><div class="line">│ ├── zh-Hans.yml</div><div class="line">│ ├── default.yml</div><div class="line">│ ├── en.yml</div><div class="line">│ ├── zh-hk.yml</div><div class="line">│ ├── ..</div><div class="line">│ └── ..</div><div class="line">│ </div><div class="line">├── layout//layout控制</div><div class="line">│ ├── _layout.swig//layout javascript 模版引擎</div><div class="line">│ ├── _macro//所有变量</div><div class="line">│ │ ├── post-collapse.swig</div><div class="line">│ │ ├── post.swig</div><div class="line">│ │ ├── reward.swig</div><div class="line">│ │ ├── sidebar.swig</div><div class="line">│ │ └── wechat-subscriber.swig</div><div class="line">│ ├── _partials</div><div class="line">│ │ ├── comments.swig</div><div class="line">│ │ ├── duoshuo-hot-articles.swig</div><div class="line">│ │ ├── footer.swig</div><div class="line">│ │ ├── head</div><div class="line">│ │ │ └── external-fonts.swig</div><div class="line">│ │ ├── head.swig</div><div class="line">│ │ ├── header.swig</div><div class="line">│ │ ├── pagination.swig</div><div class="line">│ │ ├── search</div><div class="line">│ │ │ ├── localsearch.swig</div><div class="line">│ │ │ ├── swiftype.swig</div><div class="line">│ │ │ └── tinysou.swig</div><div class="line">│ │ ├── search.swig</div><div class="line">│ │ └── share</div><div class="line">│ │ ├── add-this.swig</div><div class="line">│ │ ├── baidushare.swig</div><div class="line">│ │ ├── duoshuo_share.swig</div><div class="line">│ │ └── jiathis.swig</div><div class="line">│ ├── _scripts</div><div class="line">│ │ ├── baidu-push.swig</div><div class="line">│ │ ├── boostrap.swig</div><div class="line">│ │ ├── commons.swig</div><div class="line">│ │ ├── pages</div><div class="line">│ │ │ └── post-details.swig</div><div class="line">│ │ ├── schemes</div><div class="line">│ │ │ ├── mist.swig</div><div class="line">│ │ │ ├── muse.swig</div><div class="line">│ │ │ └── pisces.swig</div><div class="line">│ │ ├── third-party</div><div class="line">│ │ │ ├── analytics</div><div class="line">│ │ │ │ ├── baidu-analytics.swig</div><div class="line">│ │ │ │ ├── busuanzi-counter.swig</div><div class="line">│ │ │ │ ├── cnzz-analytics.swig</div><div class="line">│ │ │ │ ├── facebook-sdk.swig</div><div class="line">│ │ │ │ ├── google-analytics.swig</div><div class="line">│ │ │ │ └── tencent-analytics.swig</div><div class="line">│ │ │ ├── analytics.swig</div><div class="line">│ │ │ ├── comments</div><div class="line">│ │ │ │ ├── disqus.swig</div><div class="line">│ │ │ │ └── duoshuo.swig</div><div class="line">│ │ │ ├── comments.swig</div><div class="line">│ │ │ ├── lean-analytics.swig</div><div class="line">│ │ │ ├── localsearch.swig</div><div class="line">│ │ │ ├── mathjax.swig</div><div class="line">│ │ │ └── tinysou.swig</div><div class="line">│ │ └── vendors.swig</div><div class="line">│ ├── archive.swig</div><div class="line">│ ├── category.swig</div><div class="line">│ ├── index.swig</div><div class="line">│ ├── page.swig</div><div class="line">│ ├── post.swig</div><div class="line">│ └── tag.swig</div><div class="line">├── package.json</div><div class="line">├── scripts</div><div class="line">│ ├── merge-configs.js</div><div class="line">│ └── tags</div><div class="line">│ ├── center-quote.js</div><div class="line">│ ├── full-image.js</div><div class="line">│ └── group-pictures.js</div><div class="line">└── source</div><div class="line"> ├── 404.html</div><div class="line"> ├── css</div><div class="line"> │ ├── _common</div><div class="line"> │ │ ├── components</div><div class="line"> │ │ │ ├── back-to-top.styl</div><div class="line"> │ │ │ ├── buttons.styl</div><div class="line"> │ │ │ ├── comments.styl</div><div class="line"> │ │ │ ├── components.styl</div><div class="line"> │ │ │ ├── footer</div><div class="line"> │ │ │ │ └── footer.styl</div><div class="line"> │ │ │ ├── header</div><div class="line"> │ │ │ │ ├── header.styl</div><div class="line"> │ │ │ │ ├── headerband.styl</div><div class="line"> │ │ │ │ ├── menu.styl</div><div class="line"> │ │ │ │ ├── site-meta.styl</div><div class="line"> │ │ │ │ └── site-nav.styl</div><div class="line"> │ │ │ ├── highlight</div><div class="line"> │ │ │ │ ├── highlight.styl</div><div class="line"> │ │ │ │ └── theme.styl</div><div class="line"> │ │ │ ├── pages</div><div class="line"> │ │ │ │ ├── archive.styl</div><div class="line"> │ │ │ │ ├── categories.styl</div><div class="line"> │ │ │ │ ├── pages.styl</div><div class="line"> │ │ │ │ └── post-detail.styl</div><div class="line"> │ │ │ ├── pagination.styl</div><div class="line"> │ │ │ ├── post</div><div class="line"> │ │ │ │ ├── post-collapse.styl</div><div class="line"> │ │ │ │ ├── post-eof.styl</div><div class="line"> │ │ │ │ ├── post-expand.styl</div><div class="line"> │ │ │ │ ├── post-gallery.styl</div><div class="line"> │ │ │ │ ├── post-meta.styl</div><div class="line"> │ │ │ │ ├── post-more-link.styl</div><div class="line"> │ │ │ │ ├── post-nav.styl</div><div class="line"> │ │ │ │ ├── post-reward.styl</div><div class="line"> │ │ │ │ ├── post-tags.styl</div><div class="line"> │ │ │ │ ├── post-title.styl</div><div class="line"> │ │ │ │ ├── post-type.styl</div><div class="line"> │ │ │ │ └── post.styl</div><div class="line"> │ │ │ ├── sidebar</div><div class="line"> │ │ │ │ ├── sidebar-author-links.styl</div><div class="line"> │ │ │ │ ├── sidebar-author.styl</div><div class="line"> │ │ │ │ ├── sidebar-blogroll.styl</div><div class="line"> │ │ │ │ ├── sidebar-feed-link.styl</div><div class="line"> │ │ │ │ ├── sidebar-nav.styl</div><div class="line"> │ │ │ │ ├── sidebar-toc.styl</div><div class="line"> │ │ │ │ ├── sidebar-toggle.styl</div><div class="line"> │ │ │ │ ├── sidebar.styl</div><div class="line"> │ │ │ │ └── site-state.styl</div><div class="line"> │ │ │ ├── tag-cloud.styl</div><div class="line"> │ │ │ ├── tags</div><div class="line"> │ │ │ │ ├── blockquote-center.styl</div><div class="line"> │ │ │ │ ├── full-image.styl</div><div class="line"> │ │ │ │ ├── group-pictures.styl</div><div class="line"> │ │ │ │ └── tags.styl</div><div class="line"> │ │ │ └── third-party</div><div class="line"> │ │ │ ├── baidushare.styl</div><div class="line"> │ │ │ ├── busuanzi-counter.styl</div><div class="line"> │ │ │ ├── duoshuo.styl</div><div class="line"> │ │ │ ├── jiathis.styl</div><div class="line"> │ │ │ ├── localsearch.styl</div><div class="line"> │ │ │ └── third-party.styl</div><div class="line"> │ │ ├── outline</div><div class="line"> │ │ │ └── outline.styl</div><div class="line"> │ │ └── scaffolding</div><div class="line"> │ │ ├── base.styl</div><div class="line"> │ │ ├── helpers.styl</div><div class="line"> │ │ ├── normalize.styl</div><div class="line"> │ │ ├── scaffolding.styl</div><div class="line"> │ │ └── tables.styl</div><div class="line"> │ ├── _custom</div><div class="line"> │ │ └── custom.styl</div><div class="line"> │ ├── _mixins</div><div class="line"> │ │ ├── Mist.styl</div><div class="line"> │ │ ├── Muse.styl</div><div class="line"> │ │ ├── Pisces.styl</div><div class="line"> │ │ ├── base.styl</div><div class="line"> │ │ └── custom.styl</div><div class="line"> │ ├── _schemes</div><div class="line"> │ │ ├── Mist</div><div class="line"> │ │ │ ├── _base.styl</div><div class="line"> │ │ │ ├── _header.styl</div><div class="line"> │ │ │ ├── _logo.styl</div><div class="line"> │ │ │ ├── _menu.styl</div><div class="line"> │ │ │ ├── _posts-expanded.styl</div><div class="line"> │ │ │ ├── _search.styl</div><div class="line"> │ │ │ ├── index.styl</div><div class="line"> │ │ │ ├── outline</div><div class="line"> │ │ │ │ └── outline.styl</div><div class="line"> │ │ │ └── sidebar</div><div class="line"> │ │ │ └── sidebar-blogroll.styl</div><div class="line"> │ │ ├── Muse</div><div class="line"> │ │ │ ├── _layout.styl</div><div class="line"> │ │ │ ├── _logo.styl</div><div class="line"> │ │ │ ├── _menu.styl</div><div class="line"> │ │ │ ├── _search.styl</div><div class="line"> │ │ │ ├── index.styl</div><div class="line"> │ │ │ └── sidebar</div><div class="line"> │ │ │ └── sidebar-blogroll.styl</div><div class="line"> │ │ └── Pisces</div><div class="line"> │ │ ├── _brand.styl</div><div class="line"> │ │ ├── _full-image.styl</div><div class="line"> │ │ ├── _layout.styl</div><div class="line"> │ │ ├── _menu.styl</div><div class="line"> │ │ ├── _posts.styl</div><div class="line"> │ │ ├── _sidebar.styl</div><div class="line"> │ │ └── index.styl</div><div class="line"> │ ├── _variables</div><div class="line"> │ │ ├── Mist.styl</div><div class="line"> │ │ ├── Muse.styl</div><div class="line"> │ │ ├── Pisces.styl</div><div class="line"> │ │ ├── base.styl</div><div class="line"> │ │ └── custom.styl</div><div class="line"> │ └── main.styl</div><div class="line"> ├── fonts</div><div class="line"> ├── images</div><div class="line"> │ ├── avatar.gif</div><div class="line"> │ ├── cc-by-nc-nd.svg</div><div class="line"> │ ├── cc-by-nc-sa.svg</div><div class="line"> │ ├── cc-by-nc.svg</div><div class="line"> │ ├── cc-by-nd.svg</div><div class="line"> │ ├── cc-by-sa.svg</div><div class="line"> │ ├── cc-by.svg</div><div class="line"> │ ├── cc-zero.svg</div><div class="line"> │ ├── loading.gif</div><div class="line"> │ ├── placeholder.gif</div><div class="line"> │ ├── quote-l.svg</div><div class="line"> │ ├── quote-r.svg</div><div class="line"> │ └── searchicon.png</div><div class="line"> ├── js</div><div class="line"> │ └── src</div><div class="line"> │ ├── affix.js</div><div class="line"> │ ├── bootstrap.js</div><div class="line"> │ ├── hook-duoshuo.js</div><div class="line"> │ ├── motion.js</div><div class="line"> │ ├── post-details.js</div><div class="line"> │ ├── schemes</div><div class="line"> │ │ └── pisces.js</div><div class="line"> │ ├── scrollspy.js</div><div class="line"> │ └── utils.js</div><div class="line"> └── vendors</div><div class="line"> ├── fancybox</div><div class="line"> │ └── source</div><div class="line"> │ ├── blank.gif</div><div class="line"> │ ├── fancybox_loading.gif</div><div class="line"> │ ├── [email protected]</div><div class="line"> │ ├── fancybox_overlay.png</div><div class="line"> │ ├── fancybox_sprite.png</div><div class="line"> │ ├── [email protected]</div><div class="line"> │ ├── helpers</div><div class="line"> │ │ ├── fancybox_buttons.png</div><div class="line"> │ │ ├── jquery.fancybox-buttons.css</div><div class="line"> │ │ ├── jquery.fancybox-buttons.js</div><div class="line"> │ │ ├── jquery.fancybox-media.js</div><div class="line"> │ │ ├── jquery.fancybox-thumbs.css</div><div class="line"> │ │ └── jquery.fancybox-thumbs.js</div><div class="line"> │ ├── jquery.fancybox.css</div><div class="line"> │ ├── jquery.fancybox.js</div><div class="line"> │ └── jquery.fancybox.pack.js</div><div class="line"> ├── fastclick</div><div class="line"> │ ├── LICENSE</div><div class="line"> │ ├── README.md</div><div class="line"> │ ├── bower.json</div><div class="line"> │ └── lib</div><div class="line"> │ ├── fastclick.js</div><div class="line"> │ └── fastclick.min.js</div><div class="line"> ├── font-awesome</div><div class="line"> │ ├── HELP-US-OUT.txt</div><div class="line"> │ ├── bower.json</div><div class="line"> │ ├── css</div><div class="line"> │ │ ├── font-awesome.css</div><div class="line"> │ │ ├── font-awesome.css.map</div><div class="line"> │ │ └── font-awesome.min.css</div><div class="line"> │ └── fonts</div><div class="line"> │ ├── FontAwesome.otf</div><div class="line"> │ ├── fontawesome-webfont.eot</div><div class="line"> │ ├── fontawesome-webfont.svg</div><div class="line"> │ ├── fontawesome-webfont.ttf</div><div class="line"> │ ├── fontawesome-webfont.woff</div><div class="line"> │ └── fontawesome-webfont.woff2</div><div class="line"> ├── jquery</div><div class="line"> │ └── index.js</div><div class="line"> ├── jquery_lazyload</div><div class="line"> │ ├── CONTRIBUTING.md</div><div class="line"> │ ├── README.md</div><div class="line"> │ ├── bower.json</div><div class="line"> │ ├── jquery.lazyload.js</div><div class="line"> │ └── jquery.scrollstop.js</div><div class="line"> ├── ua-parser-js</div><div class="line"> │ └── dist</div><div class="line"> │ ├── ua-parser.min.js</div><div class="line"> │ └── ua-parser.pack.js</div><div class="line"> └── velocity</div><div class="line"> ├── bower.json</div><div class="line"> ├── velocity.js</div><div class="line"> ├── velocity.min.js</div><div class="line"> ├── velocity.ui.js</div><div class="line"> └── velocity.ui.min.js</div></pre></td></tr></table></figure>
<p>更新语言包的映射表。<br>更新_marco/post.swig,用于增加updated time元素,在post增加updated变量<br><a href="http://www.cnblogs.com/elementstorm/p/3142644.html" target="_blank" rel="external">swig使用指南</a><br><a href="http://www.jianshu.com/p/4d39b6578266" target="_blank" rel="external">从源码级别优化hexo next主题</a></p>
<p>为了增加page的toc<br>可以在page.swig里添加逻辑语句进行渲染</p>
<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">{% block sidebar %}</div><div class="line"> {{ sidebar_template.render(false) }}</div><div class="line">{% endblock %}</div><div class="line">#}</div><div class="line"></div><div class="line">{#</div><div class="line"><!--page增加sidebar控制--></div><div class="line"><!--sidebar不代表toc,toc是sidebar的一部分--></div><div class="line"><!--sidebar_template.render(false)显示非toc部分--></div><div class="line"><!--sidebar_template.render(true)显示toc部分--></div><div class="line"><!--toc和非toc是二选一的关系--></div><div class="line">#}</div><div class="line">{% block sidebar %}</div><div class="line"> {% if theme.sidebar.display == 'always' %}</div><div class="line"> {{ sidebar_template.render(true) }}</div><div class="line"> {% else %}</div><div class="line"> {{ sidebar_template.render(false) }}</div><div class="line"> {% endif %}</div><div class="line">{% endblock %}</div></pre></td></tr></table></figure>
<p>page是所有页面变量?<br>在%page_name/index.md里增加变量toc: true变量,<br>在page.swig增加判断逻辑对该变量校验<br><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"><!--page增加sidebar控制--></div><div class="line"><!--sidebar不代表toc,toc是sidebar的一部分--></div><div class="line"><!--sidebar_template.render(false)显示非toc部分--></div><div class="line"><!--sidebar_template.render(true)显示toc部分--></div><div class="line"><!--toc和非toc是二选一的关系--></div><div class="line"></div><div class="line">{% block sidebar %}</div><div class="line"> {% if theme.sidebar.display == 'always' %}</div><div class="line"> {{ sidebar_template.render(true) }}</div><div class="line"> {% else %}</div><div class="line"> {{ sidebar_template.render(false) }}</div><div class="line"> {% endif %}</div><div class="line">{% endblock %}</div><div class="line">#}</div><div class="line"></div><div class="line">{% block sidebar %}</div><div class="line"> {% if page.toc %}</div><div class="line"> {{ sidebar_template.render(true) }}</div><div class="line"> {% else %}</div><div class="line"> {{ sidebar_template.render(false) }}</div><div class="line"> {% endif %}</div><div class="line">{% endblock %}</div></pre></td></tr></table></figure></p>
<h2 id="在about增加update时间"><a href="#在about增加update时间" class="headerlink" title="在about增加update时间"></a>在about增加update时间</h2><h2 id="在about自我简介+resume链接"><a href="#在about自我简介+resume链接" class="headerlink" title="在about自我简介+resume链接"></a>在about自我简介+resume链接</h2><p>增加is_hidden: true属性<br>首页不显示<br><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></pre></td><td class="code"><pre><div class="line">{% block content %}</div><div class="line"> <section id="posts" class="posts-expand"></div><div class="line"> {% for post in page.posts %}</div><div class="line"> {#test#}</div><div class="line"> {% if post.is_hidden != 'true' %}</div><div class="line"> {{ post_template.render(post, true) }}</div><div class="line"> {% endif %}</div><div class="line"> {% endfor %}</div><div class="line"> </section></div><div class="line"></div><div class="line"> {% include '_partials/pagination.swig' %}</div><div class="line">{% endblock %}</div></pre></td></tr></table></figure></p>
<h1 id="自己创建-amp-管理主题"><a href="#自己创建-amp-管理主题" class="headerlink" title="自己创建&管理主题"></a>自己创建&管理主题</h1><h1 id="regenerate"><a href="#regenerate" class="headerlink" title="regenerate"></a>regenerate</h1><p>hexo clean<br>删除db.json</p>
<h1 id="支持流程图"><a href="#支持流程图" class="headerlink" title="支持流程图"></a>支持流程图</h1><p>npm install hexo-diagram –save<br>npm install phantomjs -g<br><code>[email protected]: Package renamed to phantomjs-prebuilt. Please update 'phantomjs' package references to 'phantomjs-prebuilt'</code><br>npm install phantomjs-prebuilt -g<br>通过sublime插件搜索node_module下所有包涵’phantomjs’语句,替换为’phantomjs-prebuilt’</p>
<p>/Users/NoraChan/Desktop/Blog/node_modules/.bin/esvalidate:<br>/Users/NoraChan/Desktop/Blog/node_modules/esprima/bin/esvalidate.js:<br>/Users/NoraChan/Desktop/Blog/node_modules/phantom/phantom.coffee:<br>/Users/NoraChan/Desktop/Blog/node_modules/phantom/phantom.js:</p>
<p>npm install phantomjs –save<br>–save和-g的区别是?(phantomjs-prebuilt)</p>
<p>决定按照insecure方式处理<br>修改回这些文件<br>/Users/NoraChan/Desktop/Blog/node_modules/.bin/esvalidate:<br>/Users/NoraChan/Desktop/Blog/node_modules/esprima/bin/esvalidate.js:<br>/Users/NoraChan/Desktop/Blog/node_modules/phantom/phantom.coffee:<br>/Users/NoraChan/Desktop/Blog/node_modules/phantom/phantom.js:</p>
<p><a href="http://www.luohanjie.com/2016-03-22/hexo-support-flowchart.html#fnref2" target="_blank" rel="external">hexo-diagram 渲染问题</a></p>
<p>流程图支持的markdown语法</p>
<p>###fancy box 效果问题&增加post级别fancy设置</p>
<p>设置点击不跳转<br>设置阴影效果<br><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></pre></td><td class="code"><pre><div class="line"><style type="text/css"></div><div class="line">img {</div><div class="line"> -moz-box-shadow: 3px 3px 5px 6px #ccc;</div><div class="line"> -webkit-box-shadow: 3px 3px 5px 6px #ccc;</div><div class="line"> box-shadow: 3px 3px 5px 6px #ccc;</div><div class="line">}</div><div class="line"></style></div></pre></td></tr></table></figure></p>
<p><a href="http://www.poluoluo.com/jzxy/201005/84148.html" target="_blank" rel="external">css3的box-shadow属性实现图层阴影效果</a><br><a href="https://css-tricks.com/snippets/css/css-box-shadow/" target="_blank" rel="external">CSS Box Shadow</a></p>
</h1>]]></content>
<summary type="html">
<style type="text/css">
img {
-moz-box-shadow: 3px 3px 5px 6px #ccc;
-webkit-box-shadow: 3px 3px 5px 6px #ccc;
box-shadow: 3px 3px 5px 6px #ccc;
}
</style>
<p>使用Hexo进行了Blog的Setup后,我们希望选择一个心仪的theme(即不同页面类型保持一致的风格),配置需要的功能选项/属性,甚至进行一些个性化的定制。<br>
</summary>
</entry>
<entry>
<title>STAR of Projects</title>
<link href="check_hexo_config_url/2016/11/15/STAR-of-Projects/"/>
<id>check_hexo_config_url/2016/11/15/STAR-of-Projects/</id>
<published>2016-11-15T12:57:53.000Z</published>
<updated>2017-12-15T14:03:33.000Z</updated>
<content type="html"><![CDATA[<h1 id="Summary"><a href="#Summary" class="headerlink" title="Summary"></a>Summary</h1><p>偏好数据技术&后端技术技术栈积累,希望充当一个能做产品需求分析、设计&项目管理的Program Manager。<br>本文档的主要是对每个经手项目做详细的S(Situation)T(Task)A(Action)R(Result)分析<br><a id="more"></a></p>
<h1 id="舜飞科技-DSP产品经理"><a href="#舜飞科技-DSP产品经理" class="headerlink" title="舜飞科技-DSP产品经理"></a>舜飞科技-DSP产品经理</h1><p>先后向CEO/产品负责人(创始人之一)汇报。<br>偏后端项目管理,偏Scrum Master。数据驱动衡量需求价值并协调前端、后端和测试资源保证项目顺利上线。协助流量变现,移动端广告投放占比增长到50%以上。</p>
<ol>
<li>构建产品部文档和项目管理制度;</li>
<li>负责渠道/媒介对接,衡量渠道价值,安排优先级;</li>
<li>重点客户/项目跟进(技术/英文/复杂等);<br>2016年,舜飞的战略方向有两个,一个是大的品牌广告主(展示类广告是广告市场大头,效果类广告欠积累),一个是海外的资源拓展(国内增量市场)。<br>其中,品牌广告主主要来自4A公司。这类需求有几个特点:</li>
</ol>
<ul>
<li>需求不确定/变更频繁</li>
<li>对技术需求没有概念且复杂、个性化</li>
<li>预算大,时间长</li>
<li>对概念( 一般由第三方技术对接)的要求高。</li>
</ul>
<p>其中,“高通”是舜飞2016年最大的品牌广告主,同时高通的成功投放也是舜飞“品牌广告主”战略至关重要的一步。</p>
<h2 id="“计划”一期设计-amp-测试"><a href="#“计划”一期设计-amp-测试" class="headerlink" title="“计划”一期设计&测试"></a>“计划”一期设计&测试</h2><h2 id="BES-AMS服务对接"><a href="#BES-AMS服务对接" class="headerlink" title="BES_AMS服务对接"></a>BES_AMS服务对接</h2><h3 id="Situation"><a href="#Situation" class="headerlink" title="Situation"></a>Situation</h3><p>主流的人群标签以及第三方数据主要是基于访客的浏览数据进行建模,对于toB类广告主,<strong>这类人群标签显然不够精准</strong>。BES是百度最大的ADX。AMS(Audience Matching Service)服务是百度关键词服务,通过API返回固定数量关键词对应的搜索人群(cookie),用于RTB过程中的(re)targeting。<br>另一方面,这个功能对于品牌广告主市场而言有强烈的吸引性,属于稀缺资源。渠道协议& 文档已经到位,客户有强烈需求。</p>
<h3 id="Task"><a href="#Task" class="headerlink" title="Task"></a>Task</h3><p>按时上线,保证服务正常。</p>
<h3 id="Action"><a href="#Action" class="headerlink" title="Action"></a>Action</h3><p>甄别背景信息&设计产品、跟进进度&撰写文档、保证测试</p>
<ul>
<li>探索&明确产品需求和商务紧急性<ul>
<li>显性需求:<ul>
<li>对接</li>
</ul>
</li>
<li>隐性需求:<ul>
<li>跨渠道支持关键词人群(二期,与技术成本相关)</li>
<li>运营理解并容易使用</li>
</ul>
</li>
<li>需要考虑的问题:<ul>
<li>广告主/DSP无法验证</li>
<li>可能无法投出量</li>
<li>可能无效果</li>
</ul>
</li>
</ul>
</li>
<li>和渠道沟通,确认<ul>
<li>确认后端数据交换流程、协议</li>
<li>接口测试(联调)</li>
<li>确认前端界面开发方案</li>
</ul>
</li>
<li>测试<ul>
<li>对比日志中请求数据与出价数据保证出价比例</li>
</ul>
</li>
<li>控制商务期望</li>
<li>确认数据口径,撰写使用文档,简单明了阐述清楚原理和使用方法,降低使用成本。包括使用规则和cookie周期等可能会遇到的问题。</li>
</ul>
<p>遭遇两个方案:</p>
<ul>
<li>实时请求方案(基于BiddingX、BES、三方ADX共同成功mapping的cookies)<br>理想模型:</li>
</ul>
<figure class="highlight plain"><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">BiddingX->BES: words</div><div class="line">BES->BiddingX: tag_id</div></pre></td></tr></table></figure>
<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></pre></td><td class="code"><pre><div class="line">All ADXs->BiddingX: Bid Request</div><div class="line">BiddingX->BES: AMS Request</div><div class="line">BES->BiddingX:tag_id(s)</div><div class="line">BiddingX->All ADXs: Bid Response</div></pre></td></tr></table></figure>
<ul>
<li>离线方案<br>实际模型(考虑服务器资源和120ms内的返回竞价回复的实际情况):</li>
</ul>
<figure class="highlight plain"><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">BiddingX->BES: words</div><div class="line">BES->BiddingX: tag_id</div></pre></td></tr></table></figure>
<p><strong>曝光cookie mapping+cookie mapping 托管</strong><br><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></pre></td><td class="code"><pre><div class="line">Other ADXs->BiddingX: Bid Request</div><div class="line">BiddingX->BiddingX:self-query</div><div class="line">BiddingX->Other ADXs: Bid Response</div></pre></td></tr></table></figure></p>
<h3 id="Result"><a href="#Result" class="headerlink" title="Result"></a>Result</h3><p>按时上线,服务SAP、IBM广告主。</p>
<h2 id="The-Media-Trust对接"><a href="#The-Media-Trust对接" class="headerlink" title="The_Media_Trust对接"></a>The_Media_Trust对接</h2><h3 id="Situation-1"><a href="#Situation-1" class="headerlink" title="Situation"></a>Situation</h3><p>进行海外投放过程中,像Imobi/Google/Mopub/Pubmatic渠道,有严格的创意&政策要求。The Media Trust是保证创意、落地页无恶意代码以及政策违反的第三方服务机构,通过定时轮询,<strong>保证投放免受政策惩罚</strong>。<br>由于代理商广告创意包含恶意代码,BiddingX被Google惩罚,禁止投放。台湾、香港以及东南亚、国外广告主受严重影响,需要紧急上线该服务保证创意质量。</p>
<h3 id="Task-1"><a href="#Task-1" class="headerlink" title="Task"></a>Task</h3><ul>
<li>通过对接第三方服务、和Google沟通等恢复海外资源投放</li>
<li>确认Google投放要求,避免类似情况出现</li>
</ul>
<h3 id="Action-1"><a href="#Action-1" class="headerlink" title="Action"></a>Action</h3><ul>
<li>和Google Tech Team&Business Team沟通确认specific issue(创意/落地页)<ul>
<li>确认清楚被惩罚的具体原因(严重沟通漏斗)</li>
<li>结合实际考虑Google的对接建议</li>
</ul>
</li>
<li>对接保证创意安全<ul>
<li>确认最保守的轮询策略(Google有最后通牒:永久禁投)</li>
<li>合适的提醒方案(不打扰目前创意送审流程同时出问题可以及时发现、修改和沟通:送审轮询得到恶意代码后提醒)</li>
</ul>
</li>
<li>测试<ul>
<li>review出问题创意是否及时阻止</li>
<li>case by case 跟进所有The Media Trust警告邮件</li>
<li>确认被默认停止投放的广告具体原因</li>
</ul>
</li>
</ul>
<h3 id="Result-1"><a href="#Result-1" class="headerlink" title="Result"></a>Result</h3><p>Google恢复正常投放,顺利保证The Media Trust服务。</p>
<h2 id="Peer-39-ADbug-brandsafety(品牌安全)对接"><a href="#Peer-39-ADbug-brandsafety(品牌安全)对接" class="headerlink" title="Peer_39/ADbug_brandsafety(品牌安全)对接"></a>Peer_39/ADbug_brandsafety(品牌安全)对接</h2><h3 id="Situation-2"><a href="#Situation-2" class="headerlink" title="Situation"></a>Situation</h3><p>品牌类广告主对于品牌美誉度有要求,要求广告位所在的页面不影响品牌调性。brandsafety指的正是这一类ad verification服务。Peer 39/ADbug是国内外该服务提供商中最出名的。机房竞价前请求(国内/海外)服务器page级别的属性数据,判断是否危害广告主品牌安全。<strong>用于保护品牌类广告主广告调性</strong>。<br>主要用于高通广告主第三波投放。</p>
<h3 id="Task-2"><a href="#Task-2" class="headerlink" title="Task"></a>Task</h3><ul>
<li>对接brandsafety服务</li>
<li>调研brandsafety原理、关键指标和边界并分享</li>
</ul>
<h3 id="Action-2"><a href="#Action-2" class="headerlink" title="Action"></a>Action</h3><ul>
<li>控制商务期望(最重要)</li>
<li>探索&明确产品需求和商务紧急性<ul>
<li>需求&里程碑确认</li>
<li>技术&产品文档确认</li>
<li>确认前端界面开发方案和后端出价、获取数据逻辑</li>
</ul>
</li>
<li>保证使用<ul>
<li>测试(合理预计过滤比例)</li>
<li>数据报告(验证有效性)</li>
<li>使用方案</li>
</ul>
</li>
<li>基于行业内brandsafety的adserving调研并产出<a href="/PRD_deployment/%E5%93%81%E7%89%8C%E5%AE%A2%E6%88%B7%E5%85%B3%E5%BF%83%E7%9A%84brandsafety%E5%92%8C%E5%8F%8D%E4%BD%9C%E5%BC%8A/index.html">PPT</a></li>
</ul>
<h3 id="Result-2"><a href="#Result-2" class="headerlink" title="Result"></a>Result</h3><p>顺利对接brandsafety服务,服务高通广告主并形成文档、ppt,完成分享</p>
<h2 id="Sizmek-ad-serving对接"><a href="#Sizmek-ad-serving对接" class="headerlink" title="Sizmek_ad_serving对接"></a>Sizmek_ad_serving对接</h2><h3 id="Situation-3"><a href="#Situation-3" class="headerlink" title="Situation"></a>Situation</h3><p>Sizmek为4A提供广告创意& 监测服务,包括动态创意和brandsafety (品牌安全-post bid)/viewability(可视率)监测。<strong>通过对接,保证创意、落地页和竞价服务(DSP端、渠道端)相互兼容</strong>。</p>
<p>主要用于高通广告主投放。</p>
<h3 id="Task-3"><a href="#Task-3" class="headerlink" title="Task"></a>Task</h3><ul>
<li>对接第三方动态创意服务(通过HTML投放js)</li>
<li>保证video in banner正常投放(在banner广告位做视频投放)</li>
</ul>
<h3 id="Action-3"><a href="#Action-3" class="headerlink" title="Action"></a>Action</h3><ul>
<li>控制商务期望(最重要)</li>
<li>探索&明确产品需求<ul>
<li>确认“动态创意”包含什么服务(通过HTML投放js)</li>
<li>确认video in banner投放具体细节<ul>
<li>特殊广告形式下的成本(CDN)</li>
<li>非expandable</li>
<li>确认具体尺寸& 分别尺寸可竟得的impression数据</li>
<li>具体创意尺寸& 格式、压缩方式、加载时长等(第几帧开始第几帧结束)</li>
</ul>
</li>
<li>广告主方/渠道方是否有特殊需求<ul>
<li>渠道/广告位粒度的协议确认</li>
</ul>
</li>
</ul>
</li>
<li>测试<ul>
<li>保证统计、监测服务正常</li>
<li>分终端、分ADX的adserving测试</li>
</ul>
</li>
</ul>
<h3 id="Result-3"><a href="#Result-3" class="headerlink" title="Result"></a>Result</h3><p>正常投放,并在投放过程中解决渠道对类Mraid协议、创意兼容问题(设备级别)</p>
<h2 id="高通DSP投放"><a href="#高通DSP投放" class="headerlink" title="高通DSP投放"></a>高通DSP投放</h2><h3 id="Situation-4"><a href="#Situation-4" class="headerlink" title="Situation"></a>Situation</h3><p>高通(甲方)的需求来自奥美(乙方)和sizmek(丙方),舜飞在商务投放中处于丁方的地位,需要向上把握需求。且商务决策中每一方的需求点都不一样,执行的细节有很大需要把握的空间和需求的正确性。</p>
<ul>
<li>需求来源于邮件,而且同一个需求在不同的时间点由不同的人提出,继续确认哪些需求是同一个需求,那些不是,确认范围和时间点。</li>
</ul>
<p>主要用于高通广告主第二波投放。</p>
<p>高通是2016年最重要的品牌类广告主,品牌类广告主的需求变化多且个性化。<strong>解决业务层面为当前产品/技术架构带来的挑战</strong>。</p>
<h3 id="Task-Result"><a href="#Task-Result" class="headerlink" title="Task/Result"></a>Task/Result</h3><ul>
<li>保证campaign按时上线</li>
<li>满足商务“平分轮显”需求</li>
</ul>
<h3 id="Action-4"><a href="#Action-4" class="headerlink" title="Action"></a>Action</h3><ul>
<li>控制商务期望(最重要)<ul>
<li>明确cookie保存周期最多半年(频次控制by cookie&by time)</li>
</ul>
</li>
<li>明确商务需求,包括媒介需求& 产品功能需求,确认需求边界于关键时间点<ul>
<li>确认“平分轮显”具体要求(by day)<ul>
<li>跨渠道跨创意的频次控制(by adx&by creative&by cookie) </li>
<li>无法预测的累积时间段的频次控制(by cookie&by time)</li>
<li>创意轮流显示且平分显示次数(by creative&by cookie)</li>
</ul>
</li>
<li>保证优酷/腾讯/爱奇艺PDB 市场对接完成(OTV)</li>
</ul>
</li>
<li>从商务需求转化为技术需求,拆分子任务和关键验证点(创意按by cookie/by 频次 随机)</li>
<li>测试<ul>
<li>设置合适的campaign(按活动/按创意,对比频次数据,预期数据无差异)</li>
<li>保证统计discrepancy</li>
</ul>
</li>
<li>广告主方/渠道方是否有特殊需求<ul>
<li>渠道/广告位粒度的协议确认</li>
<li>确认RTB/PDB市场完成对接</li>
</ul>
</li>
<li>考虑可扩展性<ul>
<li>跨渠道跨创意的频次控制(by adx&by creative&by cookie)</li>
<li>campaign、产品、创意包粒度的“平分轮显”需求</li>
<li>全局轮显& 用户轮显</li>
<li>3+reach最多</li>
</ul>
</li>
</ul>
<h2 id="移动RTB-全渠道PMP-PDB市场对接"><a href="#移动RTB-全渠道PMP-PDB市场对接" class="headerlink" title="移动RTB/全渠道PMP/PDB市场对接"></a>移动RTB/全渠道PMP/PDB市场对接</h2><h3 id="Situation-Result"><a href="#Situation-Result" class="headerlink" title="Situation/Result"></a>Situation/Result</h3><p>14年后,互联网进入移动时代。同时广告市场也根据商务需求和技术发展进入了RTB/PMP/PDB的精细化运营的时代,RTB/PMP/PDB市场业务有区别,需要根据协议和商务业务调整竞价服务。从产品层面考虑兼容性,<strong>兼容跨渠道差异以及现有产品功能</strong>。<br>该项目由很多小项目组成,根据不同项目case by case 解决问题,兼产品经理和项目经理,根据协议进行产品需求设计,协调资源,推动进度,保证上线。<br>例如:</p>
<ul>
<li>腾讯渠道RTB和PMP/PDB通过两套(相似)协议和分离环境实现两部分流量的分发。流程有不一样的地方,为了高度的拓展性,牺牲了一定的的便利性:如何关联广告主,如何放量。为了可理解性,希望一定的开发资源。</li>
<li>资质的扩展、adx的合并与分离等(新旧数据)</li>
<li>通过算法保证PDB按比例返量并考虑极端情况(提前和媒体&广告主沟通)</li>
<li>PDB竞价暂停情况</li>
</ul>
<h2 id="SEM品牌推广"><a href="#SEM品牌推广" class="headerlink" title="SEM品牌推广"></a>SEM品牌推广</h2><p>SEM做广告投放</p>
<h3 id="Situation-5"><a href="#Situation-5" class="headerlink" title="Situation"></a>Situation</h3><p>原MKT SEM离职,老板希望重新整理BiddingX品牌的SEM&DSP投放,通过数据化运营优化后吸引客户注册</p>
<h3 id="Task-4"><a href="#Task-4" class="headerlink" title="Task"></a>Task</h3><p>负责BiddingX品牌的SEM& DSP营销,调整关键词和campaign,优化后吸引客户注册</p>
<h3 id="Action-5"><a href="#Action-5" class="headerlink" title="Action"></a>Action</h3><ul>
<li>整合Site Tracking和PDMP重定向目标人群</li>
<li>利用数据可视化展现工作成果</li>
</ul>
<h3 id="Result-4"><a href="#Result-4" class="headerlink" title="Result"></a>Result</h3><ul>
<li>日均消费提高400%(700–>3000)</li>
<li>点击率提升100%(0.3%–>0.7%)</li>
<li>展示量提升100%<br><img src="/PRD_deployment/SEM/SEM.png" alt="SEM"></li>
</ul>
<h2 id="有赞商城DSP推广"><a href="#有赞商城DSP推广" class="headerlink" title="有赞商城DSP推广"></a>有赞商城DSP推广</h2><h3 id="Situation-6"><a href="#Situation-6" class="headerlink" title="Situation"></a>Situation</h3><p>电商APP推广,为了开拓电商客户,有赞是2015年重点客户之一。通过使用包括Banner创意和视频创意在内,尝试引导网页流量转化为APP激活,用于探索PC往APP转化路径。</p>
<h3 id="Task-5"><a href="#Task-5" class="headerlink" title="Task"></a>Task</h3><ul>
<li>通过投放优化,满足客户CPA需求</li>
<li>尝试引导网页流量转化为APP激活 </li>
</ul>
<h3 id="Action-6"><a href="#Action-6" class="headerlink" title="Action"></a>Action</h3><ul>
<li>通过业务分析,制定投放策略<ul>
<li>受众分析</li>
<li>选择媒体</li>
<li>不断建立测试campaign& 调整优化创意、落地页、定向条件</li>
<li>整合第三方DMP数据到DSP进行目标人群重定向</li>
</ul>
</li>
<li>获取激活数据用于优化<ul>
<li>对接第三方监测平台,通过S2S scheme获取激活数据<br><img src="/PRD_deployment/S2S_scheme/S2S_scheme.jpg" alt="S2S scheme"></li>
<li>在PC端缺乏数据回传机制后,改方向投放</li>
</ul>
</li>
<li>使用项目管理平台(tower.im)协调优化师与开发资源</li>
</ul>
<h3 id="Result-5"><a href="#Result-5" class="headerlink" title="Result"></a>Result</h3><p>优化后,Android端正常投放并达到客户CPA要求。</p>
<h2 id="移动SSP-iOS-SDK第一版"><a href="#移动SSP-iOS-SDK第一版" class="headerlink" title="移动SSP_iOS_SDK第一版"></a>移动SSP_iOS_SDK第一版</h2><h3 id="Situation-7"><a href="#Situation-7" class="headerlink" title="Situation"></a>Situation</h3><p>DSP发展到一个阶段,意识到媒体是广告市场的竞争力所在,需要拓展自有的核心视频& 信息流资源。商务团队已经有几个目标客户拓展中,有其紧急性,但与此同时,SSP开发团队项目由于需求持续变更,无法迭代。老板需要两周内完成完成第一版,后续迭代。</p>
<h3 id="Task-Result-1"><a href="#Task-Result-1" class="headerlink" title="Task/Result"></a>Task/Result</h3><p>保证移动SSP iOS SDK第一版两周内上线(老板deadline)</p>
<h3 id="Action-7"><a href="#Action-7" class="headerlink" title="Action"></a>Action</h3><ul>
<li>通过SSP PM不进行次要需求的开发(只保留关键指标:展示量& 收入 的统计和测试)</li>
<li>保证BD团队和开发团队沟通,确保上线日期</li>
</ul>
<hr>
<h1 id="唯品会-数据产品经理"><a href="#唯品会-数据产品经理" class="headerlink" title="唯品会-数据产品经理"></a>唯品会-数据产品经理</h1><p>向BI(一级部门)/数据产品(二级部门)高级经理汇报。<br>数据分析产品化。涉及数据产品的主要流程,从PRD文档、到产品的UI设计,以及跨系统的产品整合,甚至部分ETL,黑白盒数据测试和项目管理工作。</p>
<ol>
<li>负责面向管理层的APP数据产品, 产品化常规的运营分析流程,支持决策;</li>
<li>接手旧产品,并根据管理层反馈做快速迭代;</li>
<li>参与创新APP项目,如, 我是妈咪 ( 母婴闪购电商)和 hey!购物 (基于库存的个性化推荐APP);</li>
</ol>
<h2 id="总裁看板"><a href="#总裁看板" class="headerlink" title="总裁看板"></a>总裁看板</h2><h3 id="Situation-8"><a href="#Situation-8" class="headerlink" title="Situation"></a>Situation</h3><p>利用Oracle BIEE实现销售、流量业务的数据报表化,管理层通过每日邮件方式了解业务运营。原“总裁看板”产品经理离职,作为“总裁看板”第二任产品经理接手该项目。也是作为“数据产品经理”后,第一个接手负责的产品/项目。由于ETL开发人员紧张,也参与部分ETL开发工作(熟悉业务&具备独立分析能力)。</p>
<h3 id="Task-6"><a href="#Task-6" class="headerlink" title="Task"></a>Task</h3><ul>
<li>保证产品数据正确& 稳定运行,及时处理脏数据& fix bug</li>
<li>结合新业务进行产品迭代,通过数据向管理层传递最新业务的现状</li>
<li>对管理层提出的运营问题快速反馈(具备分析师经验)& 迅速响应新需求</li>
</ul>
<h3 id="Action-8"><a href="#Action-8" class="headerlink" title="Action"></a>Action</h3><ul>
<li>了解产品开发/上线流程</li>
<li>了解产品指标体系&统计口径,对比常规分析报告与差异,预判可能出现的问题</li>
</ul>
<h3 id="Result-6"><a href="#Result-6" class="headerlink" title="Result"></a>Result</h3><p>顺利接手旧系统,并对管理层需求快速反馈。(5天内)</p>
<ul>
<li>针对数据中的问题提供分析报告</li>
<li>根据业务变化进行ETL工作</li>
<li>协调资源保证产品按时上线</li>
</ul>
<h2 id="创新APP项目"><a href="#创新APP项目" class="headerlink" title="创新APP项目"></a>创新APP项目</h2><h3 id="Situation-Result-1"><a href="#Situation-Result-1" class="headerlink" title="Situation/Result"></a>Situation/Result</h3><p>唯品会执行多APP战略,要求基于目前的业务系统孵化新业务APP。BI部门也需要参与到业务运营,承担KPI,真正做到数据驱动业务(业绩)。包括“我是妈咪”(母婴特卖垂直领域电商APP)和“hey!购物”(基于库存的个性化推荐APP)。<br>由于对接品牌部门和市场部门业务分析,对推广业务熟悉。</p>
<ul>
<li>负责整合旧系统的推广、渠道、账户业务逻辑到新app。</li>
<li>负责H5推广活动页产品实现,通过微博、微信渠道吸引新用户</li>
<li>功能测试和数据埋点</li>
</ul>
<h3 id="Task-7"><a href="#Task-7" class="headerlink" title="Task"></a>Task</h3><ul>
<li>对接优惠系统、渠道推广系统到“我是妈咪”(母婴特卖垂直领域电商APP)</li>
<li>“我是妈咪”(母婴特卖垂直领域电商APP)部分购物车相关、用户中心(profile)相关设计和系统对接</li>
<li>对微信HTML5推广需求出设计方案&数据追踪方案</li>
<li>接手& 跟进 “hey!购物”(基于库存的个性化推荐APP)的 数据埋点&负责用户中心(profile)相关功能测试用例</li>
</ul>
<h3 id="Action-9"><a href="#Action-9" class="headerlink" title="Action"></a>Action</h3><ul>
<li>了解旧系统业务逻辑,出产品设计&跟进项目进度</li>
<li>了解需求细节</li>
</ul>
<h2 id="移动司南"><a href="#移动司南" class="headerlink" title="移动司南"></a>移动司南</h2><p><a href="/PRD_deployment/移动司南/index.html">PRD</a></p>
<h3 id="Situation-Result-2"><a href="#Situation-Result-2" class="headerlink" title="Situation/Result"></a>Situation/Result</h3><ol>
<li>面向对象是CXO level的管理层,数据需求主要是对经营profile的了解。</li>
<li>当时部门要求pitch老板资源的,因此,对高保真要求高于详细文档要求。当时目标是成为独立事业部,开发和设计资源都很少,能够用口头沟通代替部分文字表达。</li>
<li>这是第一份偏设计的PRD,而且要求(尽量)高保真,有问题,但不影响展示(主要根据手机屏幕大小做了取舍)<br>全面负责面向管理层的移动端分析产品,包括产品设计,数据探索和数据可视化。</li>
</ol>
<h3 id="Task-8"><a href="#Task-8" class="headerlink" title="Task"></a>Task</h3><p>基于PC端产品,根据移动端特性取舍,做移动端数据产品设计</p>
<h3 id="Action-10"><a href="#Action-10" class="headerlink" title="Action"></a>Action</h3><ul>
<li>阅读iOS&Android设计指南</li>
<li>数据探索设计是否合理(指标范围,实际数据展现,分析角度,计算精度)</li>
<li>尽快提交设计获取反馈进行迭代</li>
</ul>
<p><a href="http://wiki.jikexueyuan.com/project/material-design/" target="_blank" rel="external">Android中文</a><br><a href="http://www.google.com/design/spec/material-design/" target="_blank" rel="external">Material Design</a><br><a href="https://isux.tencent.com/ios8-human-interface-guidelines.html" target="_blank" rel="external">iOS8人机界面指南</a><br><a href="https://developer.apple.com/ios/human-interface-guidelines/overview/design-principles/" target="_blank" rel="external">Human Interface Guidelines</a></p>
<h2 id="唯品司南"><a href="#唯品司南" class="headerlink" title="唯品司南"></a>唯品司南</h2><h3 id="Situation-Result-3"><a href="#Situation-Result-3" class="headerlink" title="Situation/Result"></a>Situation/Result</h3><p>作为功能性产品经理,参与到品牌、档期、品类维度的分析产品中去<br>为品牌销售和区域销售提供数据决策的可视化产品。对常规化的分析进行ETL后,利用high-chart,e-chart框架展现,包括档期分析,退拒分析等。获得管理层高度认可。一期参与到后期数据验证,负责黑白盒数据测试&验证,确保数据正确性。二期作为功能性产品经理,参与到品类分析、品牌分析的产品规划。并对数据可视化提供UE建议。</p>
<h3 id="Task-9"><a href="#Task-9" class="headerlink" title="Task"></a>Task</h3><ul>
<li>了解产品指标体系&统计口径,对数据进行黑盒测试,找出常规分析报告差异</li>
<li>作为功能性产品经理,参与到品类分析、品牌分析的产品规划。并对数据可视化提供UE建议。</li>
</ul>
<h3 id="Action-11"><a href="#Action-11" class="headerlink" title="Action"></a>Action</h3><ul>
<li>数据探索&分析</li>
<li>和商务运营沟通</li>
<li>了解数据口径</li>
<li>分析产品,具体看什么指标,怎么看?具体如何同比,如何环比。</li>
</ul>
<h2 id="唯品经纬"><a href="#唯品经纬" class="headerlink" title="唯品经纬"></a>唯品经纬</h2><h3 id="Situation-Result-4"><a href="#Situation-Result-4" class="headerlink" title="Situation/Result"></a>Situation/Result</h3><p>“唯品经纬”属于创新项目,希望通过利用订单地址数据,挖掘客户有价值的人口统计学信息& 进行职业信息分析,并根据这些信息找到营销切入点,实现的业务可视化,为市场进行地面推广提供支持。对唯品经纬数据部分进行黑盒测试。由于ETL离职,作为ETL开发参与到白盒测试,保证数据正确性。</p>
<h3 id="Task-10"><a href="#Task-10" class="headerlink" title="Task"></a>Task</h3><ul>
<li>了解产品指标体系&统计口径,对数据进行黑盒测试,找出常规分析报告差异</li>
<li>作为ETL,协助指标体系口径一致</li>
</ul>
<h3 id="Action-12"><a href="#Action-12" class="headerlink" title="Action"></a>Action</h3><ul>
<li>确认项目边界</li>
<li>白盒子口径检验</li>
<li>设计数据测试方案</li>
<li>确认项目便捷</li>
</ul>
<hr>
<h1 id="唯品会-数据分析师"><a href="#唯品会-数据分析师" class="headerlink" title="唯品会-数据分析师"></a>唯品会-数据分析师</h1><p>先后向BI(一级部门)/运营分析(二级部门)经理、主管汇报。<br>作为运营分析组一员,每周提供运营分析以及日常快捷反馈到总裁会,并根据反馈进行运营层面的分析建议。<br>负责市场运营方面日常分析:</p>
<ol>
<li>广告投放&渠道:为衡量渠道价值进行资源分配而构造归因模型;</li>
<li>促销组合:不同促销形式的效果&组合分析,并形成报表系统;</li>
<li>财务:市场费用的构成分析;</li>
</ol>
<h2 id="微信特卖"><a href="#微信特卖" class="headerlink" title="微信特卖"></a>微信特卖</h2><h3 id="Situation-Result-5"><a href="#Situation-Result-5" class="headerlink" title="Situation/Result"></a>Situation/Result</h3><p>100%对微信商城的BI分析负责,形成虚拟团队向品牌副总裁汇报。利用微信公众号,在微信端进行销售。</p>
<h3 id="Task-11"><a href="#Task-11" class="headerlink" title="Task"></a>Task</h3><p>100%support微信商城销售</p>
<ul>
<li>每周提供微信数据周报以及数据分析</li>
<li>对微信常态分析产品化</li>
<li>建议微信端代金券全场使用,促进跨品牌销售;</li>
</ul>
<h3 id="Action-13"><a href="#Action-13" class="headerlink" title="Action"></a>Action</h3><ul>
<li>了解底层仓库表&申请权限</li>
<li>提供业务报表</li>
<li>和大数据部门沟通,形成微信报表产品</li>
</ul>
<h2 id="归因模型"><a href="#归因模型" class="headerlink" title="归因模型"></a>归因模型</h2><h3 id="Situation-Result-6"><a href="#Situation-Result-6" class="headerlink" title="Situation/Result"></a>Situation/Result</h3><p>独立分析项目。确认定岗BI部门后,参与到BI对市场部的跨渠道归因模型项目中,探索跨投放与销售的因果关系。利用归因(助攻模型)模型衡量渠道贡献价值,尝试利用图论实现可视化,提供业务决策支持。</p>
<h3 id="Task-12"><a href="#Task-12" class="headerlink" title="Task"></a>Task</h3><h3 id="Action-14"><a href="#Action-14" class="headerlink" title="Action"></a>Action</h3><h1 id="其它"><a href="#其它" class="headerlink" title="其它"></a>其它</h1><h2 id="电子商务代运营"><a href="#电子商务代运营" class="headerlink" title="电子商务代运营"></a>电子商务代运营</h2><h3 id="Situation-9"><a href="#Situation-9" class="headerlink" title="Situation"></a>Situation</h3><p>大二参与到电商创业团队,当时天猫(淘宝商城)刚成立,全网都有流量、运营资源倾斜,从高利润品类切入(化妆品),做到50w/m销售业绩</p>
<h3 id="Task-13"><a href="#Task-13" class="headerlink" title="Task"></a>Task</h3><p>确认推广目标,参与淘店运营</p>
<h3 id="Action-15"><a href="#Action-15" class="headerlink" title="Action"></a>Action</h3><ul>
<li>微博运营活动策划,目标设定,拉去资源,淘店引流</li>
<li>校园活动策划与执行</li>
</ul>
<h3 id="Result-7"><a href="#Result-7" class="headerlink" title="Result"></a>Result</h3><p>50w/m销售业绩</p>
<p>PS:<br>工作中,探索的部分比较多,受限于资源和信息不对称,自己发起的商业化产品较少<br>但尝试发起并运营内部的项目管理产品 - wiki & jira & Gitbook</p>
<p>由于舜飞是starup,以及作为agent的特殊性,这边的工作比较少考虑完整的测试用例覆盖,工作中缺乏完整的联调环境和测试环境,广告投放正式环境和联调环境本质还是有差距的。这是由于:</p>
<ul>
<li>自身无法控制对方环境的完整性</li>
<li>广告市场的极度长尾化与信息不对称的资源割据</li>
<li>更多通过线上测试以及快速回归(出价和统计都比较难覆盖)</li>
</ul>
<p>舜飞有明确的规章制度把产品技术和商务区隔开,我无法得知整个投放涉及的预算,但后续第二第三波投放都主要由我对接,投放没有出现大问题,基本按进度上线</p>
]]></content>
<summary type="html">
<h1 id="Summary"><a href="#Summary" class="headerlink" title="Summary"></a>Summary</h1><p>偏好数据技术&amp;后端技术技术栈积累,希望充当一个能做产品需求分析、设计&amp;项目管理的Program Manager。<br>本文档的主要是对每个经手项目做详细的S(Situation)T(Task)A(Action)R(Result)分析<br>
</summary>
</entry>
<entry>
<title>《深入理解计算机操作系统》-chapter 7 链接 Memo</title>
<link href="check_hexo_config_url/2016/10/27/%E3%80%8A%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E3%80%8B-chapter-7-%E9%93%BE%E6%8E%A5-Memo/"/>
<id>check_hexo_config_url/2016/10/27/《深入理解计算机操作系统》-chapter-7-链接-Memo/</id>
<published>2016-10-27T00:24:35.000Z</published>
<updated>2016-12-08T01:23:39.000Z</updated>
<content type="html"><![CDATA[<a id="more"></a>
<p>链接可在编译(compile-time)、加载(load-time)或运行(run-time)时执行。</p>
<p>顺序:<br>语言预处理器–>编译器–>汇编器–>链接器</p>
<p>###静态链接<br>输入:可重定位的目标文件(object file),命令行参数<br>输出:可执行的目标文件</p>
<blockquote>
<p>输入的可重定位目标文件由各种不同的代码和数据节(section)组成。指令在一个节中,初始化的全局变量在另一个节中,而未初始化的变量又在另外一个节中。</p>
</blockquote>
<p>.pyx–>.c–>.o/.so</p>
]]></content>
<summary type="html">
<a id="more"></a>
<p>链接可在编译(compile-time)、加载(load-time)或运行(run-time)时执行。</p>
<p>顺序:<br>语言预处理器–&gt;编译器–&gt;汇编器–&gt;链接器</p>
<p>###静态链接<br>输入:可
</summary>
</entry>
<entry>
<title>【译】快速开始Jupyter Notebook</title>
<link href="check_hexo_config_url/2016/10/12/%E3%80%90%E8%AF%91%E3%80%91%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8BJupyter%20Notebook/"/>
<id>check_hexo_config_url/2016/10/12/【译】快速开始Jupyter Notebook/</id>
<published>2016-10-12T03:08:00.000Z</published>
<updated>2016-12-08T02:40:12.000Z</updated>
<content type="html"><![CDATA[<p><a href="http://nbviewer.jupyter.org/github/ipython/ipython/blob/3.x/examples/Notebook/Index.ipynb" target="_blank" rel="external">#reference-Jupyter Notebook </a><br><a id="more"></a></p>
<p>If you would like to learn more about the specific elements within the Notebook Editor, you can go through the User Interface Tour by selecting Help in the menubar then selecting User Interface Tour.</p>
<p>(<a href="http://jupyter-notebook.readthedocs.io/en/latest/ui_components.html)" target="_blank" rel="external">http://jupyter-notebook.readthedocs.io/en/latest/ui_components.html)</a></p>
]]></content>
<summary type="html">
<p><a href="http://nbviewer.jupyter.org/github/ipython/ipython/blob/3.x/examples/Notebook/Index.ipynb">#reference-Jupyter Notebook </a><br>
</summary>
</entry>
<entry>
<title>计算机网络观测</title>
<link href="check_hexo_config_url/2016/10/10/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E8%A7%82%E6%B5%8B/"/>
<id>check_hexo_config_url/2016/10/10/计算机网络观测/</id>
<published>2016-10-10T00:39:17.000Z</published>
<updated>2016-12-09T12:40:02.000Z</updated>
<content type="html"><![CDATA[<h1 id="Summary"><a href="#Summary" class="headerlink" title="Summary"></a>Summary</h1><p><code>104.128.92.224</code>和<code>119.29.198.230</code>是两台独立服务器(VPS),其中,<code>104.128.92.224</code>位于Los Angeles,<code>119.29.198.230</code>位于广州。通过对它们的网络行为进行监控,对比他们收取到回复的差异,确认GFW的特殊价值并探索计算机应用层协议的原理与细节。(本文以<code>LA服务器</code>和<code>广州服务器</code>分别指代)<br>本文主要参考<a href="http://drops.wooyun.org/papers/10177" target="_blank" rel="external">翻墙路由器的原理与实现</a>来探索<strong>计算机网络</strong>(主要是应用层),并对探索过程中遇到的问题做简单记录,遇到问题涉及<strong>计算机操作系统</strong>、<strong>编译原理</strong>的部分知识。</p>
<a id="more"></a>
<p><a href="http://ip.cn/index.php?ip=104.128.92.224" target="_blank" rel="external">#reference-104.128.92.224的IP地址</a><br><a href="http://ip.cn/index.php?ip=119.29.198.230" target="_blank" rel="external">#reference-119.29.198.230的IP地址</a><br> <a href="/2016/10/06/%E3%80%90%E8%BD%AC%E3%80%91%E7%BF%BB%E5%A2%99%E8%B7%AF%E7%94%B1%E5%99%A8%E7%9A%84%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E7%8E%B0/">#reference-【转】翻墙路由器的原理与实现</a></p>
<p> #reference- 操作系统的差异,Ubuntu<br> <a href="https://pypi.python.org/pypi/NetfilterQueue" target="_blank" rel="external">#reference-netfilterqueue文档</a></p>
<h1 id="工具"><a href="#工具" class="headerlink" title="工具"></a>工具</h1><h2 id="NetfilterQueue"><a href="#NetfilterQueue" class="headerlink" title="NetfilterQueue"></a>NetfilterQueue</h2><p>我们主要利用<a href="https://github.com/kti/python-netfilterqueue" target="_blank" rel="external">NetfilterQueue</a>进行计算机网络的观测,这是Libnetfilter_queue的python实现,Libnetfilter_queue是<a href="http://netfilter.org/projects/libnetfilter_queue/" target="_blank" rel="external">Netfilter project</a>的一部分。<br>Linux下,NetfilterQueue允许用户访问符合iptables规则的IP包。iptables也是Netfilter project的一部分,理解成一张用于保存IP包转发规则的table就好,主要用于防火墙。利用这套规则,计算机可以接受、丢弃,改变(转发)和标记IP包。</p>
<p>###升级apt-get<br>更新资源并升级:</p>
<blockquote>
<p>\$ sudo apt-get update && sudo apt-get upgrad</p>
</blockquote>
<p><a href="http://blog.csdn.net/ai_net/article/details/7710324" target="_blank" rel="external">http://blog.csdn.net/ai_net/article/details/7710324</a></p>
<h3 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h3><p>NetfilterQueue有依赖,不细心的童鞋会走弯路(例如我T_T)</p>
<blockquote>
<p>sudo apt-get install build-essential python-dev libnetfilter-queue-dev # 系统依赖<br>sudo pip install NetfilterQueue # NetfilterQueue安装</p>
</blockquote>
<h4 id="安装过程中可能遇到的问题"><a href="#安装过程中可能遇到的问题" class="headerlink" title="安装过程中可能遇到的问题"></a>安装过程中可能遇到的问题</h4><p>未安装gcc,无法编译。显示:</p>
<figure class="highlight plain"><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">unable to execute 'gcc': No such file or directory</div><div class="line">error: Setup script exited with error: command 'gcc' failed with exit status 1</div></pre></td></tr></table></figure>
<p>安装gcc</p>
<blockquote>
<p> \$ sudo apt-get install gcc</p>
</blockquote>
<h2 id="pip"><a href="#pip" class="headerlink" title="pip"></a>pip</h2><p>pip是python下包管理工具。主要用于安装和管理python包,和easy_install类似。</p>
<h3 id="Install-amp-Update-amp-Upgrade"><a href="#Install-amp-Update-amp-Upgrade" class="headerlink" title="Install& Update& Upgrade"></a>Install& Update& Upgrade</h3><p>不正确地安装会有问题。</p>
<blockquote>
<p> \$ sudo apt-get install python-pip</p>
</blockquote>
<p><a href="http://www.saltycrane.com/blog/2010/02/how-install-pip-ubuntu/" target="_blank" rel="external">#reference-How to install pip on Ubuntu</a><br><a href="https://pip.pypa.io/en/stable/installing/" target="_blank" rel="external">#reference-Doc_installing</a><br><a href="http://www.cnblogs.com/PandaBamboo/p/3180568.html" target="_blank" rel="external">#reference-easy_install进行模块/包管理</a><br><a href="http://askubuntu.com/questions/91815/how-to-install-software-or-upgrade-from-an-old-unsupported-release" target="_blank" rel="external">#reference-How to install software or upgrade from an old unsupported release</a></p>
<h2 id="dpkt"><a href="#dpkt" class="headerlink" title="dpkt"></a>dpkt</h2><blockquote>
<p> \$ sudo pip install dpkt</p>
</blockquote>
<h2 id="Bind-dig"><a href="#Bind-dig" class="headerlink" title="Bind-dig"></a>Bind-dig</h2><p>dig 命令全称Domain Information Groper,系统自带,观测过程中需要用到的主要命令。<br><a href="https://www.isc.org/downloads/bind/" target="_blank" rel="external">#reference-Internet System Consortium-BIND</a><br><a href="http://askubuntu.com/questions/25098/how-do-i-install-dig" target="_blank" rel="external">#reference-How do I install dig</a><br><a href="http://www.nowtaxes.com.tw/node/1114" target="_blank" rel="external">#reference-使用 Ubuntu 安裝 Bind9: Domain Name Service (DNS)
</a></p>
<h1 id="计算机网络观测"><a href="#计算机网络观测" class="headerlink" title="计算机网络观测"></a>计算机网络观测</h1><h2 id="DNS劫持观测"><a href="#DNS劫持观测" class="headerlink" title="DNS劫持观测"></a>DNS劫持观测</h2><p>广州服务器:</p>
<blockquote>
<p>$ dig @8.8.8.8 twitter.com</p>
<p>; <<>> DiG 9.8.3-P1 <<>> @8.8.8.8 twitter.com<br>; (1 server found)<br>;; global options: +cmd<br>;; Got answer:<br>;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45740<br>;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0</p>
<p>;; QUESTION SECTION:<br>;twitter.com. IN A</p>
<p>;; ANSWER SECTION:<br>twitter.com. 60 IN A 243.185.187.39</p>
<p>;; Query time: 112 msec<br>;; SERVER: 8.8.8.8#53(8.8.8.8)<br>;; WHEN: Sat Oct 15 13:07:17 2016<br>;; MSG SIZE rcvd: 45</p>
</blockquote>
<p><img src="http://of2r0f294.bkt.clouddn.com/20161015-%E8%BF%94%E5%9B%9E%E9%94%99%E8%AF%AFIP_ID" alt="返回错误IP"></p>
<p>; <<>> DiG 9.10.3-P4-Ubuntu <<>> @8.8.8.8 twitter<br>; (1 server found)<br>;; global options: +cmd<br>;; Got answer:<br>;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 55863<br>;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1</p>
<p>;; OPT PSEUDOSECTION:<br>; EDNS: version: 0, flags:; udp: 512<br>;; QUESTION SECTION:<br>;twitter. IN A</p>
<p>;; AUTHORITY SECTION:<br>. 81741 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2016110901 1800 900 604800 86400</p>
<p>;; Query time: 25 msec<br>;; SERVER: 8.8.8.8#53(8.8.8.8)<br>;; WHEN: Wed Nov 09 21:01:40 EST 2016<br>;; MSG SIZE rcvd: 111<br>显然,返回的IP地址错误。</p>
<h2 id="安装apt-get-install-…"><a href="#安装apt-get-install-…" class="headerlink" title="安装apt-get install …"></a>安装apt-get install …</h2><p><a href="http://askubuntu.com/questions/91815/how-to-install-software-or-upgrade-from-an-old-unsupported-release" target="_blank" rel="external">http://askubuntu.com/questions/91815/how-to-install-software-or-upgrade-from-an-old-unsupported-release</a></p>
<p>sudo 权限下完成</p>
<p>(#4。 有依赖)<br><a href="https://pypi.python.org/pypi/NetfilterQueue" target="_blank" rel="external">https://pypi.python.org/pypi/NetfilterQueue</a></p>
<blockquote>
<p>\$ sudo apt-get install build-essential python-dev libnetfilter-queue-dev</p>
</blockquote>
<p>&&<br>sudo apt-get install python-pip</p>
<blockquote>
<p>sudo pip install NetfilterQueue<br>sudo pip install dpkt</p>
</blockquote>
<p>#开始观测</p>
<blockquote>
<p>mkdir computer_network_observe<br>cd computer_network_observe</p>
</blockquote>
<h1 id="遇到的问题"><a href="#遇到的问题" class="headerlink" title="遇到的问题"></a>遇到的问题</h1><p> 操作系统&编译原理</p>
<p>执行<code>from netfilterqueue import NetfilterQueue</code>遇到编译错误<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ImportError: /usr/local/lib/python2.6/dist-packages/netfilterqueue.so: undefined symbol: nfq_set_verdict2</div></pre></td></tr></table></figure></p>
<p>网络上并没有现成的信息解决该问题,简单记录下解决该问题的详细思路。<br>#reference-详细错误信息:</p>
<ul>
<li><a href="https://github.com/kti/python-netfilterqueue/issues/16" target="_blank" rel="external">ImportError: /usr/local/lib/python2.6/dist-packages/netfilterqueue.so: undefined symbol: nfq_set_verdict2 #16</a></li>
<li><a href="http://stackoverflow.com/questions/40229918/netfilterqueue-importing-makes-compile-error" target="_blank" rel="external">netfilterqueue importing makes compile error</a></li>
</ul>
<p><a href="http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/nm.html" target="_blank" rel="external">#reference-nm 目标文件格式分析</a><br><a href="http://man.linuxde.net/ldd]http://man.linuxde.net/ldd" target="_blank" rel="external">#reference-ldd ldd命令</a><br><a href="http://tieba.baidu.com/p/315634750" target="_blank" rel="external">#reference-Linux Shell脚本Ldd命令原理使用方法</a><br><a href="http://blog.csdn.net/tenfyguo/article/details/5605120" target="_blank" rel="external">#reference-浅析ldd命令</a></p>
<h2 id="定义问题"><a href="#定义问题" class="headerlink" title="定义问题"></a>定义问题</h2><p>尝试理解错误信息,问题的是<code>netfilterqueue.so</code>有未定义的符号<code>nfq_set_verdict2</code>,而<code>.so</code>文件是编译的中间过程文件。<code>so</code> stands for <code>shared object</code>。</p>
<p>链接可在编译(compile-time)、加载(load-time)或运行(run-time)时执行。<br>顺序:<br><img src="/diagrams/计算机网络观测-diagram-0.png" alt=""><br>标准的编译过程是基于脚本时利用cpp撰写的:<br><img src="http://of2r0f294.bkt.clouddn.com/20161107-%E4%BB%A3%E7%A0%81%E7%BC%96%E8%AF%91%E8%BF%87%E7%A8%8B%E5%88%86%E4%B8%BA%E7%BC%96%E8%AF%91%E5%92%8C%E9%93%BE%E6%8E%A5%E4%B8%A4%E4%B8%AA%E8%BF%87%E7%A8%8B_ID" alt="代码编译过程分为编译和链接两个过程"><br><img src="http://of2r0f294.bkt.clouddn.com/20161107-%E7%BC%96%E8%AF%91%E8%BF%87%E7%A8%8B%E4%B8%8E%E6%96%87%E4%BB%B6_ID" alt="编译过程与文件"><br><img src="http://of2r0f294.bkt.clouddn.com/20161107-%E7%BC%96%E8%AF%91%E8%BF%87%E7%A8%8B_ID" alt="编译过程"><br><a href="http://7905648.blog.51cto.com/7895648/1297255#0-tsina-1-7558-397232819ff9a47a7b7e80a40613cfe1" target="_blank" rel="external">#reference-C语言的编译链接过程详解</a><br><a href="http://lxwei.github.io/posts/262.html" target="_blank" rel="external">#reference-从源代码到可执行文件全过程</a><br>当脚本来自python:<br>可以利用python库,通过”.pyx”文件生成c,最后编译为机器码(二进制)<br>Python<a href="http://gashero.iteye.com/blog/649516" target="_blank" rel="external">Cython应用手记</a></p>
<p>##静态链接<br>输入:可重定位的目标文件(object file),命令行参数<br>输出:可执行的目标文件</p>
<blockquote>
<p>输入的可重定位目标文件由各种不同的代码和数据节(section)组成。指令在一个节中,初始化的全局变量在另一个节中,而未初始化的变量又在另外一个节中。<br><img src="/diagrams/计算机网络观测-diagram-1.png" alt=""><br>我们查看<a href="https://github.com/kti/python-netfilterqueue" target="_blank" rel="external">NetfilterQueue</a>的文件和步骤发现,”.c”,”.pxd”,”.pyx”主要用于编译NetfilterQueue,因此问题应该主要来自对系统的依赖文件。<br>对系统的依赖主要是这些:</p>
<p>NetfilterQueue is a C extention module that links against libnetfilter_queue. Before installing, ensure you have:</p>
<ul>
<li>A C compiler</li>
<li>Python development files</li>
<li>Libnetfilter_queue development files and associated dependencies</li>
</ul>
<p>On Debian or Ubuntu, install these files with:</p>
<p><code>apt-get install build-essential python-dev libnetfilter-queue-dev</code></p>
</blockquote>
<p>由于.c是由.pyx生成的,.pxd定义了函数模版<br>查看<a href="https://github.com/kti/python-netfilterqueue/blob/master/netfilterqueue.pyx" target="_blank" rel="external">.pyx</a> 文件中可以发现<code>nfq_set_verdict2</code>从未被定义,即,它主要来自其它头文件(.h)的include,<a href="https://github.com/kti/python-netfilterqueue/blob/master/netfilterqueue.pxd" target="_blank" rel="external">.pxd</a><br> 发现该变量来自<code>cdef extern from "libnetfilter_queue/libnetfilter_queue.h":</code></p>
<p>怀疑是由于是开源项目,内核版本的升级过程也将一些类库升级,却不能向前兼容。于是,升级内核libnetfilter_queue版本。<br>参考<a href="http://chyeh.logdown.com/posts/91924-libnefilter-queueqi-bu-zou" target="_blank" rel="external">libnefilter-queue起步走</a>,下载最新的对应项目</p>
<ul>
<li>libmnl-1.0.4</li>
<li>libnetfilter_queue-1.0.2</li>
<li>libnfnetlink-1.0.1</li>
</ul>
<p>下载相关项目:</p>
<blockquote>
<p>\$ wget <a href="http://netfilter.org/projects/libmnl/files/libmnl-1.0.4.tar.bz2" target="_blank" rel="external">http://netfilter.org/projects/libmnl/files/libmnl-1.0.4.tar.bz2</a><br>\$ wget <a href="http://netfilter.org/projects/libnetfilter_queue/files/libnetfilter_queue-1.0.2.tar.bz2" target="_blank" rel="external">http://netfilter.org/projects/libnetfilter_queue/files/libnetfilter_queue-1.0.2.tar.bz2</a><br>\$ wget <a href="http://netfilter.org/projects/libnfnetlink/files/libnfnetlink-1.0.1.tar.bz2" target="_blank" rel="external">http://netfilter.org/projects/libnfnetlink/files/libnfnetlink-1.0.1.tar.bz2</a></p>
</blockquote>
<p>按顺序执行安装</p>
<ul>
<li><p>libmnl-1.0.4</p>
<blockquote>
<p>\$ tar -jxvf libmnl-1.0.4.tar.bz2<br>\$ cd libmnl-1.0.4/<br>\$ ./configure<br>\$ make<br>\$ sudo make install </p>
</blockquote>
</li>
<li><p>libnetfilter_queue-1.0.2</p>
<blockquote>
<p>\$ tar -jxvf libnetfilter_queue-1.0.2.tar.bz2<br>\$ cd libnetfilter_queue-1.0.2/<br>\$ ./configure<br>\$ make<br>\$ sudo make install </p>
</blockquote>
</li>
<li><p>libnfnetlink-1.0.1</p>
<blockquote>
<p>\$ tar -jxvf libnfnetlink-1.0.1.tar.bz2<br>\$ cd libnfnetlink-1.0.1/<br>\$ ./configure<br>\$ make<br>\$ sudo make install </p>
</blockquote>
</li>
</ul>
<p>安装完依旧是不生效的。那么计算机是如何找到这个运行时的文件夹就很关键了。<br>参考<a href="http://www.voidcn.com/blog/tqtuuuu/article/p-3700026.html" target="_blank" rel="external">libnetfilter_queue setup(安装向导)</a>和<a href="http://blog.sina.com.cn/s/blog_4b3bae23010081fg.html" target="_blank" rel="external">编译中接触到 pkg config</a><br>在 <code>/etc/ld.so.conf</code> 文件中添加库的搜索路径<code>/usr/local</code>,并执行<code>/sbin/ldconfig</code> 命令。</p>
<p><a href="www.cnblogs.com/amboyna/archive/2008/02/16/1070474.html">#reference-linux各文件夹的作用</a><br>执行成功。</p>
<h3 id="搬瓦工机器有问题"><a href="#搬瓦工机器有问题" class="headerlink" title="搬瓦工机器有问题"></a>搬瓦工机器有问题</h3><p>pip update后,安装netfilterqueue成功,发现和root权限有根本性的差异。<br>打算重新sudo pip install netfilterqueue 先运行计算机观测。(从安装pip开始)<br> 问题相信信息:<br> <a href="http://stackoverflow.com/questions/40231588/netfilterqueue-tiped-are-you-root-which-i-was-already-the-root" target="_blank" rel="external">#reference-NetfilterQueue tiped “are you root ” ,which I was already the “root”</a><br>证据</p>
<blockquote>
<p>sudo which python<br>/usr/bin/python<br>which python<br>/root/canopy/bin/python</p>
</blockquote>
<p> 结果两个都问了,are you root.<br> 这就很尴尬了。</p>
<p>import os<br>if os.geteuid() != 0:<br> print “This program must be run as root. Aborting.”<br> sys.exit(1)</p>
<p>证明我已经是root。</p>
<p> cd /temp<br>尝试重新安装所有依赖,并改目标目录。<br>失败。</p>
<p>Linux 下用户权限设置<br><a href="http://askubuntu.com/questions/302358/permission-denied-error" target="_blank" rel="external">#reference-permission denied error</a><br><a href="https://www.google.com.hk/search?newwindow=1&c2coff=1&safe=strict&hl=zh-CN&q=+visudo+permission+de&oq=+visudo+permission+de&gs_l=serp.3..0j0i30k1l3j0i8i30k1l3j0i5i30k1l2.290009.295367.0.296570.17.13.0.0.0.0.558.2178.2-3j1j1j1.6.0....0...1c.1.64.serp..11.6.2174...0i13k1j0i7i30k1j0i7i10i30k1j35i39k1.3Yf3P28PMq0" target="_blank" rel="external">https://www.google.com.hk/search?newwindow=1&c2coff=1&safe=strict&hl=zh-CN&q=+visudo+permission+de&oq=+visudo+permission+de&gs_l=serp.3..0j0i30k1l3j0i8i30k1l3j0i5i30k1l2.290009.295367.0.296570.17.13.0.0.0.0.558.2178.2-3j1j1j1.6.0....0...1c.1.64.serp..11.6.2174...0i13k1j0i7i30k1j0i7i10i30k1j35i39k1.3Yf3P28PMq0</a><br><a href="http://blog.csdn.net/stormbjm/article/details/9086163" target="_blank" rel="external">#reference-linux下添加用户并赋予root权限</a></p>
<p>脚本<br><figure class="highlight python"><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="keyword">import</span> sql</div><div class="line"><span class="keyword">print</span> <span class="string">'f'</span></div></pre></td></tr></table></figure></p>
<p>#思考<br>其实我目前遇到的问题都是范运维问题,能否通过docker容器解决呢?如果解决是否有机会产品经理学习计算机知识的市场呢?其实还蛮有趣的。</p>
]]></content>
<summary type="html">
<h1 id="Summary"><a href="#Summary" class="headerlink" title="Summary"></a>Summary</h1><p><code>104.128.92.224</code>和<code>119.29.198.230</code>是两台独立服务器(VPS),其中,<code>104.128.92.224</code>位于Los Angeles,<code>119.29.198.230</code>位于广州。通过对它们的网络行为进行监控,对比他们收取到回复的差异,确认GFW的特殊价值并探索计算机应用层协议的原理与细节。(本文以<code>LA服务器</code>和<code>广州服务器</code>分别指代)<br>本文主要参考<a href="http://drops.wooyun.org/papers/10177">翻墙路由器的原理与实现</a>来探索<strong>计算机网络</strong>(主要是应用层),并对探索过程中遇到的问题做简单记录,遇到问题涉及<strong>计算机操作系统</strong>、<strong>编译原理</strong>的部分知识。</p>
</summary>
</entry>
<entry>
<title>购买域名+服务器+部署服务器+实现ssl协议</title>
<link href="check_hexo_config_url/2016/10/09/%E8%B4%AD%E4%B9%B0%E5%9F%9F%E5%90%8D+%E6%9C%8D%E5%8A%A1%E5%99%A8+%E9%83%A8%E7%BD%B2%E6%9C%8D%E5%8A%A1%E5%99%A8+%E5%AE%9E%E7%8E%B0ssl%E5%8D%8F%E8%AE%AE/"/>
<id>check_hexo_config_url/2016/10/09/购买域名+服务器+部署服务器+实现ssl协议/</id>
<published>2016-10-09T06:15:00.000Z</published>
<updated>2016-12-09T11:57:28.000Z</updated>
<content type="html"><![CDATA[<p>纪录部署busihacker.com的一些问题<br><a id="more"></a></p>
<p><a href="https://www.google.com.hk/search?ie=utf-8&oe=UTF-8&hl=zh-CN&q=%E4%B8%A4%E6%9D%A1+a%E8%AE%B0%E5%BD%95&gws_rd=ssl" target="_blank" rel="external">两条a记录主要是为了负载均衡吧?</a><br><a href="https://www.ezloo.com/2011/04/a_mx_cname_txt_aaaa_ns.html" target="_blank" rel="external">常用域名记录解释:A记录、MX记录、CNAME记录、TXT记录、AAAA记录、NS记录</a><br><a href="https://www.zhihu.com/question/19774219" target="_blank" rel="external">如何建立个人网站?</a><br><a href="http://yihui.name/cn/2009/06/how-to-build-a -website-as-a-dummy/" target="_blank" rel="external">新手教程:建立网站的全套流程与详细解释</a><br><a href="https://www.douban.com/group/topic/61689932/" target="_blank" rel="external">2014年网站SEO常见作弊方法详细解析</a><br><a href="https://support.dnspod.cn/Kb/showarticle/tsid/42/" target="_blank" rel="external">Godaddy注册商域名修改DNS地址</a><br><a href="https://sg.godaddy.com/zh/help/dns-680" target="_blank" rel="external">管理DNS</a><br><a href="http://www.ixirong.com/2015/04/15/how-blog-record-by-aliyun/" target="_blank" rel="external">个人godaddy域名备案解决方案</a><br>godaddy 对域名的所有权以及备案问题。<br>免费的是最贵的<a href="https://www.zhihu.com/question/19835955" target="_blank" rel="external">免费域名</a><br><a href="https://www.zhihu.com/question/20845371" target="_blank" rel="external">如何抢注一个刚刚过期的域名</a></p>
<p>SSL协议与加密<br><a href="http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html" target="_blank" rel="external">SSL/TLS协议运行机制的概述</a><br><a href="http://www.ruanyifeng.com/blog/2016/08/migrate-from-http-to-https.html" target="_blank" rel="external">HTTPS 升级指南</a><br><a href="http://www.asiapeak.com/PGPTheory.php" target="_blank" rel="external">PGP加密原理</a><br><a href="http://www.ruanyifeng.com/blog/2013/07/gpg.html" target="_blank" rel="external">GPG入门教程</a><br><a href="http://pgp.sourceforge.net/pgpintro.php" target="_blank" rel="external">关于pgp</a><br><a href="http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html" target="_blank" rel="external">RSA算法原理</a><br><a href="http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html" target="_blank" rel="external">RSA算法原理</a><br>http协议与ssl协议<br>[<a href="https://segmentfault.com/a/1190000006921322" target="_blank" rel="external">TCP三次握手&Render Tree页面渲染=>从输入URL到页面显示的过程?</a>]<br><a href="https://www.sslshopper.com/ssl-converter.html" target="_blank" rel="external">不同format的certificate和private/public key</a></p>
<h1 id="使用startssl认证证书"><a href="#使用startssl认证证书" class="headerlink" title="使用startssl认证证书"></a>使用startssl认证证书</h1><p><a href="https://www.zghhome.cn/?p=310" target="_blank" rel="external">站点启用https替换http完整步骤(申请StartSSL免费证书,nginx配置)</a><br><a href="https://amon.org/how-to-apply-for-startssl-free-ssl-ca.html" target="_blank" rel="external">怎样申请StartSSL免费ssl证书</a><br><a href="https://www.sslshopper.com/certificate-authority-reviews.html" target="_blank" rel="external">SSL Certificate Reviews</a><br><a href="http://www.laozuo.org/2823.html" target="_blank" rel="external">StartSSL申请全过程 让网站拥有免费SSL证书</a><br><a href="https://www.oschina.net/translate/switch-to-https-now-for-free" target="_blank" rel="external">现在就启用 HTTPS,免费的!</a><br><a href="http://arstechnica.com/security/2009/12/how-to-get-set-with-a-secure-sertificate-for-free/2/" target="_blank" rel="external">how to obtain and install an SSL/TLS certificate for free</a><br><a href="http://www.cnblogs.com/yjmyzz/p/openssl-tutorial.html" target="_blank" rel="external">openssl、x509、crt、cer、key、csr、ssl、tls 这些都是什么鬼?</a><br><a href="https://www.google.com.hk/search?q=crt++csr&ie=utf-8&oe=utf-8&gws_rd=cr,ssl" target="_blank" rel="external">crt csr 谷歌搜索</a><br><a href="https://www.google.com.hk/search?q=%E4%BC%AA%E9%80%A0++%E8%AF%81%E4%B9%A6&ie=utf-8&oe=utf-8&gws_rd=cr,ssl" target="_blank" rel="external">伪造 证书 谷歌搜索</a><br><a href="http://docs.pythontab.com/tornado/introduction-to-tornado/ch8.html#ch8-2-2" target="_blank" rel="external">tornado使用nginx作为反向代理</a><br><a href="https://www.google.com.hk/search?q=%E5%85%AC%E9%92%A5+%E7%A7%81%E9%92%A5+%E5%8E%9F%E7%90%86&ie=utf-8&oe=utf-8&gws_rd=cr,ssl" target="_blank" rel="external">公钥 私钥 原理 谷歌搜索</a><br><a href="https://www.google.com.hk/search?newwindow=1&safe=strict&q=rsa+pgp+%E5%85%B3%E7%B3%BB&oq=rsa+pgp+%E5%85%B3%E7%B3%BB&gs_l=serp.3...495206.496328.0.496470.8.6.0.0.0.0.0.0..0.0....0...1c.1.64.serp..8.0.0.nVv5C48oNSk" target="_blank" rel="external">rsa pop关系 谷歌搜索</a><br><a href="http://www.yeolar.com/note/2015/04/30/tornado-ssl-https/" target="_blank" rel="external">使用Tornado搭建HTTPS网站</a><br><a href="stackoverflow.com/questions/18307131/how-to-create-https-tornado-server">How to create HTTPS tornado server</a><br><a href="http://blog.csdn.net/simanstar/article/details/40592057" target="_blank" rel="external">SSL和SSH的区别</a><br><a href="https://www.google.com.hk/search?q=ssh+ssl&ie=utf-8&oe=utf-8&gws_rd=cr,ssl" target="_blank" rel="external">SSL SSH 谷歌搜索</a><br><a href="https://help.github.com/articles/generating-a-gpg-key/" target="_blank" rel="external">generating-a-gpg-key</a><br><a href="https://help.github.com/articles/generating-an-ssh-key/" target="_blank" rel="external">generating-an-ssh-key</a></p>
<hr>
<p>ipython notebook<br>When using a password, it is a good idea to also use SSL, so that your password is not sent unencrypted by your browser. You can start the notebook to communicate via a secure protocol mode using a self-signed certificate with the command:</p>
<blockquote>
<p>$ ipython notebook –certfile=mycert.pem</p>
</blockquote>
<p>A self-signed certificate can be generated with openssl<br>. For example, the following command will create a certificate valid for 365 days with both the key and certificate data written to the same file:</p>
<blockquote>
<p>$ openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem</p>
</blockquote>
<hr>
<h1 id="远程服务"><a href="#远程服务" class="headerlink" title="远程服务"></a>远程服务</h1><p>下一步:<br>部署到域名进行访问<a href="https://jupyter.busihacker.com:9999" target="_blank" rel="external">busihacker.com</a><br>认证ssl/tls证书<br><code>https://<your-domain>:9999</code></p>
]]></content>
<summary type="html">
<p>纪录部署busihacker.com的一些问题<br>
</summary>
</entry>
<entry>
<title>前端学习笔记</title>
<link href="check_hexo_config_url/2016/10/09/%E5%89%8D%E7%AB%AF%E7%9A%84%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"/>
<id>check_hexo_config_url/2016/10/09/前端的学习笔记/</id>
<published>2016-10-09T06:15:00.000Z</published>
<updated>2016-12-08T02:31:09.000Z</updated>
<content type="html"><![CDATA[<p>前段学习的一些问题和摘要<br><a id="more"></a></p>
<h1 id="Chrome-Console"><a href="#Chrome-Console" class="headerlink" title="Chrome Console"></a>Chrome Console</h1><h1 id="Javascript"><a href="#Javascript" class="headerlink" title="Javascript"></a>Javascript</h1><h1 id="CSS"><a href="#CSS" class="headerlink" title="CSS"></a>CSS</h1><h1 id="DOM"><a href="#DOM" class="headerlink" title="DOM"></a>DOM</h1><h1 id="HTML"><a href="#HTML" class="headerlink" title="HTML"></a>HTML</h1><h1 id="React-Natie"><a href="#React-Natie" class="headerlink" title="React Natie"></a>React Natie</h1><h1 id="微信小程序"><a href="#微信小程序" class="headerlink" title="微信小程序"></a>微信小程序</h1><p><a href="https://www.google.com.hk/search?q=%E5%B0%8F%E7%A8%8B%E5%BA%8F+native&ie=utf-8&oe=utf-8&gws_rd=cr,ssl" target="_blank" rel="external">小程序 native</a></p>
<p>#jquery</p>
]]></content>
<summary type="html">
<p>前段学习的一些问题和摘要<br>
</summary>
</entry>
<entry>
<title>区块链(block chain)调研</title>
<link href="check_hexo_config_url/2016/10/09/%E5%8C%BA%E5%9D%97%E9%93%BE%EF%BC%88block%20chain%EF%BC%89%E8%B0%83%E7%A0%94/"/>
<id>check_hexo_config_url/2016/10/09/区块链(block chain)调研/</id>
<published>2016-10-09T06:11:00.000Z</published>
<updated>2016-12-10T14:03:59.000Z</updated>
<content type="html"><![CDATA[<p>区块链和大数据、云计算结合貌似可以有作为,开个头。</p>
<a id="more"></a>
<blockquote>
<p>%人工智能、大数据和云计算分别指的是什么</p>
</blockquote>
<p><a href="https://elendirx.github.io/web2web/" target="_blank" rel="external">Web2Web Bootstrap</a></p>
<blockquote>
<p>笑来兄在微信公号发布的,torren不依附于任何服务器,很难将其关闭,或许这就是未来信息存储和传播的主要方式,永久保存不消失,创造永恒的信息世界</p>
</blockquote>
<p><a href="https://www.zhihu.com/question/20792042" target="_blank" rel="external">挖矿石如何产生比特币的</a><br><a href="http://8btc.com/article-137-1.html" target="_blank" rel="external">比特币挖矿算法是怎样的?</a><br><a href="http://jingyan.baidu.com/article/7f41ececc5707c593d095c90.html" target="_blank" rel="external">比特币如何挖矿</a><br><a href="https://www.zhihu.com/topic/19901773/top-answers" target="_blank" rel="external">区块链(Blockchain)知乎 主题精华</a><br><a href="https://www.baidu.com/s?wd=%E6%AF%94%E7%89%B9%E5%B8%81%20%E6%8C%96%E7%9F%BF&rsv_spt=1&rsv_iqid=0xe301e80a0004f562&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=1&oq=blockchain%20site%3Azhihu.com&inputT=2122&rsv_t=9923gUAatpLjOytUtkr3C%2BI3LwO7KOKMuF2WO0ubVhU6r3Oq%2FA7kZF9APy29S2WKArz5&rsv_pq=e8f54b6c00042adb&rsv_sug3=37&rsv_sug1=12&rsv_sug7=101&sug=%E6%AF%94%E7%89%B9%E5%B8%81%20%E6%8C%96%E7%9F%BF&rsv_n=1&bs=blockchain%20site%3Azhihu.com" target="_blank" rel="external">比特币 挖矿</a></p>
]]></content>
<summary type="html">
<p>区块链和大数据、云计算结合貌似可以有作为,开个头。</p>