-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathatom.xml
960 lines (771 loc) · 52.5 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
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title><![CDATA[Lester Zhao's Blog]]></title>
<link href="http://lester.izstudy.com/atom.xml" rel="self"/>
<link href="http://lester.izstudy.com/"/>
<updated>2014-02-13T12:13:06+08:00</updated>
<id>http://lester.izstudy.com/</id>
<author>
<name><![CDATA[Lester Zhao]]></name>
</author>
<generator uri="http://octopress.org/">Octopress</generator>
<entry>
<title type="html"><![CDATA[很久之前给 Sublime Text 写的一个 Ruby Formater 插件]]></title>
<link href="http://lester.izstudy.com/blog/2014/02/13/a-ruby-formater-for-sublime-text/"/>
<updated>2014-02-13T11:53:00+08:00</updated>
<id>http://lester.izstudy.com/blog/2014/02/13/a-ruby-formater-for-sublime-text</id>
<content type="html"><![CDATA[<p>一年前业曾经使用过一段 Sublime Text 这个编辑器来开发。 这个编辑器整体的使用体验还是相当不错的。 虽然我现在是用 Textmate 2 开发, 但是我转到 TM 不是因为 Sublime Text 不好, 而是我个人更喜欢 TM 2.</p>
<p>当时用 Sublime 的时候感觉格式化 ruby 代码没有太好的解决方案, 主要有 BeautifyRuby 这个插件是用 Ruby 写的, 要想运行他首先要配置要ruby环境, 在 Mac 下默认有 ruby,linux 平台下可以用apt-get,yum等直接安装ruby 比较容。 但是再Windows平台下 确需要下载安装使用不是很方便。 所以我用 Python 写了这个格式化的插件。 让windows平台使用更容易,而且 Sublime 原生支持 Python。 这个插件最大的好处就是开包即用, 运行效率也很高。</p>
<p>本来是写给自己玩的, 突然有一天在网上逛 发现了下面这个连接:</p>
<p><a href="https://sublime.wbond.net/packages/RubyFormat">https://sublime.wbond.net/packages/RubyFormat</a></p>
<p>没想到这么个插件也有8k的下载量了, 有时间我也得更新优化一下了。</p>
<p>如果你是再 Windows 平台使用 Sublime Text 2 写 Ruby、Rails 代码, 你可以尝试使用 RubyFormat 这个插件。 希望能对大家有点帮助。</p>
<p>项目地址: <a href="https://github.com/zmbacker/RubyFormat">RubyFormat</a></p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[2013总结,2014计划]]></title>
<link href="http://lester.izstudy.com/blog/2014/01/14/new-year-and-new-wishes/"/>
<updated>2014-01-14T23:17:00+08:00</updated>
<id>http://lester.izstudy.com/blog/2014/01/14/new-year-and-new-wishes</id>
<content type="html"><![CDATA[<p>每年到年底和年初的时候, 网上的各种大拿都开始做过去一年的总结和新一年的计划。</p>
<p>我也跟风一把, 做做总结和计划, 一来可以总结总结经验教训, 二来为新的一年做几个目标,督促自己在新一年里面完成目标。</p>
<p>首先大概总结一下2013年。 2013年事业上是我是我人生的低谷。一句话总结就是,摸索前进的一年。</p>
<p>这一年,努力的联系了一些客户,但是始终进展不是很好。损失了不少收入。 换来了一点很少的经验。</p>
<p>好,总结就写到这。</p>
<p>这篇我主要是为了写新年的目标:</p>
<ul>
<li>增加阅读量, 要读几本好书。 从大学毕业之后,读书真的太少了, 屈指可数的几本。 2014我要读5本书。 为此我还专门买了个 Kindle Paperwhite,最近用起来感觉不错。 这个任务不完成,对不起我的 Kindle。</li>
<li>完成公司的一个系统,一个软件,一个合作三大任务。</li>
<li>让公司尽快走上正轨</li>
</ul>
<p>我的计划遵循着文字越少事越大越重要的原则!!!</p>
<p>我对新的一年公司充满希望。加油!迎接 2014 的挑战。</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[simple_form datetime 字段 显示的时间不正确]]></title>
<link href="http://lester.izstudy.com/blog/2014/01/11/simple-form-datetime-field-with-wrong-time-zone/"/>
<updated>2014-01-11T14:32:00+08:00</updated>
<id>http://lester.izstudy.com/blog/2014/01/11/simple-form-datetime-field-with-wrong-time-zone</id>
<content type="html"><![CDATA[<p>simple_form 能够简化我们 rails 中创建表单的工作。 他还提供了高级功能让我们自定义表单的所有内容。</p>
<h2>问题产生</h2>
<p>当我们使用 simple_form 建立时间字段的时候,例如:</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="o"><</span><span class="sx">%= simple_form_for(@user, html: { class: 'form-horizontal' }) do |f| %></span>
</span><span class='line'><span class="sx"> <%=</span> <span class="n">f</span><span class="o">.</span><span class="n">input</span> <span class="ss">:created_at</span> <span class="sx">%></span>
</span><span class='line'><span class="sx"> <div class="form-actions"></span>
</span><span class='line'> <span class="o"><%=</span> <span class="n">f</span><span class="o">.</span><span class="n">button</span> <span class="ss">:submit</span> <span class="sx">%></span>
</span><span class='line'><span class="sx"> </div></span>
</span><span class='line'><span class="o"><</span><span class="sx">% end </span><span class="o">%></span>
</span></code></pre></td></tr></table></div></figure>
<p>默认的情况下 created_at 再表单中的时间是没有问题的。</p>
<p>但是当我们不满足于默认时间字段的多个 select html控件来选择时间, 而使用 DateTime Picker 更友好的方式设置时间的时候,我们需要这样做:</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="o"><</span><span class="sx">%= simple_form_for(@user, html: { class: 'form-horizontal' }) do |f| %></span>
</span><span class='line'><span class="sx"> <%=</span> <span class="n">f</span><span class="o">.</span><span class="n">input</span> <span class="ss">:created_at</span><span class="p">,</span> <span class="ss">as</span><span class="p">:</span> <span class="ss">:string</span><span class="p">,</span> <span class="n">input_html</span><span class="p">:</span> <span class="p">{</span><span class="ss">class</span><span class="p">:</span> <span class="s1">'datetime'</span><span class="p">}</span><span class="sx">%></span>
</span><span class='line'><span class="sx"><% end %></span>
</span></code></pre></td></tr></table></div></figure>
<p>然后用 js 去生成时间日期选择。</p>
<p>这个时候会发现 created_at表单中的时间不是正确的。原因是Rails从数据库中读取时间字段后没有经过时区转换就被 simple_form 使用了</p>
<p>有关 <a href="http://lester.izstudy.com/blog/2014/01/11/simple-form-datetime-field-does-not-use-right-timezone/">Rails中如何正确使用时间</a> 请点击查看。</p>
<h2>解决方法</h2>
<h3>最简单的解决办法是:</h3>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="o"><</span><span class="sx">%= simple_form_for(@user, html: { class: 'form-horizontal' }) do |f| %></span>
</span><span class='line'><span class="sx"> <%=</span> <span class="n">f</span><span class="o">.</span><span class="n">input</span> <span class="ss">:created_at</span><span class="p">,</span> <span class="ss">as</span><span class="p">:</span> <span class="ss">:string</span><span class="p">,</span> <span class="n">input_html</span><span class="p">:</span> <span class="p">{</span> <span class="ss">class</span><span class="p">:</span> <span class="s1">'datetime'</span><span class="p">,</span> <span class="ss">value</span><span class="p">:</span> <span class="n">f</span><span class="o">.</span><span class="n">object</span><span class="o">.</span><span class="n">created_at</span> <span class="p">}</span><span class="sx">%></span>
</span><span class='line'><span class="sx"><% end %></span>
</span></code></pre></td></tr></table></div></figure>
<h3>更好的解决办法:</h3>
<p>如果程序中有很多这样的地方需要处理的话,每个去修改不是最明智的选择。 最好是利用 simple_form 重新定义 datetime 表单内容。</p>
<p>创建文件 app/inputs/date_time_input.rb</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="k">class</span> <span class="nc">DateTimeInput</span> <span class="o"><</span> <span class="ss">SimpleForm</span><span class="p">:</span><span class="ss">:Inputs</span><span class="o">::</span><span class="no">Base</span>
</span><span class='line'> <span class="k">def</span> <span class="nf">input</span><span class="p">()</span>
</span><span class='line'> <span class="vi">@builder</span><span class="o">.</span><span class="n">text_field</span><span class="p">(</span><span class="n">attribute_name</span><span class="p">,</span> <span class="n">input_html_options</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span> <span class="p">{</span> <span class="ss">class</span><span class="p">:</span> <span class="s1">'datetime'</span><span class="p">,</span> <span class="ss">value</span><span class="p">:</span> <span class="n">object</span><span class="o">.</span><span class="n">send</span><span class="p">(</span> <span class="n">attribute_name</span> <span class="p">)</span> <span class="p">}</span> <span class="p">))</span>
</span><span class='line'> <span class="k">end</span>
</span><span class='line'><span class="k">end</span>
</span></code></pre></td></tr></table></div></figure>
<p>重新启动程序, 所有Datetime类型的字段都会自动生成这种时间选择表单, 并且时间是正确的了。</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Rails 的时区正确使用方法]]></title>
<link href="http://lester.izstudy.com/blog/2014/01/11/simple-form-datetime-field-does-not-use-right-timezone/"/>
<updated>2014-01-11T13:39:00+08:00</updated>
<id>http://lester.izstudy.com/blog/2014/01/11/simple-form-datetime-field-does-not-use-right-timezone</id>
<content type="html"><![CDATA[<p>如果你使用 Rails 开发应用,你一定遇到过时间显示不正确的问题,也就是时区问题。 下面我简单说明一下如何在 Rails 中正确使用时间、时区问题。</p>
<h2>原理简介</h2>
<p>Rails 已经为我们考虑到了时间问题。Rails 框架中存在两套时区的配置:</p>
<h3>第一套是应用程序的时区</h3>
<p> 在 application.rb 文件中有一个时区的配置</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'> <span class="n">config</span><span class="o">.</span><span class="n">time_zone</span> <span class="o">=</span> <span class="s1">'Beijing'</span>
</span><span class='line'>
</span></code></pre></td></tr></table></div></figure>
<p> 这个配置文件是告诉 应用程序里面使用的时区是北京东八区(针对中国的应用就这样配置好了)。</p>
<h3>第二套是数据库的存储的时区</h3>
<p> 同样在 application.rb 文件中</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'> <span class="n">config</span><span class="o">.</span><span class="n">active_record</span><span class="o">.</span><span class="n">default_timezone</span> <span class="o">=</span> <span class="ss">:local</span>
</span><span class='line'>
</span></code></pre></td></tr></table></div></figure>
<p> 代表数据库中时区也用第一套, 一般情况下我们可以不做这个设置(即不添加这行到 application.rb 中)。
如果我们的应用是考虑到国际化的话也不应该指定这个配置。</p>
<p>这两套时区之间Rails为我们做了自动转换。</p>
<h4>读取</h4>
<p>rails 在将时间类型的数据存入数据库的时候会自动把时间转换成 UTC 时间, 表现的现象是: 你在表单里面填写的时间要比在数据库中直接看到的时间多8个小时。</p>
<h4>存入</h4>
<p>当我们的程序从数据库读取出时间字段的时候 Rails也会自动的将时区转换为应用程序的时区。</p>
<p>这个逻辑理解了之后,我们可以很容易控制时间的比对等问题了。</p>
<h2>程序中时间使用的注意</h2>
<p>再程序中正确的使用时间方法是:</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'> <span class="c1"># 当前时间:</span>
</span><span class='line'> <span class="no">Time</span><span class="o">.</span><span class="n">current</span>
</span><span class='line'> <span class="c1"># 而</span>
</span><span class='line'> <span class="no">Time</span><span class="o">.</span><span class="n">now</span>
</span><span class='line'> <span class="c1"># 是使用的UTC时区</span>
</span></code></pre></td></tr></table></div></figure>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'> <span class="c1"># 创建带有当前时区的时间对象:</span>
</span><span class='line'> <span class="no">Time</span><span class="o">.</span><span class="n">local</span><span class="p">(</span><span class="mi">2014</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">11</span><span class="p">,</span><span class="mi">08</span><span class="p">,</span><span class="mi">30</span><span class="p">,</span><span class="mi">20</span><span class="p">)</span>
</span><span class='line'> <span class="c1"># 而</span>
</span><span class='line'> <span class="no">Time</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="mi">2014</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">11</span><span class="p">,</span><span class="mi">08</span><span class="p">,</span><span class="mi">30</span><span class="p">,</span><span class="mi">20</span><span class="p">)</span>
</span><span class='line'> <span class="c1"># 是没有时区的</span>
</span></code></pre></td></tr></table></div></figure>
<p>如何强制的把程序中 Time.current 的时区从第一套转换为第二套呢? 方法也很简单:</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'> <span class="no">Time</span><span class="o">.</span><span class="n">current</span><span class="o">.</span><span class="n">to_s</span><span class="p">(</span><span class="ss">:db</span><span class="p">)</span>
</span></code></pre></td></tr></table></div></figure>
<p>当你想直接把时间带入sql语句比对时间的时候一定不要忘了做这个转换,否则您的时间比对就不正确了。</p>
<p>时区时间问题也就差不多了。了解了就不难。</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Deploy Rails 4.x use Capistrano 3.x]]></title>
<link href="http://lester.izstudy.com/blog/2013/11/02/deploy-rails-4-dot-x-use-capistrano-3-dot-x/"/>
<updated>2013-11-02T01:12:00+08:00</updated>
<id>http://lester.izstudy.com/blog/2013/11/02/deploy-rails-4-dot-x-use-capistrano-3-dot-x</id>
<content type="html"><![CDATA[<p>部署使用的账号 要把ruby的PATH 添加到 ~/.bashrc 目录</p>
<p><code>~/.bashrc</code></p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">set</span> <span class="ss">:bundle_flags</span><span class="p">,</span> <span class="s1">'--quiet'</span>
</span></code></pre></td></tr></table></div></figure>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
</pre></td><td class='code'><pre><code class='text'><span class='line'>DEBUG [ec59288d] The --deployment flag requires a Gemfile.lock. Please make sure you have checked
</span><span class='line'>DEBUG [ec59288d] your Gemfile.lock into version control before deploying.
</span><span class='line'>
</span><span class='line'>need Gemfile.lock
</span><span class='line'>capistrano your Gemfile.lock into version control before deploying.
</span><span class='line'>
</span><span class='line'>
</span><span class='line'> INFO [76a73a08] Running /usr/bin/env rake assets:precompile on izstudy.com
</span><span class='line'>DEBUG [76a73a08] Command: cd /var/www/izmeeting/releases/20131102010425 && ( RAILS_ENV= /usr/bin/env rake assets:precompile )
</span><span class='line'>DEBUG [76a73a08] rake aborted!
</span><span class='line'>DEBUG [76a73a08] database configuration does not specify adapter
</span></code></pre></td></tr></table></div></figure>
<p><code>bundle config --delete bin # Turn off Bundler's stub generator</code></p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[在 Rails 4 中使用 Compass 和 Bootstrap]]></title>
<link href="http://lester.izstudy.com/blog/2013/10/23/using-compass-and-bootstrap-in-rails-4/"/>
<updated>2013-10-23T20:17:00+08:00</updated>
<id>http://lester.izstudy.com/blog/2013/10/23/using-compass-and-bootstrap-in-rails-4</id>
<content type="html"><![CDATA[<blockquote><p>这篇文章内容已经过期 compass_rails 的新版本已经可以支持 Rails 4.<br/>目前用最新的 compass_rails 正常方法使用已经没有问题。</p></blockquote>
<p><a href="http://compass-style.org">Compass</a></p>
<p><a href="http://getbootstrap.com">Bootstrap</a></p>
<p>错误</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="no">File</span> <span class="n">to</span> <span class="n">import</span> <span class="ow">not</span> <span class="n">found</span> <span class="ow">or</span> <span class="ss">unreadable</span><span class="p">:</span> <span class="n">susy</span> <span class="p">(</span><span class="n">again!</span><span class="p">)</span>
</span><span class='line'><span class="no">No</span> <span class="n">application</span> <span class="n">integration</span> <span class="n">exists</span> <span class="k">for</span> <span class="n">rails</span>
</span></code></pre></td></tr></table></div></figure>
<p>首先</p>
<figure class='code'><figcaption><span>Gemfile </span></figcaption>
<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">gem</span> <span class="s1">'bootstrap-sass'</span>
</span><span class='line'>
</span><span class='line'><span class="n">group</span> <span class="ss">:assets</span> <span class="k">do</span>
</span><span class='line'> <span class="n">gem</span> <span class="s1">'compass-rails'</span>
</span><span class='line'> <span class="n">gem</span> <span class="s2">"susy"</span>
</span><span class='line'><span class="k">end</span>
</span><span class='line'>
</span><span class='line'><span class="n">cd</span> <span class="sr">/to/</span><span class="n">project</span><span class="o">/</span><span class="n">path</span><span class="o">/</span>
</span><span class='line'><span class="n">bundle</span>
</span><span class='line'><span class="n">bundle</span> <span class="nb">exec</span> <span class="n">compass</span> <span class="n">init</span> <span class="n">rails</span> <span class="o">.</span><span class="n">/</span>
</span><span class='line'><span class="n">bundle</span> <span class="nb">exec</span> <span class="n">compass</span> <span class="n">install</span> <span class="n">susy</span>
</span></code></pre></td></tr></table></div></figure>
<p>之后修改</p>
<figure class='code'><figcaption><span>Gemfile </span></figcaption>
<div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">gem</span> <span class="s1">'compass'</span>
</span><span class='line'><span class="n">gem</span> <span class="s1">'compass-rails'</span>
</span><span class='line'><span class="n">gem</span> <span class="s1">'compass-rails'</span><span class="p">,</span> <span class="ss">github</span><span class="p">:</span> <span class="s2">"Compass/compass-rails"</span><span class="p">,</span> <span class="ss">branch</span><span class="p">:</span> <span class="s2">"rails4-hack"</span>
</span><span class='line'><span class="n">gem</span> <span class="s2">"susy"</span>
</span><span class='line'><span class="n">gem</span> <span class="s1">'bootstrap-sass'</span>
</span><span class='line'>
</span><span class='line'><span class="n">group</span> <span class="ss">:assets</span> <span class="k">do</span>
</span><span class='line'><span class="k">end</span>
</span></code></pre></td></tr></table></div></figure>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[TextMate 2 下 Ctag 和 Git Bundle 同时工作]]></title>
<link href="http://lester.izstudy.com/blog/2013/10/21/ctag-and-git-bundles-of-textmate-2-both-work-fine-at-the-same-time/"/>
<updated>2013-10-21T00:20:00+08:00</updated>
<id>http://lester.izstudy.com/blog/2013/10/21/ctag-and-git-bundles-of-textmate-2-both-work-fine-at-the-same-time</id>
<content type="html"><![CDATA[<p>最近再使用 TextMate 2 的 Bundle:Ctag 和 Git 的时候经过了一番周折才勉强可以让这两个 Bundle 同时工作。写出来帮助遇到同样问题的朋友。避免浪费时间。</p>
<p>问题现象:</p>
<p>使用 TM2、 ruby 1.9.3 或 ruby 2.0.1</p>
<p>Git Bundle 可以正常工作。</p>
<p>安装 TM Ctag Bundle 之后 ^ + Command + P 报异常大概如下:</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'> <span class="n">ui</span><span class="o">.</span><span class="n">rb</span><span class="p">:</span><span class="mi">308</span><span class="p">:</span> <span class="k">in</span> <span class="sb">`to_plist': An object in the argument tree could not be converted (ArgumentError)</span>
</span><span class='line'><span class="sb"> from ~/Library/Application Support/TextMate/Managed/Bundles/Bundle Support.tmbundle/Support/shared/lib/ui.rb:308:in `</span><span class="n">block</span> <span class="k">in</span> <span class="kp">initialize</span><span class="s1">'</span>
</span><span class='line'><span class="s1"> from ~/Library/Application Support/TextMate/Managed/Bundles/Bundle Support.tmbundle/Support/shared/lib/ui.rb:307:in `popen'</span>
</span><span class='line'> <span class="n">from</span> <span class="err">~</span><span class="o">/</span><span class="no">Library</span><span class="o">/</span><span class="no">Application</span> <span class="no">Support</span><span class="o">/</span><span class="no">TextMate</span><span class="o">/</span><span class="no">Managed</span><span class="o">/</span><span class="no">Bundles</span><span class="o">/</span><span class="no">Bundle</span> <span class="no">Support</span><span class="o">.</span><span class="n">tmbundle</span><span class="o">/</span><span class="no">Support</span><span class="o">/</span><span class="n">shared</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">ui</span><span class="o">.</span><span class="n">rb</span><span class="p">:</span><span class="mi">307</span><span class="ss">:in</span> <span class="sb">`initialize'</span>
</span><span class='line'><span class="sb"> from ~/Library/Application Support/TextMate/Managed/Bundles/Bundle Support.tmbundle/Support/shared/lib/ui.rb:20:in `</span><span class="kp">new</span><span class="s1">'</span>
</span><span class='line'><span class="s1"> from ~/Library/Application Support/TextMate/Managed/Bundles/Bundle Support.tmbundle/Support/shared/lib/ui.rb:20:in `dialog'</span>
</span><span class='line'> <span class="n">from</span> <span class="err">~</span><span class="o">/</span><span class="no">Library</span><span class="o">/</span><span class="no">Application</span> <span class="no">Support</span><span class="o">/</span><span class="no">TextMate</span><span class="o">/</span><span class="no">Managed</span><span class="o">/</span><span class="no">Bundles</span><span class="o">/</span><span class="no">Bundle</span> <span class="no">Support</span><span class="o">.</span><span class="n">tmbundle</span><span class="o">/</span><span class="no">Support</span><span class="o">/</span><span class="n">shared</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">progress</span><span class="o">.</span><span class="n">rb</span><span class="p">:</span><span class="mi">42</span><span class="ss">:in</span> <span class="sb">`call_with_progress'</span>
</span><span class='line'><span class="sb"> from ~/_test_tm.rb:12:in `</span><span class="o"><</span><span class="n">main</span><span class="o">></span><span class="err">'</span>
</span></code></pre></td></tr></table></div></figure>
<p>其中关键是: ui.rb:308: in `to_plist’: An object in the argument tree could not be converted
如果你的异常是这个那么可以肯定的时候和我的情况一直。下面是我的一个临时解决方案。</p>
<!--more-->
<p>这个 bug 的解决有争议,TextMate 社区认为是 Ruby 的 bug,但网络上另一个解决方案认为是 TextMate 的 bug。</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'><span class="nb">cd</span> ~/Library/Application Support/TextMate/Managed/Bundles/Bundle Support.tmbundle/Support/shared/lib/osx
</span><span class='line'>git clone git://github.com/kballard/osx-plist.git
</span><span class='line'><span class="nb">cd </span>osx-plist/ext/plist
</span><span class='line'>ruby extconf.rb <span class="o">&&</span> make
</span><span class='line'><span class="nb">cd</span> ../../../
</span><span class='line'>mv plist.bundle plist.bundle.old
</span><span class='line'>cp osx-plist/ext/plist/plist.bundle ./plist.bundle
</span></code></pre></td></tr></table></div></figure>
<p>这样Ctag是可以正常运行的,但是会导致 Git Bundle 报错:</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>dyld: lazy symbol binding failed: Symbol not found: _rb_intern2 Referenced from: ~/Library/Application Support/TextMate/Managed/Bundles/Bundle Support.tmbundle/Support/shared/lib/osx/plist.bundle Expected in: flat namespace
</span><span class='line'>dyld: Symbol not found: _rb_intern2 Referenced from: ~/Library/Application Support/TextMate/Managed/Bundles/Bundle Support.tmbundle/Support/shared/lib/osx/plist.bundle Expected in: flat namespace
</span></code></pre></td></tr></table></div></figure>
<p>我的一个临时解决方案是:</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'><span class="nb">cd</span> ~/Library/Application Support/TextMate/Managed/Bundles/Bundle Support.tmbundle/Support/shared/lib/osx
</span><span class='line'>git clone git://github.com/kballard/osx-plist.git
</span><span class='line'><span class="nb">cd </span>osx-plist/ext/plist
</span></code></pre></td></tr></table></div></figure>
<p>打开 osx-plist/ext/plist 下的 plist.c 找到:</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
</pre></td><td class='code'><pre><code class='c'><span class='line'><span class="cm">/*</span>
</span><span class='line'><span class="cm"> * Document-class: OSX::PropertyListError</span>
</span><span class='line'><span class="cm"> */</span>
</span><span class='line'><span class="kt">void</span> <span class="nf">Init_plist</span><span class="p">()</span> <span class="p">{</span>
</span><span class='line'> <span class="n">mOSX</span> <span class="o">=</span> <span class="n">rb_define_module</span><span class="p">(</span><span class="s">"OSX"</span><span class="p">);</span>
</span><span class='line'> <span class="n">mPlist</span> <span class="o">=</span> <span class="n">rb_define_module_under</span><span class="p">(</span><span class="n">mOSX</span><span class="p">,</span> <span class="s">"PropertyList"</span><span class="p">);</span>
</span></code></pre></td></tr></table></div></figure>
<p>将 <code>void Init_plist() {</code> 改为 <code>void Init_plist2() {</code> 后执行:</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>ruby extconf.rb <span class="o">&&</span> make
</span><span class='line'><span class="nb">cd</span> ../../../
</span><span class='line'>mv plist.bundle.old plist.bundle
</span><span class='line'>cp osx-plist/ext/plist/plist.bundle ./plist2.bundle
</span></code></pre></td></tr></table></div></figure>
<p>找到 TM Ctag 的安装目录,我的是: ~/Library/Application Support/Avian/Pristine Copy/Bundles/tm-ctags.tmbundle/Support/bin
修改 tmctags.rb 和 update_ctags.rb
分别在 <code>require ENV['TM_SUPPORT_PATH'] + '/lib/ui.rb'</code> 前增加:</p>
<p><code>require ENV['TM_SUPPORT_PATH'] + '/lib/osx/plist2'</code></p>
<p>这样就可以同时工作了 但是还是会有一个警告消息。</p>
<p>完美的解决方案是修改 原版的 plist.bundle 或者 完善 git://github.com/kballard/osx-plist.git</p>
<p>简单研究了一下 TM2的源码 目前我还不会修改 plist.bundle 所以只能使用这个临时不完美的解决方案。</p>
<p>这个方案的原理是:
先载入新版本的 plist2 ,之后原版的plist就无法加载。但是会有一个警告消息。</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Google并不完美,Baidu也并非很烂(日语翻译服务对比)]]></title>
<link href="http://lester.izstudy.com/blog/2012/09/10/translat-in-google-and-baidu/"/>
<updated>2012-09-10T21:14:00+08:00</updated>
<id>http://lester.izstudy.com/blog/2012/09/10/translat-in-google-and-baidu</id>
<content type="html"><![CDATA[<p>不管你是一个谷歌粉也好,或者是一个只用百度而忽视谷歌存在的中国网民也好,在每个人的心里面对各自喜欢的互联网应用都有一定的偏好。 而人们往往会因为喜欢而忽视一些客观存在的问题。比如:对于谷歌粉来说,往往不容许别人说谷歌的半点不是,他会有一百个理由来解释她的问题。 我就是一个铁杆的谷歌粉,我偏爱谷歌的各种应用,我一直坚定不移的认为谷歌的旗下的各种产品均是近乎完美的。所以不管什么类型的应用只要谷歌有我就会用谷歌的,那么翻译工具这个我也是一直用谷歌的。 由于最近接触日语相关内容比较多,所以经常翻译一些日语内容。后来听说百度翻译也低调上线了,所以就尝试了一下。</p>
<p>那么究竟谁家的翻译服务更好呢?并不着急下结论,请先看下面的例子吧:</p>
<p><strong>案例一:</strong></p>
<table>
<thead>
<tr>
<th align="left"> 翻译工具 </th>
<th align="right"> 文字内容 </th>
<th align="right">得分</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">日语原文</td>
<td align="right">ちょっと日本語理解できます</td>
<td></td>
</tr>
<tr>
<td align="left">谷歌翻译</td>
<td align="right">你能理解一个小日本</td>
<td align="right"> 2</td>
</tr>
<tr>
<td align="left">百度翻译</td>
<td align="right">点日语可以理解。</td>
<td align="right"> 7</td>
</tr>
<tr>
<td align="left">正确译文</td>
<td align="right">可以理解一些日语。</td>
<td></td>
</tr>
</tbody>
</table>
<!--more-->
<p><strong>案例二:</strong></p>
<table>
<thead>
<tr>
<th align="left"> 翻译工具 </th>
<th align="right"> 文字内容 </th>
<th align="right">得分</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">日语原文</td>
<td align="right">こんな食べ方もあるんです。季節を味わう、さんま料理</td>
<td></td>
</tr>
<tr>
<td align="left">谷歌翻译</td>
<td align="right">有什么办法吃。享受的季节,刀鱼美食</td>
<td align="right">5</td>
</tr>
<tr>
<td align="left">百度翻译</td>
<td align="right">这样的吃法也有东西。季节品尝料理,秋刀鱼</td>
<td align="right">6</td>
</tr>
<tr>
<td align="left">正确译文</td>
<td align="right">也有这样的吃法。平常季节的味道 秋刀鱼料理</td>
<td></td>
</tr>
</tbody>
</table>
<p><strong>案例三:</strong></p>
<table>
<thead>
<tr>
<th align="left"> 翻译工具 </th>
<th align="right"> 文字内容 </th>
<th align="right">得分</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">日语原文</td>
<td align="right">沖縄県・尖閣諸島の国有化に伴い、政府は11日、外務省の杉山晋輔アジア大洋州局長を北京に派遣するなど、対立先鋭化を避け中国側の理解を得ることに躍起になっている。だが、中国外務省は「必要な措置をとる」と明言しており、公船を尖閣付近の海域に派遣し挑発するなどの対抗措置に出るとみられる。中国公船は日本の海上保安庁の船艇数(1000トン以上)に迫る勢いで、監視態勢には不安も残る。 「日中の外交当局で緊密な意思疎通を行ってきた」 藤村修官房長官は11日の記者会見で、尖閣国有化が日中関係に与える影響を抑えるよう両国で調整してきたと強調した。</td>
<td></td>
</tr>
<tr>
<td align="left">谷歌翻译</td>
<td align="right">11日,冲绳县的尖阁列岛,发送到北京亚太部主任,外交信介杉山国有化,政府正在全力以赴,只是为了得到中国方面的理解,避免冲突锐化。不过,外交部表示,中国将“采取必要措施,”他来作为对策,派出向尖阁公众船附近海域的挑衅。中国公务船接近的势头,日本海上保安厅的船只在(1000吨以上)的数量,仍然的姿态监视焦虑的。3月11日在新闻发布会上,我们一直强调“通信密切的外交当局的一天,”内阁官房长官小寒藤村进行了调整,以减少在这两个国家的影响国有化尖阁列岛给日本与中国的关系。</td>
<td align="right">4</td>
</tr>
<tr>
<td align="left">百度翻译</td>
<td align="right"> 冲绳县・钓鱼岛的国有化的发展,政府在11日,外务省的杉山晋輔亚洲大洋州局长北京派遣等,对立避开尖锐化的中国方面的理解,拼命。但是,中国外务省“必要的措施”,明确表示着,公船在尖阁诸岛附近海域派遣挑衅等对抗措施出来的和被看的。中国公船是日本的海上保安厅巡视船数(1000吨以上)迫近的气势,监视态势是不安也残る。“日中外交当局密切沟通进行了”,藤村修官房长官在11日的记者招待会上,钓鱼岛国有化中日关系的影响控制两国调整了强调了。</td>
<td align="right">6</td>
</tr>
<tr>
<td align="left">正确译文</td>
<td align="right"> 接近百度翻译 </td>
<td></td>
</tr>
</tbody>
</table>
<p><strong>案例四:</strong></p>
<table>
<thead>
<tr>
<th align="left"> 翻译工具 </th>
<th align="right"> 文字内容 </th>
<th align="right">得分</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">日语原文</td>
<td align="right">それではご質問がございましたら、ご連絡ください。</td>
<td></td>
</tr>
<tr>
<td align="left">谷歌翻译</td>
<td align="right">如果您有任何疑问,请与我们联系。</td>
<td align="right">9</td>
</tr>
<tr>
<td align="left">百度翻译</td>
<td align="right">那么您的问题,请再联系。</td>
<td align="right">5</td>
</tr>
<tr>
<td align="left">正确译文</td>
<td align="right">如果您有任何疑问,请与我们联系。</td>
<td></td>
</tr>
</tbody>
</table>
<p><strong>案例五:</strong></p>
<table>
<thead>
<tr>
<th align="left"> 翻译工具 </th>
<th align="right"> 文字内容 </th>
<th align="right">得分</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">日语原文</td>
<td align="right">実施時期について満足している。</td>
<td></td>
</tr>
<tr>
<td align="left">谷歌翻译</td>
<td align="right">关于实施的时间,我很高兴。</td>
<td align="right">9</td>
</tr>
<tr>
<td align="left">百度翻译</td>
<td align="right">实施时期表示满意的。</td>
<td align="right">5</td>
</tr>
<tr>
<td align="left">正确译文</td>
<td align="right">关于实施时间,我很满意.</td>
<td></td>
</tr>
</tbody>
</table>
<p><strong>案例六:</strong></p>
<table>
<thead>
<tr>
<th align="left"> 翻译工具 </th>
<th align="right"> 文字内容 </th>
<th align="right">得分</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">日语原文</td>
<td align="right">大連センタースタッフの皆様</td>
<td></td>
</tr>
<tr>
<td align="left">谷歌翻译</td>
<td align="right">中心的工作人员每个人都大连</td>
<td align="right">3</td>
</tr>
<tr>
<td align="left">百度翻译</td>
<td align="right">大连中心工作人员的大家</td>
<td align="right">6</td>
</tr>
<tr>
<td align="left">正确译文</td>
<td align="right">大连中心的所有工作人员(邮件开头写的)</td>
<td align="right"> </td>
</tr>
</tbody>
</table>
<p><strong>案例七:</strong></p>
<table>
<thead>
<tr>
<th align="left"> 翻译工具 </th>
<th align="right"> 文字内容 </th>
<th align="right">得分</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">日语原文</td>
<td align="right">NHCOオリジナル LINEスタンプ 大連センターへのプレゼントを開始!!</td>
<td></td>
</tr>
<tr>
<td align="left">谷歌翻译</td>
<td align="right">启动该中心原大连NHCO时间戳行的礼物!</td>
<td align="right">3</td>
</tr>
<tr>
<td align="left">百度翻译</td>
<td align="right">NHCO原创LINE邮票大连中心的礼物开始!</td>
<td align="right">4</td>
</tr>
<tr>
<td align="left">正确译文</td>
<td align="right">NHCO原创的LINE邮票大连中心的礼物开始!</td>
<td align="right"> </td>
</tr>
</tbody>
</table>
<p><strong>案例八:</strong></p>
<table>
<thead>
<tr>
<th align="left"> 翻译工具 </th>
<th align="right"> 文字内容 </th>
<th align="right">得分</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">日语原文</td>
<td align="right">簡単に言いますとBOではグロバル変数を使わないでください。</td>
<td></td>
</tr>
<tr>
<td align="left">谷歌翻译</td>
<td align="right">请不要使用在简单的变量BO Gurobaru的。</td>
<td align="right">5</td>
</tr>
<tr>
<td align="left">百度翻译</td>
<td align="right">简单地说BO上全球变量请不要使用。</td>
<td align="right">7</td>
</tr>
<tr>
<td align="left">正确译文</td>
<td align="right"></td>
<td align="right"> </td>
</tr>
</tbody>
</table>
<p><strong>案例九:</strong></p>
<table>
<thead>
<tr>
<th align="left"> 翻译工具 </th>
<th align="right"> 文字内容 </th>
<th align="right">得分</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">日语原文</td>
<td align="right">目標登録は必ず日本語でご記入お願いします。</td>
<td></td>
</tr>
<tr>
<td align="left">谷歌翻译</td>
<td align="right">我们的目标是在注册时填写请日本。</td>
<td align="right">5</td>
</tr>
<tr>
<td align="left">百度翻译</td>
<td align="right">目标登记是一定会用日语填写关照。</td>
<td align="right">7</td>
</tr>
<tr>
<td align="left">正确译文</td>
<td align="right">目标登记请用日语填写。</td>
<td align="right"> </td>
</tr>
</tbody>
</table>
<p>通过上面的对比,明眼人一看就知道谁的更好了。 谷歌中日翻译基本上属于入门级,很多翻译出来的内容会有问题。 百度相对于谷歌来说要好不少。 至少理解起来意思不会有什么偏差。</p>
<p>所以这次我还是要赞一下百度的, 百度确实用心做了这个翻译服务。</p>
<p>而谷歌或许是利用偏技术运算的方式进行的日语翻译,但我只能说很遗憾不太准确了。</p>
<p>但谷歌翻译的语音提示做的就很贴心, 也是就贴入一段日语,谷歌下面会给你列出音标,对于我学习就有很大帮助。</p>
<p>所以说谷歌也并非都做的完美, 百度也不至于很烂(百度搜索做的还真就挺烂)。</p>
<p>百度的关键单词更加准确 而谷歌的语句结构好一点</p>
<p>最后人生感悟: 看待事情要客观全面看待,辩证的看待,不要管中窥豹,以偏概全。</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[autossh+launchd 实现全自动 ssh -D 端口转发 socks5 代理]]></title>
<link href="http://lester.izstudy.com/blog/2012/06/29/autossh-launchd-ssh-sock5-proxy-auto-reconection/"/>
<updated>2012-06-29T21:55:00+08:00</updated>
<id>http://lester.izstudy.com/blog/2012/06/29/autossh-launchd-ssh-sock5-proxy-auto-reconection</id>
<content type="html"><![CDATA[<p>用ssh端口转发做为代理 fan qiang 很久了,一直都是手动运行脚本的,我的MBA基本上是不关机的,重来都是用完直接扣下屏幕。
但每次打开之后都需要重新运行一下ssh -D 脚本, 作为一个会写代码的人来说显得还是不够专业。所以我决定要充分发挥我的主观能动性, 让我的电脑更智能。 目前已经可以良好的运行了。</p>
<p>废话少说我直接进入主题。</p>
<p>我的系统是:Mac OS X Lion</p>
<p>首先要介绍几个名词:<br/>
<strong>ssh端口转发:</strong> 是一种利用ssh隧道链接建立的sock5代理。 <br/>
<strong>launchd:</strong> Mac OS X 系统下的用来管理整个系统的 services 和 processes 的工具。如果你需要一个程序开机自动运行,或者由于错误停止后自动重新运行,那么就可以用 launchd 来管理。 <br/>
<strong>autossh:</strong>是用来保持 ssh 一直处于链接状态的工具。可以在链接断开后自动重新链接。</p>
<!--more-->
<p>首先需要设置使用密钥链接 ssh 主机, 这样做的目的是链接主机的时候不用输入密码的环节。<br/>
其次你还需要 Homebrew 或者 MacPorts 用来安装 autossh。<br/>
我是用 Homebrew 安装的,打开终端。</p>
<p>执行如下命令:<br/>
<code>brew install autossh</code><br/>
稍等片刻很快就会完成安装。</p>
<p>终端下输入:<br/>
<code>autossh -M 8118 -nNT -D 8117 [email protected]</code><br/>
注意其中 8117是你最终的socks5端口,root是你链接ssh的账号,sshhost.com是你的ssh主机地址(也可以是ip地址)。将这些内容替换成你可以正常使用的信息。<br/>
-nNT这个几个参数最好保持,另外最好不要增加-f参数,如果增加了launchd就有可能不能进行正确管理。</p>
<p>执行上面命令之后我们要达到的效果是:没有返回结果,并且命令不结束,socks5可用(可以用 SwitchySharp for Chrome测试)。<br/>
这说明autossh ssh -D 已经没有问题。下面我们要做的就是用 launchd 来管理之。<br/>
按 Ctrl + c 退出刚才状态。</p>
<p>接下来要用你习惯的文本编辑器创建下面这个文件:<br/>
~/Library/LaunchAgents/ssh-d.plist
我是用 Sublime Text 2 创建的。</p>
<p>文件的内容如下:</p>
<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
<span class='line-number'>22</span>
<span class='line-number'>23</span>
<span class='line-number'>24</span>
<span class='line-number'>25</span>
<span class='line-number'>26</span>
</pre></td><td class='code'><pre><code class='xml'><span class='line'> <span class="cp"><?xml version="1.0" encoding="UTF-8"?></span>
</span><span class='line'> <span class="cp"><!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"></span>
</span><span class='line'> <span class="nt"><plist</span> <span class="na">version=</span><span class="s">"1.0"</span><span class="nt">></span>
</span><span class='line'> <span class="nt"><dict></span>
</span><span class='line'> <span class="nt"><key></span>Label<span class="nt"></key></span>
</span><span class='line'> <span class="nt"><string></span>localdomain.localhost.ssh-d<span class="nt"></string></span>
</span><span class='line'> <span class="nt"><key></span>ProgramArguments<span class="nt"></key></span>
</span><span class='line'> <span class="nt"><array></span>
</span><span class='line'> <span class="nt"><string></span>/usr/local/bin/autossh<span class="nt"></string></span>
</span><span class='line'> <span class="nt"><string></span>-M<span class="nt"></string></span>
</span><span class='line'> <span class="nt"><string></span>8118<span class="nt"></string></span>
</span><span class='line'> <span class="nt"><string></span>-nNT<span class="nt"></string></span>
</span><span class='line'> <span class="nt"><string></span>-D<span class="nt"></string></span>
</span><span class='line'> <span class="nt"><string></span>8117<span class="nt"></string></span>
</span><span class='line'> <span class="nt"><string></span>[email protected]<span class="nt"></string></span>
</span><span class='line'> <span class="nt"></array></span>
</span><span class='line'> <span class="nt"><key></span>KeepAlive<span class="nt"></key></span>
</span><span class='line'> <span class="nt"><true/></span>
</span><span class='line'> <span class="nt"><key></span>RunAtLoad<span class="nt"></key></span>
</span><span class='line'> <span class="nt"><true/></span>
</span><span class='line'> <span class="nt"><key></span>StandardOutPath<span class="nt"></key></span>
</span><span class='line'> <span class="nt"><string></span>/var/log/ssh-d-out.log<span class="nt"></string></span>
</span><span class='line'> <span class="nt"><key></span>StandardErrorPath<span class="nt"></key></span>
</span><span class='line'> <span class="nt"><string></span>/var/log/ssh-d-err.log<span class="nt"></string></span>
</span><span class='line'> <span class="nt"></dict></span>
</span><span class='line'> <span class="nt"></plist></span>
</span></code></pre></td></tr></table></div></figure>
<p>打开终端执行命令: <br/>
<code>launchctl load ~/Library/LaunchAgents/ssh-d.plist</code></p>
<p>然后检查 socks 代理是否可以使用。
如果不可以使用,打开 Mac 系统的控制台程序,查看日志有无相关错误。</p>
<p>到目前为止,以后我们就可以很轻松的使用代理了,而且不用操心代理是否链接的问题,系统会自动去帮你检查。</p>
<p>可以使用下面命令查看你的ssh进程情况:<br/>
<code>ps -auxww |grep 8117</code></p>
<p>下面命令是用来去掉launchd进行管理的:<br/>
<code>launchctl unload ~/Library/LaunchAgents/ssh-d.plist</code></p>
<p>参考文章:<br/>
<a href="http://dipplum.com/2010/09/12/launchd-plist-for-ssh-d/">自动连接ssh -D的launchd配置</a><br/>
<a href="http://blog.hebine.com/archives/1621.html">Mac下开机自动连接ssh -D</a></p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[test the first blog post with octopress]]></title>
<link href="http://lester.izstudy.com/blog/2012/03/05/test-the-first-blog-post-with-octopress/"/>
<updated>2012-03-05T00:11:00+08:00</updated>
<id>http://lester.izstudy.com/blog/2012/03/05/test-the-first-blog-post-with-octopress</id>
<content type="html"><![CDATA[<p>Hello World!
世界你好, 我又要重新开始写Blog了。</p>
]]></content>
</entry>
</feed>