-
Notifications
You must be signed in to change notification settings - Fork 1
/
atom.xml
847 lines (663 loc) · 77.4 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
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>DYZ.Life</title>
<subtitle>用文字帮助思考</subtitle>
<link href="/atom.xml" rel="self"/>
<link href="http://yoursite.com/"/>
<updated>2017-03-22T07:38:41.000Z</updated>
<id>http://yoursite.com/</id>
<author>
<name>朱英楠David</name>
</author>
<generator uri="http://hexo.io/">Hexo</generator>
<entry>
<title>学编程半年后我终于搞懂了怎么调Bootstrap Button按下去的颜色</title>
<link href="http://yoursite.com/2017/03/22/2017-03-22-bootstrap-btn-colors/"/>
<id>http://yoursite.com/2017/03/22/2017-03-22-bootstrap-btn-colors/</id>
<published>2017-03-22T07:19:58.000Z</published>
<updated>2017-03-22T07:38:41.000Z</updated>
<content type="html"><![CDATA[<p>Ok so I haven’t updated this blog for a while. But this is actually blog-worthy. The colors of my Bootstrap buttons have been driving me nuts. I found various online tools that had CSS help to<br>auto-generate bootstrap buttons, but I guess they all forgot to address one situation: the “active” + “focus” state.</p>
<p>So I would have a nice customized btn that fits the orange theme of my site, the CSS looking like this:</p>
<figure class="highlight"><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></pre></td><td class="code"><pre><div class="line">$themeColor: #e55c1c;</div><div class="line">$themeColorLite: #ff6600;</div><div class="line">$background_grey: #f1f6fb;</div><div class="line">$themeGrey: #777;</div><div class="line">/* you can set the overall theme colors using the below code</div><div class="line">at the top of any CSS file. They'd only apply to the file though,</div><div class="line">so if you call these from other CSS, even if they're compiled by</div><div class="line">Rails they wouldn't be recognized.*/</div><div class="line"></div><div class="line"></div><div class="line">.btn-primary {</div><div class="line"> min-width: auto;</div><div class="line"> font-size: 16px;</div><div class="line"> color: $background_grey !important;</div><div class="line"> background-color: $themeColor;</div><div class="line"> border-color: transparent;</div><div class="line">}</div><div class="line"></div><div class="line">.btn-primary:hover, .btn-primary:focus, .btn-primary.hover, .btn-primary.focus, .btn-primary:active, .btn-primary.active, .open > .dropdown-toggle.btn-primary {</div><div class="line"> background-color: #cd552b; //This is a darker orange when the mouse hovers over the button</div><div class="line"> border-color: transparent;</div><div class="line">}</div></pre></td></tr></table></figure>
<p>So I’d get a nice Bootstrap button that looks something like this:<br><img src="https://ww1.sinaimg.cn/large/006tNc79ly1fdvnfwznt3j30ew0addgp.jpg" alt=""></p>
<p>Great, except when I click on it, it turns BLUE.</p>
<p><img src="https://ww1.sinaimg.cn/large/006tNc79ly1fdvni0en09j30cw08x0tw.jpg" alt=""></p>
<p>This isn’t really noticeable, except when you hold the mouse click for over 30ms or so, which most people don’t do. So I just left it there since the day of my first-ever Rails app.</p>
<p>A couple months later, this problem is still there. Right, because I’m my only front-end dev so if I don’t fix it, no one will. It was gradually driving me nuts.</p>
<p>So I finally decided to do it the right way - I opened up Twitter Bootstrap CSS file and found the <code>btn-primary</code> class, and discovered that the state which was blue was when a button is both “active” and “focused”. So I needed to add the following:</p>
<figure class="highlight"><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">.btn-primary:active:hover, .btn-primary:active:focus, .btn-primary:active.focus, .btn-primary.active:hover, .btn-primary.active:focus, .btn-primary.active.focus, .open > .btn-primary.dropdown-toggle:hover, .open > .btn-primary.dropdown-toggle:focus, .open > .btn-primary.dropdown-toggle.focus {</div><div class="line"> background-color: #983b1a; //I made an even darker shade of orange for when the mouse clicked on button</div><div class="line"> border-color: transparent;</div><div class="line">}</div></pre></td></tr></table></figure>
<p>And finally, no more blue on my orange button. Hope after reading this you won’t have to endure with this for as long.</p>
]]></content>
<summary type="html">
<p>Ok so I haven’t updated this blog for a while. But this is actually blog-worthy. The colors of my Bootstrap buttons have been driving me
</summary>
<category term="功能" scheme="http://yoursite.com/categories/%E5%8A%9F%E8%83%BD/"/>
<category term="HTML" scheme="http://yoursite.com/tags/HTML/"/>
</entry>
<entry>
<title>用简单的方法生成表格(Table)</title>
<link href="http://yoursite.com/2017/02/08/2017-02-08-%E7%8F%8D%E6%83%9C%E7%94%9F%E5%91%BD%EF%BC%8C%E7%94%A8%E7%AE%80%E5%8D%95%E7%9A%84%E6%96%B9%E6%B3%95%E7%94%9F%E6%88%90Table/"/>
<id>http://yoursite.com/2017/02/08/2017-02-08-珍惜生命,用简单的方法生成Table/</id>
<published>2017-02-07T16:10:26.000Z</published>
<updated>2017-03-22T07:20:53.000Z</updated>
<content type="html"><![CDATA[<p>今天在写订单页面的时候,发现多态上面的订单页面简单简洁,想要模仿一个,后来发现写table写得我好头疼。</p>
<p><img src="https://ww1.sinaimg.cn/large/006tKfTcly1fcjiq39y72j31360uswgz.jpg" alt=""></p>
<p>于是随手Google一下发现了一个<a href="http://www.tablesgenerator.com/" target="_blank" rel="external">Table生成器</a>,试了一下发现挺好用,下面是简单教程:</p>
<p>Table Generator拥有LaTeX, HTML, Text, Markdown, 和MediaWiki五种格式的表格。编程通常是用HTML,写博客用到Markdown。这里选择HTML。</p>
<p>首先要告诉生成器要多少数量的行和列(随时可以添加删除),写入表格内容,然后点击生成:<br><img src="https://ww4.sinaimg.cn/large/006tKfTcly1fcjilpku9tj31ia0zoahu.jpg" alt=""></p>
<p>生成器还自带不同颜色字体的主题,会生成CSS:</p>
<p><img src="https://ww3.sinaimg.cn/large/006tKfTcly1fcjilvkqghj31h80wgwk9.jpg" alt=""></p>
<p>点击生成(”Generate”)之后会产生一堆代码,直接复制粘贴(可以将<code><style></code>里面的CSS单独拷贝保存一个文件然后放入assets文件夹里):</p>
<p><img src="https://ww1.sinaimg.cn/large/006tKfTcly1fcjim14ou9j31kw0t6dvk.jpg" alt=""></p>
<p>Markdown格式长这样:</p>
<p><img src="https://ww3.sinaimg.cn/large/006tKfTcly1fcjimdi2a2j31440awwgh.jpg" alt=""></p>
<p>如果你有自己从数据库导出的CSV文件或者想要保存现在的表格以后再使用:</p>
<p><img src="https://ww4.sinaimg.cn/large/006tKfTcly1fcjimdowvgj30ao0d8js5.jpg" alt=""></p>
<p>最终输出结果:</p>
<p><img src="https://ww1.sinaimg.cn/large/006tKfTcly1fcjj0sh6pvj30hf093t9p.jpg" alt=""></p>
<p>链接:<a href="http://www.tablesgenerator.com/" target="_blank" rel="external">www.tablegenerator.com</a></p>
]]></content>
<summary type="html">
<p>今天在写订单页面的时候,发现多态上面的订单页面简单简洁,想要模仿一个,后来发现写table写得我好头疼。</p>
<p><img src="https://ww1.sinaimg.cn/large/006tKfTcly1fcjiq39y72j31360uswgz.jpg"
</summary>
<category term="功能" scheme="http://yoursite.com/categories/%E5%8A%9F%E8%83%BD/"/>
<category term="HTML" scheme="http://yoursite.com/tags/HTML/"/>
</entry>
<entry>
<title>Font-Awesome部署后被CORS Policy屏蔽显示方框</title>
<link href="http://yoursite.com/2017/02/07/2017-02-07-Font-Awesome%E9%83%A8%E7%BD%B2%E5%90%8E%E8%A2%ABCORS-Policy%E5%B1%8F%E8%94%BD%E6%98%BE%E7%A4%BA%E6%96%B9%E6%A1%86/"/>
<id>http://yoursite.com/2017/02/07/2017-02-07-Font-Awesome部署后被CORS-Policy屏蔽显示方框/</id>
<published>2017-02-07T10:24:22.000Z</published>
<updated>2017-02-08T16:12:16.000Z</updated>
<content type="html"><![CDATA[<p>跨来源资源共享(Cross-origin resource sharing,简称“CORS”)让我们网站在部署之后,Font-awesome的icon就都看不见了。</p>
<p>解决办法有两种,要么将CDN链接的资源存到本地(划为同一个域名下),要么打开CORS。我选择了后者:</p>
<p>在服务器端修改Nginx config,输入:<br><code>sudo vi /opt/nginx/conf/nginx.conf</code></p>
<p>在server部分加入以下代码:</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></pre></td><td class="code"><pre><div class="line">location / {</div><div class="line"> add_header 'Access-Control-Allow-Origin' *;</div><div class="line">}</div></pre></td></tr></table></figure>
<p>结果张这样:<br><img src="https://ww1.sinaimg.cn/large/006tKfTcly1fci2yy5ullj30bt05174j.jpg" alt=""></p>
<p>然后重启Nginx server:<br><code>sudo /etc/init.d/nginx restart</code></p>
<p>现在打开网页Font-awesome的icon就会正常显示了。如果没有的话可以清理一下游览器的cache。</p>
<p>资料参考:<br><a href="http://www.jianshu.com/p/52bf8f5b8432" target="_blank" rel="external">CORS原理</a><br><a href="http://marcel.zurreck.com/enable-cross-origin-requests-cors-nginx/" target="_blank" rel="external">开启CORS进阶方法</a></p>
]]></content>
<summary type="html">
<p>跨来源资源共享(Cross-origin resource sharing,简称“CORS”)让我们网站在部署之后,Font-awesome的icon就都看不见了。</p>
<p>解决办法有两种,要么将CDN链接的资源存到本地(划为同一个域名下),要么打开CORS。我选择了
</summary>
<category term="功能" scheme="http://yoursite.com/categories/%E5%8A%9F%E8%83%BD/"/>
<category term="rails" scheme="http://yoursite.com/tags/rails/"/>
</entry>
<entry>
<title>如何让Carrierwave上传图片后读取绝对路径(WickedPDF需要)</title>
<link href="http://yoursite.com/2017/02/04/2017-02-04-%E5%A6%82%E4%BD%95%E8%AE%A9Carrierwave%E4%B8%8A%E4%BC%A0%E5%9B%BE%E7%89%87%E5%90%8E%E8%AF%BB%E5%8F%96%E7%BB%9D%E5%AF%B9%E8%B7%AF%E5%BE%84/"/>
<id>http://yoursite.com/2017/02/04/2017-02-04-如何让Carrierwave上传图片后读取绝对路径/</id>
<published>2017-02-04T05:17:44.000Z</published>
<updated>2017-03-22T07:20:44.000Z</updated>
<content type="html"><![CDATA[<p>最近在做一个简历编辑器,需要将HTML转成PDF,用了个叫做wicked_pdf的gem。但发现图片一直显示不出来(用的Carrierwave上传至本地,因为前期用户也不多就没上AWS,因为用AWS生成PDF会变很慢)。</p>
<p>原来是因为图片上传后路径显示的是相对路径,比如<code>/uploads/images/XXX.jpg</code>,但因为PDF完全在环境外发生所以读不到这个路径的图片。</p>
<p>解决方法就是在Carrierwave的config中设置图片的”asset_host”,这样所有路径就会将asset_host的名字变为前缀。</p>
<p>先改Carrierwave config:</p>
<p>config/initializers/carrierwave.rb<br><figure class="highlight ruby"><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">CarrierWave.configure <span class="keyword">do</span> <span class="params">|config|</span></div><div class="line">...</div><div class="line"> config.asset_host = ActionController::Base.asset_host</div><div class="line"><span class="keyword">end</span></div></pre></td></tr></table></figure></p>
<p>config/environment/development.rb<br><figure class="highlight ruby"><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">Rails.application.configure <span class="keyword">do</span></div><div class="line">...</div><div class="line"> config.asset_host = <span class="string">'http://localhost:3000'</span></div><div class="line"><span class="keyword">end</span></div></pre></td></tr></table></figure></p>
<p>这样再上传图片的时候,URL就会变成<code>http://localhost:300/uploads/images/XXX.jpg</code>。</p>
<p>上线版本也需要写:<br>config/environment/production.rb<br><figure class="highlight ruby"><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">Rails.application.configure <span class="keyword">do</span></div><div class="line">...</div><div class="line"> config.asset_host = <span class="string">'http://example.com'</span> <span class="comment">#你的网站URL</span></div><div class="line"><span class="keyword">end</span></div></pre></td></tr></table></figure></p>
<p>这样再上传图片的时候,URL就会变成<code>http://example.com/uploads/images/XXX.jpg</code></p>
<p><strong>但是!!</strong></p>
<p><em>这么做之后,每一次部署的时候一定要确定asset_host的路径是正确的,比如新注册了一个domain或者新设立了一个服务器先用IP测试部署,忘记更改asset_host会导致整个网站的CSS全部无法读取(屡试不爽之后怒更…)。</em></p>
<p>资料参考:<a href="http://stackoverflow.com/questions/5484809/full-url-for-an-image-path-in-rails-3/15011797#15011797" target="_blank" rel="external">Stackoverflow</a></p>
]]></content>
<summary type="html">
<p>最近在做一个简历编辑器,需要将HTML转成PDF,用了个叫做wicked_pdf的gem。但发现图片一直显示不出来(用的Carrierwave上传至本地,因为前期用户也不多就没上AWS,因为用AWS生成PDF会变很慢)。</p>
<p>原来是因为图片上传后路径显示的是相对路
</summary>
<category term="功能" scheme="http://yoursite.com/categories/%E5%8A%9F%E8%83%BD/"/>
<category term="rails" scheme="http://yoursite.com/tags/rails/"/>
</entry>
<entry>
<title>如何让Rails Console的数据变得能看 - Awesome Rails Console</title>
<link href="http://yoursite.com/2017/01/23/2017-01-23-%E5%A6%82%E4%BD%95%E8%AE%A9Rails-Console%E7%9A%84%E6%95%B0%E6%8D%AE%E5%8F%98%E5%BE%97%E8%83%BD%E7%9C%8B/"/>
<id>http://yoursite.com/2017/01/23/2017-01-23-如何让Rails-Console的数据变得能看/</id>
<published>2017-01-23T07:06:59.000Z</published>
<updated>2017-01-23T07:20:06.000Z</updated>
<content type="html"><![CDATA[<p>Rails Console有个不太完美的地方,就是在后台看数据就有一种看天书的赶脚。比如,我们想看一下目前用户当中都有哪些人是admin,进入console之后输入User.all,结果是让人崩溃的:</p>
<p><img src="https://ww2.sinaimg.cn/large/006tNbRwly1fc0l4em9eij312w0fsgru.jpg" alt=""></p>
<p>但Rails世界有一个很好用的gem,可以将这些错乱的一串字符排序。Gem的名字也相当有说明度,叫做<a href="https://github.com/ascendbruce/awesome_rails_console" target="_blank" rel="external">“Awesome Rails Console”</a>.</p>
<p>安装非常简单,Gemfile里加入一行<br><figure class="highlight ruby"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">gem <span class="string">'awesome_rails_console'</span></div></pre></td></tr></table></figure></p>
<p>安装之后,再次输入User.all长成这个样子:</p>
<p><img src="https://ww2.sinaimg.cn/large/006tNbRwly1fc0l6ai2e4j318y0x4k0d.jpg" alt=""></p>
<p>有没有瞬间心情大好?</p>
]]></content>
<summary type="html">
<p>Rails Console有个不太完美的地方,就是在后台看数据就有一种看天书的赶脚。比如,我们想看一下目前用户当中都有哪些人是admin,进入console之后输入User.all,结果是让人崩溃的:</p>
<p><img src="https://ww2.sinaimg
</summary>
<category term="功能" scheme="http://yoursite.com/categories/%E5%8A%9F%E8%83%BD/"/>
<category term="rails" scheme="http://yoursite.com/tags/rails/"/>
</entry>
<entry>
<title>【功能】如何用青云注册服务器和部署网站</title>
<link href="http://yoursite.com/2017/01/15/2017-01-09-using-qingyun-to-deploy/"/>
<id>http://yoursite.com/2017/01/15/2017-01-09-using-qingyun-to-deploy/</id>
<published>2017-01-15T11:54:23.000Z</published>
<updated>2017-01-15T15:39:56.000Z</updated>
<content type="html"><![CDATA[<p>从开始学习RoR以来,一直认为用国内服务器会面临企业认证的问题。但是最近发现原来青云是可以不用公司认证也可以使用的(当然公网IP随时可能被墙),和Heroku相比,除了装环境非常耗时/琐碎之外,还需要承担一些费用。一个公网IP每天0.72人民币,一个1核1G的Linux主机每天2.4人民币,部署一个能用的网站最低是每月107.86人民币的开销。但作为学习练习部署来说,是脱离Heroku的好渠道。</p>
<p>第一步:注册青云账号</p>
<p><img src="https://ww2.sinaimg.cn/large/006tKfTcly1fbrpa9dbqsj31kw11b1kx.jpg" alt=""></p>
<p>第二步:选择用户类型</p>
<p><img src="https://ww1.sinaimg.cn/large/006tKfTcly1fbrpbay565j31kw11bk0p.jpg" alt=""></p>
<p>个人用户也需要认证使用,但只需要填写身份证信息,然后青云工作人员可能会电话核实本人存在,了解一下申请账号用途(自己学习做网站)就可以顺利通过了。我们基本上都是半小时内通过。</p>
<p>第三步:申请资源配额</p>
<p><img src="https://ww4.sinaimg.cn/large/006tKfTcly1fbrpcfulyaj319v14un5w.jpg" alt=""></p>
<p>第四步:选择区域</p>
<p><img src="https://ww3.sinaimg.cn/large/006tKfTcly1fbrpt2jqutj30fu0f9wgk.jpg" alt=""></p>
<p>第五步:开启一个主机和一个公网IP地址</p>
<p><img src="https://ww4.sinaimg.cn/large/006tKfTcly1fbrptmegbrj318t0uq0zr.jpg" alt=""></p>
<p>第六步:选择主机类型(所有配置按照最低选择即可)</p>
<p><img src="https://ww4.sinaimg.cn/large/006tKfTcly1fbrpx15f5ej31kw11baol.jpg" alt=""></p>
<p>第七步:设置一个SSH密匙(设置之后下载到电脑,保存在该项目文件夹)</p>
<p><img src="https://ww2.sinaimg.cn/large/006tKfTcly1fbrpy115vhj31ha0j5gr4.jpg" alt=""></p>
<p>第八步:将密匙和公网IP配置给主机</p>
<p><img src="https://ww4.sinaimg.cn/large/006tKfTcly1fbrq4z8hgkj30q40hxgqr.jpg" alt=""></p>
<p><img src="https://ww3.sinaimg.cn/large/006tKfTcly1fbrq57lau7j30l10fzgpx.jpg" alt=""></p>
<p>第九步:打开防火墙允许访问(网站访问默认为80端口)</p>
<p><img src="https://ww2.sinaimg.cn/large/006tKfTcly1fbrq66g307j30vq0g5wia.jpg" alt=""></p>
<p><img src="https://ww4.sinaimg.cn/large/006tKfTcly1fbrq6f9howj30x90n5doe.jpg" alt=""></p>
<p><img src="https://ww2.sinaimg.cn/large/006tKfTcly1fbrq6sf7npj30ob0aj0ud.jpg" alt=""></p>
<p>第十步:从本地访问远程服务器(iTerm到存储SSH密匙的文件夹)</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">$ chmod 600 kp-[密匙文件名]</div><div class="line">$ ssh -i kp-[密匙文件名] root@[公网IP地址]</div></pre></td></tr></table></figure>
<p>接下来就可以用其他网络教程开始安装Ruby了,可以参考:</p>
<ol>
<li><a href="https://fullstack.xinshengdaxue.com/posts/268" target="_blank" rel="external">Xdite的全栈班部署教程</a></li>
<li><a href="https://www.digitalocean.com/community/tutorials/how-to-deploy-a-rails-app-with-passenger-and-nginx-on-ubuntu-14-04" target="_blank" rel="external">DigitalOcean教程(从第二步开始)</a></li>
</ol>
]]></content>
<summary type="html">
<p>从开始学习RoR以来,一直认为用国内服务器会面临企业认证的问题。但是最近发现原来青云是可以不用公司认证也可以使用的(当然公网IP随时可能被墙),和Heroku相比,除了装环境非常耗时/琐碎之外,还需要承担一些费用。一个公网IP每天0.72人民币,一个1核1G的Linux主机
</summary>
<category term="功能" scheme="http://yoursite.com/categories/%E5%8A%9F%E8%83%BD/"/>
<category term="git" scheme="http://yoursite.com/tags/git/"/>
<category term="deploy" scheme="http://yoursite.com/tags/deploy/"/>
</entry>
<entry>
<title>【功能】如何将git的当前本地分支还原</title>
<link href="http://yoursite.com/2016/12/21/2016-12-21-how-to-reset-working-progress-in-git-branch/"/>
<id>http://yoursite.com/2016/12/21/2016-12-21-how-to-reset-working-progress-in-git-branch/</id>
<published>2016-12-21T11:43:11.000Z</published>
<updated>2016-12-21T11:50:29.000Z</updated>
<content type="html"><![CDATA[<p>将本地的branch还原:<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">git checkout .</div></pre></td></tr></table></figure></p>
<p>将本地的git全部重置,将所有尚未push到云端的commits取消:<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">git reset</div></pre></td></tr></table></figure></p>
<p>将某一个commit重置:<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">git revert <commit 1> <commit 2></div></pre></td></tr></table></figure></p>
<p>将新生成的文件重置:<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">git clean -f</div></pre></td></tr></table></figure></p>
<p>将新生成的文件夹重置:<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">git clean -fd</div></pre></td></tr></table></figure></p>
<p>原文参考:<a href="http://stackoverflow.com/questions/1146973/how-do-i-revert-all-local-changes-in-git-managed-project-to-previous-state" target="_blank" rel="external">Stackoverflow</a></p>
]]></content>
<summary type="html">
<p>将本地的branch还原:<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code">
</summary>
<category term="功能" scheme="http://yoursite.com/categories/%E5%8A%9F%E8%83%BD/"/>
<category term="git" scheme="http://yoursite.com/tags/git/"/>
</entry>
<entry>
<title>【功能】Rails中如何一次修改数据库中的多个字段</title>
<link href="http://yoursite.com/2016/12/21/2016-12-21-how-to-rename-multiple-columns-in-one-migration/"/>
<id>http://yoursite.com/2016/12/21/2016-12-21-how-to-rename-multiple-columns-in-one-migration/</id>
<published>2016-12-21T09:22:16.000Z</published>
<updated>2016-12-21T09:39:36.000Z</updated>
<content type="html"><![CDATA[<p>创建新的migration文件:<br>‘rails g migration FixColumnName’<br><strong><em>文件名不会被ActiveRecord辨识,只是给自己识别文件用途</em></strong></p>
<p>旧版本Rails的写法:<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></pre></td><td class="code"><pre><div class="line">class FixColumnName < ActiveRecord::Migration</div><div class="line"> def self.up</div><div class="line"> rename_column :table_name, :old_column, :new_column</div><div class="line"> end</div><div class="line"></div><div class="line"> def self.down</div><div class="line"> # rename back if you need or do something else or do nothing</div><div class="line"> end</div><div class="line">end</div></pre></td></tr></table></figure></p>
<p>Rails 3.1之后的写法:<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">class FixColumnName < ActiveRecord::Migration</div><div class="line"> def change</div><div class="line"> rename_column :table_name, :old_column, :new_column</div><div class="line"> end</div><div class="line">end</div></pre></td></tr></table></figure></p>
<p>多字段写法(重复rename部分):<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">rename_column :table_name, :old_column1, :new_column1</div><div class="line">rename_column :table_name, :old_column2, :new_column2</div><div class="line">...</div></pre></td></tr></table></figure></p>
<p>不用重复写<code>table_name</code>那么多次简写方法:<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></pre></td><td class="code"><pre><div class="line">class FixColumnNames < ActiveRecord::Migration</div><div class="line"> def change</div><div class="line"> change_table :table_name do |t|</div><div class="line"> t.rename :old_column1, :new_column1</div><div class="line"> t.rename :old_column2, :new_column2</div><div class="line"> ...</div><div class="line"> end</div><div class="line"> end</div><div class="line">end</div></pre></td></tr></table></figure></p>
<p>改了以后不要忘记run<code>rake db:migrate</code>。如果migration出现问题,且数据库可以充值(没有需要保存的东西),可以试试run <code>rake db:reset</code>然后再migrate。</p>
<p>参考:<a href="http://stackoverflow.com/questions/1992019/how-can-i-rename-a-database-column-in-a-ruby-on-rails-migration/" target="_blank" rel="external">Stackoverflow原文答案</a></p>
]]></content>
<summary type="html">
<p>创建新的migration文件:<br>‘rails g migration FixColumnName’<br><strong><em>文件名不会被ActiveRecord辨识,只是给自己识别文件用途</em></strong></p>
<p>旧版本Rails的写法:<b
</summary>
<category term="功能" scheme="http://yoursite.com/categories/%E5%8A%9F%E8%83%BD/"/>
<category term="ActiveRecord" scheme="http://yoursite.com/tags/ActiveRecord/"/>
<category term="migration" scheme="http://yoursite.com/tags/migration/"/>
<category term="rails" scheme="http://yoursite.com/tags/rails/"/>
</entry>
<entry>
<title>【功能】如何在修改Heroku app名称后重新连接本地的Git</title>
<link href="http://yoursite.com/2016/12/21/2016-12-20-how-to-reconnect-git-to-heroku-after-renaming-heroku-app-md/"/>
<id>http://yoursite.com/2016/12/21/2016-12-20-how-to-reconnect-git-to-heroku-after-renaming-heroku-app-md/</id>
<published>2016-12-20T16:19:23.000Z</published>
<updated>2016-12-21T11:50:04.000Z</updated>
<content type="html"><![CDATA[<p>在完成第一次Heroku部署的时候,Heroku会自动生成一个项目名称,规格为:形容词+名词+数字,比如”desolate-refuge-11720”。</p>
<p>但这个名字我们可能不喜欢,或者在之后项目测试的时候需要用户看到辨识度更高的URL。这个时候就需要改名了。</p>
<p>在Heroku后台可以直接更改项目名称:<br><img src="http://ww3.sinaimg.cn/large/006tNbRwjw1faxqe1qfdvj31920fujtm.jpg" alt=""></p>
<p>更改后保存时Heroku会自动提示可能会跟本地Git断开:<br><img src="http://ww4.sinaimg.cn/large/006tNbRwjw1faxqed6nduj31kw0isdkb.jpg" alt=""></p>
<p>保存完毕确认信项目名称:<br><img src="http://ww1.sinaimg.cn/large/006tNbRwjw1faxqej2ybjj313a0eqmz0.jpg" alt=""></p>
<p>这个时候回到Terminal再进行<code>git push heroku</code>的时候,旧的项目名会找不到:<br><img src="http://ww1.sinaimg.cn/large/006tNbRwjw1faxqeokxdtj313q04c41e.jpg" alt=""></p>
<p>用两条代码重新建立Heroku关联项目:<br><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">$ git remote rm heroku # 先切断本来heroku的关联</div><div class="line">$ heroku git:remote -a newname # 跟新项目重新建立关联</div></pre></td></tr></table></figure></p>
<p>再次push就没问题了:<br><img src="http://ww2.sinaimg.cn/large/006tNbRwjw1faxqett447j314209cwl4.jpg" alt=""></p>
<p>原文参考:<a href="https://devcenter.heroku.com/articles/renaming-apps#updating-git-remotes" target="_blank" rel="external">Stackoverflow</a></p>
]]></content>
<summary type="html">
<p>在完成第一次Heroku部署的时候,Heroku会自动生成一个项目名称,规格为:形容词+名词+数字,比如”desolate-refuge-11720”。</p>
<p>但这个名字我们可能不喜欢,或者在之后项目测试的时候需要用户看到辨识度更高的URL。这个时候就需要改名了。<
</summary>
<category term="功能" scheme="http://yoursite.com/categories/%E5%8A%9F%E8%83%BD/"/>
<category term="heroku" scheme="http://yoursite.com/tags/heroku/"/>
<category term="git" scheme="http://yoursite.com/tags/git/"/>
<category term="production" scheme="http://yoursite.com/tags/production/"/>
</entry>
<entry>
<title>【功能】Controller中verify_authenticity_token上传到Heroku出现bug</title>
<link href="http://yoursite.com/2016/12/16/2016-12-16-problem-with-verify-authenticity-token-when-uploading-to-heroku/"/>
<id>http://yoursite.com/2016/12/16/2016-12-16-problem-with-verify-authenticity-token-when-uploading-to-heroku/</id>
<published>2016-12-15T23:30:00.000Z</published>
<updated>2016-12-21T11:50:46.000Z</updated>
<content type="html"><![CDATA[<p>原本代码:</p>
<figure class="highlight ruby"><figcaption><span>application_controller.rb</span></figcaption><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line"><span class="class"><span class="keyword">class</span> <span class="title">ApplicationController</span> < ActionController::Base</span></div><div class="line"> protect_from_forgery <span class="symbol">with:</span> <span class="symbol">:exception</span></div><div class="line"> skip_before_action <span class="symbol">:verify_authenticity_token</span></div></pre></td></tr></table></figure>
<p>本地运行app没有问题,上传到Heroku成功,打开Heroku app开始报错“Application Error”。输入heroku run rails console发现问题是<code>verify_authenticity_token has not been defined (ArgumentError)</code>。</p>
<p>修改:</p>
<figure class="highlight ruby"><figcaption><span>application_controller.rb</span></figcaption><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line"><span class="class"><span class="keyword">class</span> <span class="title">ApplicationController</span> < ActionController::Base</span></div><div class="line"> protect_from_forgery <span class="symbol">with:</span> <span class="symbol">:exception</span></div><div class="line"> <span class="comment"># skip_before_action :verify_authenticity_token</span></div></pre></td></tr></table></figure>
<p>不确定为什么之前加了这一行,但改好之后整个app运行正常,原本设计在登陆前能看到的东西都可以看到,改要求登陆的地方也都会正常要求登陆。</p>
<p>参考:<br><a href="http://stackoverflow.com/questions/39260198/verify-authenticity-token-has-not-been-defined" target="_blank" rel="external">http://stackoverflow.com/questions/39260198/verify-authenticity-token-has-not-been-defined</a></p>
<p><a href="https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/metal/request_forgery_protection.rb#L122" target="_blank" rel="external">https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/metal/request_forgery_protection.rb#L122</a></p>
]]></content>
<summary type="html">
<p>原本代码:</p>
<figure class="highlight ruby"><figcaption><span>application_controller.rb</span></figcaption><table><tr><td class="gutter"><pr
</summary>
<category term="功能" scheme="http://yoursite.com/categories/%E5%8A%9F%E8%83%BD/"/>
</entry>
<entry>
<title>【体会】为什么创业做得不错的人都是大忽悠?</title>
<link href="http://yoursite.com/2016/12/15/2016-12-15-why-those-entrepreneurs-who-seem-to-do-well-are-all-good-at-bullshitting/"/>
<id>http://yoursite.com/2016/12/15/2016-12-15-why-those-entrepreneurs-who-seem-to-do-well-are-all-good-at-bullshitting/</id>
<published>2016-12-15T09:59:00.000Z</published>
<updated>2016-12-17T06:10:34.000Z</updated>
<content type="html"><![CDATA[<p>今晚跟一个从华尔街回国的朋友聊天,发现金融圈跑出来创业的人,在学生时代都拥有一个共同标签:特别能忽悠。</p>
<p>其实很make sense。会忽悠的人在融资、营销、销售、挖人这些初创阶段比较重要的事情上都颇有优势,所以很容易感觉表面繁华。</p>
<p>但是,会忽悠的人往往产品做得稀烂,Retention几乎为0。<br>这可能是中国创业者和美国创业者最大的不同。</p>
<p>很可惜,我在学生时代并没有这样的标签,所以只能靠后天补勤了。</p>
]]></content>
<summary type="html">
<p>今晚跟一个从华尔街回国的朋友聊天,发现金融圈跑出来创业的人,在学生时代都拥有一个共同标签:特别能忽悠。</p>
<p>其实很make sense。会忽悠的人在融资、营销、销售、挖人这些初创阶段比较重要的事情上都颇有优势,所以很容易感觉表面繁华。</p>
<p>但是,会忽悠的
</summary>
</entry>
<entry>
<title>【体会】如何客观理性冷静的看待周遭人怎么看你的创业想法?</title>
<link href="http://yoursite.com/2016/12/13/2016-12-13-how-to-calm-and-rational-look-at-what-people-around-us-think-of-your-business-idea/"/>
<id>http://yoursite.com/2016/12/13/2016-12-13-how-to-calm-and-rational-look-at-what-people-around-us-think-of-your-business-idea/</id>
<published>2016-12-13T11:45:00.000Z</published>
<updated>2016-12-20T11:21:02.000Z</updated>
<content type="html"><![CDATA[<p>最近跟几个想创业的朋友聊了一些他们的创业idea,有感而发:</p>
<ol>
<li><p>大部分人看好的项目,最终不一定成功</p>
</li>
<li><p>大部分人不看好的项目,最终不一定不成功</p>
</li>
<li><p>最终成功的项目,大部分人一开始都不看好</p>
</li>
<li><p>最终不成功的项目,没有人记得一开始大家看不看好</p>
</li>
</ol>
<p>总结:</p>
<p>大部分人怎么看你的创业项目根本没任何毛线关系,尽管有些漏洞百出的白痴idea,但也可以在产品一上线的时候迅速知道可不可行</p>
<p>太过于在乎其他人怎么看你的idea,唯一影响的是你自己的军心</p>
<p>很少投资人能够预测未来,不要把运气好的人和有insight的人搞混</p>
<p>只有几个人的想法重要:</p>
<p>1 . 你自己</p>
<p>0 . 你的团队</p>
<p>0 . 最亲的人</p>
<p>0 . 已经投了你的人</p>
<p>你是1,其他的都是0.</p>
]]></content>
<summary type="html">
<p>最近跟几个想创业的朋友聊了一些他们的创业idea,有感而发:</p>
<ol>
<li><p>大部分人看好的项目,最终不一定成功</p>
</li>
<li><p>大部分人不看好的项目,最终不一定不成功</p>
</li>
<li><p>最终成功的项目,大部分人一开始都不看
</summary>
</entry>
<entry>
<title>【功能】如何在使用Turbolink的时候下达document.ready指令</title>
<link href="http://yoursite.com/2016/12/13/2016-12-13-how-to-add-turbolinks-and-have-document-ready-commands-function-properly/"/>
<id>http://yoursite.com/2016/12/13/2016-12-13-how-to-add-turbolinks-and-have-document-ready-commands-function-properly/</id>
<published>2016-12-13T03:57:00.000Z</published>
<updated>2016-12-20T11:21:11.000Z</updated>
<content type="html"><![CDATA[<p>##问题:<br>Turbolinks在帮助页面加速(不去重新加载已经加载过的物件)的时候,JS指令“document.ready”不会被引发,所以根据该指令产生的jQuery动作也不会执行。在网站页面不多、物件不复杂的时候,直接干掉Turbolinks是可行的(也是<a href="http://dyz2102-blog.logdown.com/posts/1149250" target="_blank" rel="external">之前写的一篇教学</a>中所推荐的),但当页面越来越多,加载速度越来越慢的时候,使用Turbolinks变得十分重要,所以需要将”document.ready”修改成一个Turbolinks会发出的指令。</p>
<p>##解决方案:</p>
<p>将<br><figure class="highlight javascript"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">$(<span class="built_in">document</span>).ready(<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span></div><div class="line"> //<span class="title">YOUR</span> <span class="title">FUNCTION</span></div><div class="line">);</div></pre></td></tr></table></figure></p>
<p>修改为<br><figure class="highlight javascript"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">$(<span class="built_in">document</span>).on(<span class="string">"turbolinks:load"</span>, <span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span></div><div class="line"> //<span class="title">YOUR</span> <span class="title">FUNCTION</span></div><div class="line">);</div></pre></td></tr></table></figure></p>
<p>记住要加回Turbolinks:</p>
<figure class="highlight javascript"><figcaption><span>application.js</span></figcaption><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><span class="comment">//= require turbolinks</span></div></pre></td></tr></table></figure>
<p>这样页面的指令就会在正常执行了。</p>
<p>参考:<a href="http://guides.rubyonrails.org/working_with_javascript_in_rails.html#turbolinks" target="_blank" rel="external">http://guides.rubyonrails.org/working_with_javascript_in_rails.html#turbolinks</a></p>
]]></content>
<summary type="html">
<p>##问题:<br>Turbolinks在帮助页面加速(不去重新加载已经加载过的物件)的时候,JS指令“document.ready”不会被引发,所以根据该指令产生的jQuery动作也不会执行。在网站页面不多、物件不复杂的时候,直接干掉Turbolinks是可行的(也是<a
</summary>
<category term="编程学习" scheme="http://yoursite.com/categories/%E7%BC%96%E7%A8%8B%E5%AD%A6%E4%B9%A0/"/>
</entry>
<entry>
<title>Day02 Week08 - 接案公司分享、大公司朋友PK</title>
<link href="http://yoursite.com/2016/12/06/2016-12-06-day02-week08-company-shares-company-of-friends-pk/"/>
<id>http://yoursite.com/2016/12/06/2016-12-06-day02-week08-company-shares-company-of-friends-pk/</id>
<published>2016-12-06T09:49:00.000Z</published>
<updated>2016-12-20T11:22:04.000Z</updated>
<content type="html"><![CDATA[<p>今天的两件事情我觉得比较值得回味。</p>
<p>第一件就是Xdite分享了接案公司的运营。<br>第二件是晚上去一个朋友的局被好友劝说去大公司工作。</p>
<p>1.</p>
<p>接案公司是我昨天晚上在班上提出的一个想法,为的是解决我们很多人在课程结束后还渴望继续练习,同时需要找工作产生收入的需求。联合开一个接案公司可以解决这个问题,一方面有项目可以继续练习,另一方面又可以开始有收入。与此同时,接案公司在台湾碰到的两大瓶颈:人才短缺和市场太小,在大陆都不是问题。</p>
<p>但今天早上,Xdite老师分享了接案公司的心得后,这一条路似乎又看起来没有那么promising。核心点在于接案公司的盈利能力很大程度上取决于客户。好客户想法不变、修改不多、按时付费、结算尾款。坏客户朝三暮四、各种改动、拖延付款、尾款坏账。在这种行业里,公司的收入是浮动的(案子有时多有时少 + 付款是被动的),但开销却是固定的(程序员工资 + 房租),所以很容易在市场不景气或者客户不靠谱的时候拖垮一家公司,或者至少说接案的钱并没有那么好赚。</p>
<p>就这样,我们从约饭、VPN到接案三个不同idea的迅速转移又回到了原点。</p>
<p>2.</p>
<p>今天晚上,我跟几个很久没见的朋友们喝东西。我现在已经不隐瞒学编程这件事情了。如我所料,其中两位朋友开始说6万块如何不值,如何用3个程序员4万工资2个礼拜就开发出来了两个角色两个版本的iOS App。另外一个朋友拉着我聊了许久,觉得我应该去一个大的科技公司工作几年再创业,认为独自干的学习成本太高,不如积累好资源、想清楚再干。</p>
<p>Well,这些东西我在过去半年里,已经反复想过很多遍了。</p>
<p>技术可不可以外包?当然可以。作为一个推荐所有创业者“能外包的东西尽量外包”的人,我为什么会想不开,自己去学最难学会的那个本可以外包的东西?因为我需要在连4万块工资都开不起的时候把东西做出来。我已经很清楚地看到,MVP不是做一次就结束了,而是需要不断修改,甚至做很多次才能完善的东西。而创业idea,更是有可能快速失败后快速更换。所以即便在资本寒冬之后程序员外包成本急剧下降,没有钱想要聘人写一版又一版的程序是不现实的。</p>
<p>另外说一下去大公司这一点。</p>
<p>如果我打算用未来两年时间摸索创业,而我面临的选择是A:去BAT/GFA工作两年,还是B:连续创业失败3次?我会选B。很多人可能永远无法理解,唯一让你“创业能力”更强的工作,就是创业。去大公司积累人脉、看准需求、看好趋势,都比不上在创业过程中用实际的产品去碰撞实际的需求。</p>
<p>以上。</p>
]]></content>
<summary type="html">
<p>今天的两件事情我觉得比较值得回味。</p>
<p>第一件就是Xdite分享了接案公司的运营。<br>第二件是晚上去一个朋友的局被好友劝说去大公司工作。</p>
<p>1.</p>
<p>接案公司是我昨天晚上在班上提出的一个想法,为的是解决我们很多人在课程结束后还渴望继续练习
</summary>
<category term="编程学习" scheme="http://yoursite.com/categories/%E7%BC%96%E7%A8%8B%E5%AD%A6%E4%B9%A0/"/>
<category term="全栈营52天" scheme="http://yoursite.com/tags/%E5%85%A8%E6%A0%88%E8%90%A552%E5%A4%A9/"/>
</entry>
<entry>
<title>全栈营之8周心得 - 你好我是朱英楠,一只程序猿</title>
<link href="http://yoursite.com/2016/12/05/2016-12-05-%E5%85%A8%E6%A0%88%E5%BF%83%E5%BE%97/"/>
<id>http://yoursite.com/2016/12/05/2016-12-05-全栈心得/</id>
<published>2016-12-05T05:03:00.000Z</published>
<updated>2017-02-07T11:01:20.000Z</updated>
<content type="html"><![CDATA[<p><strong>如何正确的面对自己?</strong></p>
<p>起笔写这个心得,比我想象中要难好多。</p>
<p>我其实并不是一个喜欢研究如何“学习”的人,或者说我在较早的时候就已经经历了迷恋研究如何学习的时期。我在大一的时候痴迷于GTD,买了很多书,给自己做了inbox、文件夹、各种todo list、用了各种App(那个时候就用了第一版经常闪退的Evernote Beta),后来发现效率的确有提升,但并没有那么“神奇”,和我自己持续正常努力的结果可能不会有太大差距。也可能是因为从小就足够会学习,家里满墙奖状、高中当选学生会主席、哥伦比亚大学提前录取、本科毕业就年薪百万,这些对我来说虽然不算轻而易举,但真的也没那么难。我是个典型的实践主义者:Just do it。思考,远没有执行来的有快感。</p>
<p>我也不是不擅长写字。我7年前就开了<a href="www.davidyzhu.wordpress.com">自己的博客</a>,从高盛辞职的时候写过整个金融圈都看到过的“<a href="http://mp.weixin.qq.com/s?__biz=MzAxODExMDM1NA==&mid=202742321&idx=1&sn=a66633e9e3d178c0e009146c03910922#rd" target="_blank" rel="external">我为何离开香港</a>”,在<a href="https://www.zhihu.com/people/zhuyingnan" target="_blank" rel="external">知乎</a>上过去一年也积累了接近一万个粉丝。但我不喜欢写日记。也不擅长总结自己学习的过程或方法论。我比较擅长的是分享人生阅历、在每一个人生节点为什么做出和别人不太一样的决定的思考,或者对最近所观察到的事情做出自己的一些看法和总结。换句话说,一篇文章对我来说更像是一个会被展示的项目,而不是一段文字记录或思路整理。这是个我仍需要克服的问题。</p>
<p>在”Just Do It”的模式下运行惯了的我,却发现在创业这件事情上并行不通。在过去两年中,我尝试过两次互联网创业,享受了融资成功、百人团队、9个月烧掉一千万的盛世,也体验过产品零增长、融资失败、合伙人撕逼、团队解散的挫败。长这么大第一次深刻意识到,再漂亮的简历、再牛逼的背景、再花哨的西装、再强大的自我包装能力,在市场面前,完全没有任何卵用。</p>
<p>你可以说我是一个自以为是的over-achiever,一个精致的利己主义者,一个创业动机不纯的wantrepreneur——我曾经100%是,直到现在一部分的我,可能还是。</p>
<p>通常,和我类似背景的人在碰到上述困难的时候,会选择去读MBA,准确的说是哈佛、沃顿、斯坦福的MBA。但当我脑海中闪过这样的念头的时,我会立刻将其抹杀,因为我不需要再多一个名校标签,被潜意识的逃避所屈服,两年后回到远点,再一次思考工作vs.创业的窘境。</p>
<p>所以我选择了面对。面对自己的失败的最大好处,就是让所有心高气傲的想法统统被干掉。全栈营开学第一天,我没有要做队长,甚至在前两周都没有说什么话。我告诉自己,我就是个什么都不懂的初学者,我需要做的唯一一件事,就是学。所以,能够让我真正进入学习状态的,不是智商或勤奋,而是抛开了我的傲慢。</p>
<p><strong>创业失败了,所以呢?</strong></p>
<p>创业失败后的总结过程中,我越来越认为创业不是需要去理解多么高阶、深奥、复杂的理论,而是将一些非常简单又基本的原则真正去实践。以下是我认为在所读过的文字中最能够概括创业所需的基本原则:</p>
<ol>
<li>Companies create X amount of value, and capture Y% of X(创造价值X,然后获取X里面的Y%占比).</li>
<li>Avoid competition and always try to monopolize a small market(避免竞争,尽可能垄断一个微小市场).</li>
<li>The best way to think of startup ideas is not to try to think of startup ideas. It’s to look for problems, preferrably problems you have yourself(思考创业点子的最好办法就是不要去想创业点子,而是去找寻问题,最好是你自己正面临的问题).</li>
<li>The best startup ideas tent to have three things in common(最好的创业点子拥有以下特征):<br> a. they’re something the founders themselves want(是创始人自己想要的东西)<br> b. that they themselves can build(是创始人可以创造的东西)<br> c. and that few others realize are worth doing(而且很少其他人会认为这件东西有价值).</li>
</ol>
<p>前两条来自Peter Thiel 2012年在<a href="http://startupclass.samaltman.com/courses/lec05/" target="_blank" rel="external">斯坦福的创业课</a>,后来被整理写入他的书《从零到一》,后两条来自<a href="http://paulgraham.com/startupideas.html" target="_blank" rel="external">Paul Graham的博客</a>,同样写于2012年。</p>
<p>这些原则可能会是我下一次创业的指南针,但其中有一个很大的缺口:<strong>4.b——创始人需要自己能够打造自己想要用来解决问题的产品。</strong> 而这,也正是我学编程的原因。</p>
<p>过去两年,我看到了太多创业者在开发上所浪费的时间、精力、钱,最终打造出来设计丑、体验差、没人用的产品。选择创业是为了给世界创造价值,而这样的创业只会摧毁价值。</p>
<p>我没有对身边的任何人提我要去学编程这件事情。他们不会那么容易理解,我也懒得浪费时间去解释自己。在获得了我唯一需要的支持后(我的家人),我就报名了全栈营。</p>
<p><strong>全栈营是什么鬼?</strong></p>
<p>刚来全栈营的时候,我是怀疑的。经验告诉我,大部分告诉你能够速成的东西都是骗人的。</p>
<p>我不知道Ruby on Rails是什么。我查了网上的解释,还是不知道Ruby on Rails是什么。我听过Github无数次,甚至之前创业的iOS代码就备份在Github上,但我不知道一行Github指令,也不说不出Github是什么。我上一次写代码,是13岁的时候为了让自己的MySpace能够更好看一些,勉强用HTML调整了背景图、字体、颜色。所以对,我也不知道CSS是什么,因为没用过。</p>
<p>7个星期的项目成果,大概是长这样:</p>
<p>【第一个项目:贴吧,开学前两周独立完成】<br><img src="http://ww2.sinaimg.cn/large/7853084cjw1fah1wg1dm9j20nd06s0sr.jpg" alt=""></p>
<p>【第二个项目:论坛,开学前独立完成】<br><img src="http://ww1.sinaimg.cn/large/7853084cjw1fah1yryq10j20xg0bcq3t.jpg" alt=""></p>
<p>【第三个项目:招聘网站,独立6天完成】<br><img src="http://ww4.sinaimg.cn/large/7853084cjw1fah2n3us8fj20nv0gh77p.jpg" alt=""></p>
<p>【第四个项目:电商,独立8天完成】<br><img src="http://ww4.sinaimg.cn/large/7853084cjw1fah259q8zwj20de0hejum.jpg" alt=""></p>
<p>【第五个项目:投票游戏,2人2天完成的Hackathon】<br><img src="http://ww2.sinaimg.cn/large/7853084cjw1fah1zkta87j20xc0dhgpr.jpg" alt=""></p>
<p>【第六个项目:约饭平台,5人15个工作日完成】<br><img src="http://ww3.sinaimg.cn/large/7853084cjw1fah24sf9p8j20bt0xkwjk.jpg" alt=""></p>
<p>如果说我曾经怀疑自己成为一个全栈工程师的潜力,在做完这6个项目之后,我不再有任何怀疑。尽管我现在还不足以称自己为“全栈”,但我已经具备了开发最基础功能的web + mobile前端和后端技能(从这里延伸到iOS/Android也提供了快捷的方法和教材)。更重要的是,我已经拥有了自学开发任何其他简单功能的基础。不喜欢写日记的我,也攒下了近60篇博客,其中约10篇是关于开发某个功能的方法或总结。</p>
<p>不得不承认,在“把学生教会”这一件事上,全栈营做到了。</p>
<p><strong>所以Ruby on Rails到底是什么?</strong></p>
<p>如果一个程序是一个世界,那么程序员就是建造这个世界的神。《创世记》中,神说:“要有光”,就有了光。但神是如何获得制作光的工具?万一光子并不知道如何连接在一起让光线可以从A照射到B呢?万一被光照射到的地方并无法反光所以透露不出自己的颜色呢?人只看得到光,所以认为神可以用一句话让光出现,但人并不知道神是这么造光的。</p>
<p>神要创造光,需要两样东西:给光下达指令的方式,和下达指令的框架。前者可以使任何神和光都懂的语言,而后者,是让神在写任何东西的时候都可以快速高效的写出来,而不需要去担心存放东西空间的大小、里面的物质等其他琐碎却复杂的细节。</p>
<p>所以,在这个世界里:</p>
<ul>
<li>神=程序员</li>
<li>光=程序</li>
<li>人=用户</li>
<li>神对光下达指令的方式=Ruby</li>
<li>神创造任何东西的框架=Rails</li>
</ul>
<p>写程序的人非常多,程序非常多,语言也非常多,但为什么说Ruby on Rails会比其他方式更快?因为Rails对神想要做的事情做了很多的预估和猜测,设计了一系列方便神去创造的框架细节。就像在一个锅碗瓢盆因有尽有的厨房炒菜和跟在一个什么都需要去买的厨房炒菜是完全不一样的。Rails就是那个连新鲜调味料都帮你备好的厨房。</p>
<p><strong>7个星期中具体都学到了些什么?</strong></p>
<p>在过去一段时间的学习中,我最大的surprise就是Rails有多么的简单。回顾日记,我可以清楚的看到自己是在哪一天学到了什么:开始学会<a href="http://dyz2102-blog.logdown.com/posts/1013486" target="_blank" rel="external">用Google自己搜教学</a>完成某个功能(第3天…)、<a href="http://dyz2102-blog.logdown.com/posts/1016843" target="_blank" rel="external">如何写seed文档</a>(第4天)、<a href="http://dyz2102-blog.logdown.com/posts/1034465-day01-week02" target="_blank" rel="external">上传附件</a>(第6天)、理解migration和<a href="http://dyz2102-blog.logdown.com/posts/1042590" target="_blank" rel="external">重建db</a>(第8天)、<a href="http://dyz2102-blog.logdown.com/posts/1047572" target="_blank" rel="external">自由搭建routes</a>(第9天)、<a href="http://dyz2102-blog.logdown.com/posts/1061503-day01-week03" target="_blank" rel="external">写CRUD以外的新action</a>(第11天)、<a href="http://dyz2102-blog.logdown.com/posts/1068920-day03-week03-shopping-site-with-order-delivery" target="_blank" rel="external">自动发邮件</a>(第13天)、<a href="http://dyz2102-blog.logdown.com/posts/1070126-day04-week03" target="_blank" rel="external">装状态机</a>(第14天)、<a href="http://dyz2102-blog.logdown.com/posts/1070126-day04-week03" target="_blank" rel="external">使用AWS存储文件</a>(第15天)、<a href="http://dyz2102-blog.logdown.com/posts/1073097-manage-aws-key-using-figaro-on-heroku-for-carrierwave" target="_blank" rel="external">用Figaro保护AWS云服务</a>(第16天)、<a href="http://dyz2102-blog.logdown.com/posts/1084768" target="_blank" rel="external">如何规划Hackathon的超短线开发</a>、<a href="http://dyz2102-blog.logdown.com/posts/1103135" target="_blank" rel="external">做Landing Page</a>(第20天)。</p>
<p>从第五周起(第21天)我们进入团队开发模式,项目管理和协作变成了首要学习要点,也就是从这里开始真正模拟实战开发项目的场景。没有什么产品会是一个人独立写出来的,而无法协作的人一定无法成为好的程序员。也是在这个时候,我开始觉得我的小宇宙爆发了。从<a href="http://dyz2102-blog.logdown.com/posts/1106141-day01-week05-collab-on-proj-eatgether" target="_blank" rel="external">写User Story</a>、<a href="http://dyz2102-blog.logdown.com/posts/1139165-week06-the-sixth-week-summary-importance-of-teamwork" target="_blank" rel="external">在Redmine上切票</a>、<a href="http://dyz2102-blog.logdown.com/posts/1149797-eat2gether-onboarding-documents" target="_blank" rel="external">写Onboarding文档</a>,到<a href="http://dyz2102-blog.logdown.com/posts/1171106" target="_blank" rel="external">写前端</a>、<a href="http://dyz2102-blog.logdown.com/posts/1138305-day04-week06-demo-version-of-the-product" target="_blank" rel="external">做demo</a>,都在一定程度上发挥了我的罗辑思维能力、项目管理能力和视觉审美。我们团队也顺利成为全班进度最快、产品最完整的团队。</p>
<p><strong>8周6万的课,是否值得?</strong></p>
<p>人在衡量一段经历的价值的时候会展现出惊人的认知偏差。成果令人开心的事情价值很容易抬高,反之则无论前面体验如何都会变的不值;自己选择的事情很容易觉得宝贵,被强迫的选择很容易不值;经过千辛万苦被虐到废的经历会十分珍惜,轻易得来的东西则不那么在乎。所以当我们问一个人某段经历是否值得的时候,100个人会有100种答案。</p>
<p>按照我创业前工资来算,过去2个月的机会成本大概是26万人民币。但我在很早之前就已经放弃了按月计算机会成本的短视角。因为这样算的人,永远不会离开高薪打工的岗位去尝试任何带有较高风险的事情。打工和创业,就像是债权回报和股权回报的对比。买债券拿到的是每月的固定收益(工资),而股权回报可以几年不分红甚至亏损,而在未来的某一天腾飞,获得几十甚至上百倍的回报。</p>
<p>从一个技术的门外汉,到能独立开发极简程序、共同开发完整可上线程序,能够看懂Stackoverflow上的交流贴并自己实现没有做过的新功能、解决没有碰到过的bug,这一切对我来说,其实已经远远超出了我对自己“程序员”身份的假想。有很多人会去花时间选择编程语言,甚至去网上跟人撕哪一种语言更好。在这一点上quote一句老人的话“不管黑猫白猫,捉到老鼠就是好猫”。</p>
<p>在我上一次创业当中,开发一款iOS的App,从立项到内测花了近4个月时间,用了1个iOS、1个后端、1个后端实习生、1个产品经理、1个外包设计师、1个全职设计师,开了几十万的工资。而现在的我,再继续练习1-2个月之后,可以1个人完成那6个人做的所有事情。</p>
<p>但在这里学到比编程更有价值的,是关于创业的一些best practice和know-how。Landing Page, User Story, 项目管理,Growth Hacking…如果说编程让我创业的成功率从1%上升到了2%,那么这些其他的知识可能让2%成为了5%(虽然实际情况可能这些概率都得再除以10,哈哈哈)。</p>
<p><strong>结论</strong></p>
<p>在过去半年里,我拒绝了来自投行、PE的offer,以及来自影视行业、医药行业、创业公司CFO的橄榄枝。无论是投资人还是创业者,下注小概率事件的人都是有一定赌性。既然只能下注一次,为什么不博一把大点的呢?</p>
]]></content>
<summary type="html">
<p><strong>如何正确的面对自己?</strong></p>
<p>起笔写这个心得,比我想象中要难好多。</p>
<p>我其实并不是一个喜欢研究如何“学习”的人,或者说我在较早的时候就已经经历了迷恋研究如何学习的时期。我在大一的时候痴迷于GTD,买了很多书,给自己做了in
</summary>
<category term="编程学习" scheme="http://yoursite.com/categories/%E7%BC%96%E7%A8%8B%E5%AD%A6%E4%B9%A0/"/>
<category term="全栈营52天" scheme="http://yoursite.com/tags/%E5%85%A8%E6%A0%88%E8%90%A552%E5%A4%A9/"/>
</entry>
<entry>
<title>【体会】写前端的一些体会</title>
<link href="http://yoursite.com/2016/12/04/2016-12-04-front-end-summary/"/>
<id>http://yoursite.com/2016/12/04/2016-12-04-front-end-summary/</id>
<published>2016-12-04T00:24:00.000Z</published>
<updated>2016-12-20T11:20:19.000Z</updated>
<content type="html"><![CDATA[<p>过去两周team基本进入了前后端共同推进阶段,而我作为组内设计元素的主要贡献者,不可避免的花了大量时间写前端。这不是我想做的,因为学技术的目的是希望能够自主开发更多功能,但为了项目推进,必须要实现最大化每个人的产值,同时也是对自己前端HTML、CSS很好的练习。</p>
<p>两周前端写下来,分享一下自己的体会:</p>
<p>##前端和后端一样需要提前规划</p>
<p>我在之前的一篇日记中提到过,在项目进行到一定程度,MVC需要<a href="http://dyz2102-blog.logdown.com/posts/1124801-week05-weekly-summary-group-project-demo-stage" target="_blank" rel="external">提前规划再写入</a>。前端开发其实在荧幕适配这个问题上是类似的。由于我们项目从一开始只想到了电脑荧幕适配,所以没有写入任何的小荧幕适配CSS。这就导致在之后写入这代码的时候需要修改大量以前的代码,排版和CSS定义越多的地方修改越大。</p>
<p>由于Bootstrap提供了非常便利的responsive grid system,所以其实在一开始写的时候就应该想好两套适配模式:电脑和移动端,基本可以用Bootstrap上的<code>col-md-XX</code>和<code>col-xs-XX</code>覆盖。而只有需要罗列大量物件的地方才需要考虑使用<code>col-lg-XX</code>和其他大小的适配。</p>
<p>另外,如果所有页面都通过Bootstrap nav tab以及render partial的方式呈现,可以让使用的时候几乎没有任何跳转(“设计师”项目应该就是这样设计的,所有页面都是partial的形态存在views/common下面)。但同样,这种写法需要一开始就定好,因为之后修改的时候营业面需要将view里面的定义通过controller重新确定,越往后越麻烦。</p>
<p>##前端的核心不是技术,是审美和时间</p>
<p>之前以为技术大牛朋友跟我说过,后端决定了项目的底线,前端决定了项目的上线。虽然不是100%完全认同,但基本上表达了项目前后端的角色。前端不需要对编程有深刻的理解,不需要对项目管理有详细的规划,只需要懂得如何通过HTML/CSS/jQuery来实现视觉上的效果。而且有了Bootstrap、jQuery、HTML5、CSS3等便捷语言的出现,在开发模式下其实想要调整前端也非常容易。</p>
<p>但前端却是可以非常耗时间的意向工作。每实现一个新的视觉效果、生成一个新的页面,都需要花大量的时间去编排。甚至套模板也不是很便捷,因为大部分模板都是为基本的HTML、CSS而写,都不那么智能,在根据自己网站需求套上之后如果要加效果还得另行写入。</p>
<p>所以如Xdite所做的,前端完全可以外包给一个专业点的设计师,同时有一个in-house胜任者就可以完成。</p>
<p>##珍惜时间,远离APP</p>
<p>下周希望学习高瑞是如何用15秒生成“法律在线”项目App的,然后如果整个产品都是JS + Partial的形式,基本上不会有太多页面跳转,使用起来跟App的体验是差不多的。App开发时,手机荧幕大小的适配、App Store的认证、审核,都会耗费大量的时间和精力,在创业早期,能不碰就千万别碰。</p>
]]></content>
<summary type="html">
<p>过去两周team基本进入了前后端共同推进阶段,而我作为组内设计元素的主要贡献者,不可避免的花了大量时间写前端。这不是我想做的,因为学技术的目的是希望能够自主开发更多功能,但为了项目推进,必须要实现最大化每个人的产值,同时也是对自己前端HTML、CSS很好的练习。</p>
<
</summary>
<category term="编程学习" scheme="http://yoursite.com/categories/%E7%BC%96%E7%A8%8B%E5%AD%A6%E4%B9%A0/"/>
<category term="全栈营52天" scheme="http://yoursite.com/tags/%E5%85%A8%E6%A0%88%E8%90%A552%E5%A4%A9/"/>
</entry>
<entry>
<title>Weekly Summary - 最后demo + 求职技巧</title>
<link href="http://yoursite.com/2016/12/02/2016-12-02-weekly-summary/"/>
<id>http://yoursite.com/2016/12/02/2016-12-02-weekly-summary/</id>
<published>2016-12-01T23:37:00.000Z</published>
<updated>2016-12-20T11:20:15.000Z</updated>
<content type="html"><![CDATA[<p><strong>Objective</strong></p>
<p>关于今天的课程, 你记得什么?</p>
<ul>
<li>上午进行了group project的最后一次demo</li>
<li>下午Xdite分享了有关技术人才求职的技巧与心得,以及如何包装自己的简历和整个public profile</li>
</ul>
<p>完成了什么?</p>
<ul>
<li>通常demo之后大家都会比较松散,想要多休息和整理</li>
<li>下午weekly meeting的时候组员们分享了过去一周的感想和心得</li>
</ul>
<p><strong>Reflective</strong></p>
<p>今天的高峰是什么?</p>
<ul>
<li>Xdite分享技术行业人才求职的public profile时候,深刻了解到如何去展示自己的学习成果</li>
</ul>
<p>今天的低点是什么?</p>
<ul>
<li>demo之后效率不高,每次demo后应该立刻开weekly meeting,一天的工作一定要有momentum,否则就会懒散下来浪费很多没必要浪费的时间</li>
</ul>
<p><strong>Interpretive</strong></p>
<p>我们今天学到了什么?</p>
<ul>
<li>程序员public profile应该如何建立</li>
</ul>
<p>今天一个重要的领悟是什么?</p>
<ul>
<li>大家都发现当项目衍生到接近上线时,任何功能上的改动都需要格外小心,一个字段会改掉所有现有数据的呈现、一个新model的关系会将MVC变得更加复杂,所以必须一开始就将MVC全部规划好在开始写,否则会变得非常乱</li>
</ul>
<p><strong>Decisional</strong></p>
<p>我们会如何用一句话形容今天的工作<br>有哪些工作需要明天继续努力?</p>
<ul>
<li>周末会花时间写整个课程下来的学习心得,也是我一直以来自己就很想做但一直懒没有做的事情。非常庆幸是课程的一部分。</li>
</ul>
]]></content>
<summary type="html">
<p><strong>Objective</strong></p>
<p>关于今天的课程, 你记得什么?</p>
<ul>
<li>上午进行了group project的最后一次demo</li>
<li>下午Xdite分享了有关技术人才求职的技巧与心得,以及如何包装自己的简历和
</summary>
<category term="编程学习" scheme="http://yoursite.com/categories/%E7%BC%96%E7%A8%8B%E5%AD%A6%E4%B9%A0/"/>
<category term="全栈营52天" scheme="http://yoursite.com/tags/%E5%85%A8%E6%A0%88%E8%90%A552%E5%A4%A9/"/>
</entry>
<entry>
<title>Day04 Week07 - 完成第三次demo的产品</title>
<link href="http://yoursite.com/2016/12/02/2016-12-02-day04-week07-third-demo/"/>
<id>http://yoursite.com/2016/12/02/2016-12-02-day04-week07-third-demo/</id>
<published>2016-12-01T22:54:00.000Z</published>
<updated>2016-12-20T11:20:11.000Z</updated>
<content type="html"><![CDATA[<p><strong>Objective</strong></p>
<p>完成了什么?</p>
<ul>
<li>今天的主要任务是完善明天的demo版产品</li>
<li>团队将redmine上的任务继续细分,然后根据redmine各自完成任务</li>
</ul>
<p><strong>Reflective</strong></p>
<p>今天的高峰是什么?</p>
<ul>
<li>凌晨2点突然脑子一通就把小头像功能几行代码敲出来了:<br><img src="http://ww3.sinaimg.cn/large/7853084cjw1facghttlsrj20f60pugnx.jpg" alt=""></li>
</ul>
<p>今天的低点是什么?</p>
<ul>
<li>上传Heroku的版本在上线后还是偶尔会碰到bug,比如一个order生成后它的post还会在后台可见,如果一不小心删除了就会报错</li>
<li>添加新字段会影响之前的数据,而Heroku的console又比较慢,所以最好是有一个很好的seed文档可以把所有东西做好,另外在添加字段的时候一定要设置default数值防止报错</li>
</ul>
<p><strong>Interpretive</strong></p>
<p>我们今天学到了什么?</p>
<ul>
<li>其实有些功能需要多做一些思考,而不是一上来就做。有些时候想清楚了就可以很快做出来</li>
<li>demo之前需要填写大量的seed数据,其实是需要思考的,不同账号的不同用户发起不同邀约,很耗时间,最好都提前备好在Excel里面</li>
</ul>
<p>今天一个重要的领悟是什么?</p>
<ul>
<li>在上线一个版本之前,大家都会很急着想上线,不愿意花很多时间测试功能(因为已经开发很久了)。但在上线Heroku之前其实非常需要详细的测试,因为上线之后再看到bug修复就不能立刻看到结果,还需要线下修复再重新部署,效率比较低</li>
</ul>
<p><strong>Decisional</strong></p>
<p>有哪些工作需要明天继续努力?</p>
<ul>
<li>明天demo,产品比较成型了,应该会有不错的展示</li>
</ul>
]]></content>
<summary type="html">
<p><strong>Objective</strong></p>
<p>完成了什么?</p>
<ul>
<li>今天的主要任务是完善明天的demo版产品</li>
<li>团队将redmine上的任务继续细分,然后根据redmine各自完成任务</li>
</ul>
<p><s
</summary>
<category term="编程学习" scheme="http://yoursite.com/categories/%E7%BC%96%E7%A8%8B%E5%AD%A6%E4%B9%A0/"/>
<category term="全栈营52天" scheme="http://yoursite.com/tags/%E5%85%A8%E6%A0%88%E8%90%A552%E5%A4%A9/"/>
</entry>
<entry>
<title>【功能】如何将devise的flash提示设置为中文(或其他语言)</title>
<link href="http://yoursite.com/2016/12/01/2016-12-01-function-flash-tips-how-to-devise-is-set-to-chinese/"/>
<id>http://yoursite.com/2016/12/01/2016-12-01-function-flash-tips-how-to-devise-is-set-to-chinese/</id>
<published>2016-11-30T21:46:00.000Z</published>
<updated>2016-12-20T11:20:07.000Z</updated>
<content type="html"><![CDATA[<ol>
<li><p>参考这里:<a href="https://github.com/plataformatec/devise/wiki/i18n" target="_blank" rel="external">https://github.com/plataformatec/devise/wiki/i18n</a><br>里面有各种个语言的devise提示讯息,根据自己devise版本下载一个中文的:<br><img src="http://ww3.sinaimg.cn/large/7853084cgw1fab8voj9khj20jn0b4wgv.jpg" alt=""></p>
</li>
<li><p>将下载的.yml文件存在config/locale文件夹里面<br><img src="http://ww2.sinaimg.cn/large/7853084cgw1fab90wqtzej207a05b3ym.jpg" alt=""></p>
</li>
<li><p>在config/application.rb当中加入一行代码:</p>
<figure class="highlight ruby"><figcaption><span>config.rb</span></figcaption><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"><span class="class"><span class="keyword">module</span> 【项目名称】</span></div><div class="line"> <span class="class"><span class="keyword">class</span> <span class="title">Application</span> < Rails::Application</span></div><div class="line"> config.i18n.default_locale = <span class="symbol">:<span class="string">'【文件名devise后面的部分】'</span></span></div><div class="line"> <span class="keyword">end</span></div><div class="line"><span class="keyword">end</span></div></pre></td></tr></table></figure>
</li>
</ol>
<p><img src="http://ww2.sinaimg.cn/large/7853084cjw1fab9259vobj20ae02wjrl.jpg" alt=""><br>记住别加到外面去了,会报错</p>
<ol>
<li>重启服务器</li>
</ol>
<p>voila:</p>
<p><img src="http://ww3.sinaimg.cn/large/7853084cjw1fab8yygvuuj20fy0b5abk.jpg" alt=""></p>
<ul>
<li>其他:</li>
</ul>
<p>这时候填写表单时候,有日期选择的地方会报错<code>undefined method</code>map’ for “translation missing”`,这是因为日期没有重新翻译,所以需要在config/locales下面创建一个新文件”zh-CN.yml”(或者下载的其他翻译文件的语言名)里面加上如下代码:<br><figure class="highlight ruby"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div></pre></td><td class="code"><pre><div class="line">zh-<span class="symbol">CN:</span></div><div class="line"> <span class="symbol">date:</span></div><div class="line"> <span class="symbol">order:</span></div><div class="line"> - <span class="string">"year"</span></div><div class="line"> - <span class="string">"month"</span></div><div class="line"> - <span class="string">"day"</span></div></pre></td></tr></table></figure></p>
<p><img src="http://ww4.sinaimg.cn/large/7853084cjw1fab9xa1ivoj20dc07c0tg.jpg" alt=""></p>
]]></content>
<summary type="html">
<ol>
<li><p>参考这里:<a href="https://github.com/plataformatec/devise/wiki/i18n" target="_blank" rel="external">https://github.com/plataformatec
</summary>
<category term="编程学习" scheme="http://yoursite.com/categories/%E7%BC%96%E7%A8%8B%E5%AD%A6%E4%B9%A0/"/>
<category term="全栈营52天" scheme="http://yoursite.com/tags/%E5%85%A8%E6%A0%88%E8%90%A552%E5%A4%A9/"/>
</entry>
<entry>
<title>Day03 Week07 - mobile演示版.ready? == false</title>
<link href="http://yoursite.com/2016/12/01/2016-12-01-day03-week07-mobile-demo-version-ready-false/"/>
<id>http://yoursite.com/2016/12/01/2016-12-01-day03-week07-mobile-demo-version-ready-false/</id>
<published>2016-11-30T21:39:00.000Z</published>
<updated>2016-12-20T11:20:03.000Z</updated>
<content type="html"><![CDATA[<p><strong>Objective</strong></p>
<p>今天课程学到了什么?</p>
<ul>
<li>Xdite就提速和SEO进行了教程和分享,非常受用</li>
</ul>
<p>完成了什么?</p>
<ul>
<li>进一步完善Eat2gether网站功能,修改了一些页面</li>
<li>感谢红红昨天帮我们做了详细的测试,提供了宝贵建议,我们开会讨论列出了20条左右新任务</li>
<li>有机会到清华苏市民学院做创业分享,展示了一下产品</li>
</ul>
<p><strong>Reflective</strong></p>
<p>今天的高峰是什么?</p>
<ul>
<li>做出了一些mobile上好用的功能,比如隐藏无法展开的notifications等</li>
<li>在清华分享创业(失败)经验</li>
</ul>
<p>今天的低点是什么?</p>
<ul>
<li>本来以为版本已经mobile-friendly,但发现很多内部页面并不能顺利适配手机,例如account下面的页面</li>
<li>红杉资本的合伙人是负责消费品行业的,对社交网络没有看过,所以并没有什么机会交流</li>
</ul>
<p><strong>Interpretive</strong></p>
<p>我们今天学到了什么?</p>
<ul>
<li>更多mobile技能,因为空间较小,所以从一开始就使用Bootstrap Grid是最高效的方法</li>
<li>网站产品很难让人wow,手机网页会更容易让人感觉眼前一亮,可能是因为手机页面较小所以错觉内容丰富,或者潜意识里觉得移动开发比网页开发更难</li>
<li>Xdite的分享内容,以前都只有大概听过,也不知道其中的细节,今天算是比较详细了解了入门。尽管离我们项目距离还有点远(真正上线了可能才需要担心速度和SEO),但这些工具都是很好的备用,以后有需要时不会一头雾水</li>
</ul>
<p>今天一个重要的领悟是什么?</p>
<ul>
<li>用户使用产品时碰到的问题和开发者想象中永远存在一定差异,所以今早去的用户反馈太重要</li>
<li>真正会在乎产品的是精准有需求的用户,而不是想听你创业故事的人</li>
</ul>
<p><strong>Decisional</strong></p>
<p>有哪些工作需要明天继续努力?</p>
<ul>
<li>明天会继续完善产品,将一些bugs修改,优化流程</li>
</ul>
]]></content>
<summary type="html">
<p><strong>Objective</strong></p>
<p>今天课程学到了什么?</p>
<ul>
<li>Xdite就提速和SEO进行了教程和分享,非常受用</li>
</ul>
<p>完成了什么?</p>
<ul>
<li>进一步完善Eat2gether网站功能
</summary>
<category term="编程学习" scheme="http://yoursite.com/categories/%E7%BC%96%E7%A8%8B%E5%AD%A6%E4%B9%A0/"/>
<category term="全栈营52天" scheme="http://yoursite.com/tags/%E5%85%A8%E6%A0%88%E8%90%A552%E5%A4%A9/"/>
</entry>
</feed>