<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>hlxwell (Michael He)</title>
    <link>https://ruby-china.org/hlxwell</link>
    <description>Mac App 上班族背单词神器, 求支持www.memoryforcer.com</description>
    <language>en-us</language>
    <item>
      <title>二维数组生成小陷阱</title>
      <description>&lt;p&gt;今天想生成一个二维数组，突然突发奇想想出了这个方法 &lt;code&gt;matrix = [[0] * 5] * 10&lt;/code&gt;，然后发生奇迹的事情了。&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[1] pry(main)&amp;gt; matrix = [[0] * 5] * 10
=&amp;gt; [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
[2] pry(main)&amp;gt; matrix[1][1] = 2
=&amp;gt; 2
[3] pry(main)&amp;gt; matrix
=&amp;gt; [[0, 2, 0, 0, 0], [0, 2, 0, 0, 0], [0, 2, 0, 0, 0], [0, 2, 0, 0, 0], [0, 2, 0, 0, 0], [0, 2, 0, 0, 0], [0, 2, 0, 0, 0], [0, 2, 0, 0, 0], [0, 2, 0, 0, 0], [0, 2, 0, 0, 0]]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你会发现每一行的数组其实都是在被复制的，你改动任何一行的数据，其他几行的数据就会一起被改动。&lt;/p&gt;

&lt;p&gt;查看 C 源码后发现都是 memcpy 在作祟&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ary_memcpy(ary2, 0, t, ptr);
while (t &amp;lt;= len/2) {
    ary_memcpy(ary2, t, t, RARRAY_CONST_PTR(ary2));
    t *= 2;
}
if (t &amp;lt; len) {
    ary_memcpy(ary2, t, len-t, RARRAY_CONST_PTR(ary2));
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;正确方法应该是 &lt;code&gt;matrix = Array.new(10) {Array.new(5, init_value)}&lt;/code&gt;&lt;/p&gt;</description>
      <author>hlxwell</author>
      <pubDate>Fri, 09 Feb 2018 16:00:38 +0800</pubDate>
      <link>https://ruby-china.org/topics/35019</link>
      <guid>https://ruby-china.org/topics/35019</guid>
    </item>
    <item>
      <title> 杭州办公室在哪个区最受到程序员欢迎？</title>
      <description>&lt;p&gt;由于杭州市区这么堵，租房贵，但是生活很方便。&lt;/p&gt;
&lt;h2 id="如果办公室："&gt;如果办公室：&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;市中心，IT 企业聚集地。比如城西，堵车，停车难，吃饭方便下班去玩方便。&lt;/li&gt;
&lt;li&gt;如果找一个地方稍微偏一点点，公司补贴住宿钱，或者油钱，上下班方便不堵，停车方便&lt;/li&gt;
&lt;li&gt;不太偏，不中心的地方就好了，能停车，&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;对于我这个有车的人来说，我其实每天上下班就算在市中心，我也不一定回去逛，有时候还是求一个交通方便停车方便便宜的地方。宁可远一点但不堵。&lt;/p&gt;

&lt;p&gt;但是我在想根据不同的人来说可能需求会不一样。&lt;/p&gt;

&lt;p&gt;求各种感受。&lt;/p&gt;</description>
      <author>hlxwell</author>
      <pubDate>Sat, 04 Apr 2015 21:05:21 +0800</pubDate>
      <link>https://ruby-china.org/topics/24999</link>
      <guid>https://ruby-china.org/topics/24999</guid>
    </item>
    <item>
      <title>QingCloud 青云靠谱吗？国内云服务求推荐</title>
      <description>&lt;p&gt;现在想把一套全套在 aws 上跑的服务搬到国内来，比如利用了 cloudfront, ec2, s3, balancer，需要搬到国内来，怎么样可以不用修改太多部署脚本平滑搬过来。&lt;/p&gt;

&lt;p&gt;s3 是不是用七牛这种专门做存储的比较靠谱？&lt;/p&gt;</description>
      <author>hlxwell</author>
      <pubDate>Wed, 25 Feb 2015 01:41:25 +0800</pubDate>
      <link>https://ruby-china.org/topics/24330</link>
      <guid>https://ruby-china.org/topics/24330</guid>
    </item>
    <item>
      <title>淘宝实现前后端分离了？而且还在 Java 和前端 JS 间架了 NodeJS？</title>
      <description>&lt;p&gt;最近一直在搞前后端完全分离的开发体验，觉得 Rails 就快成了空壳了，所有的代码都往 JS 里跑了，当然也遇到了各种 seo，和设计上的问题，总的来说我发现分离后世界变得更美好，对后端的 rails 以来越来越少，似乎只要最主要的就是 api 功能。&lt;/p&gt;

&lt;p&gt;开发和测试起来也非常容易。&lt;/p&gt;

&lt;p&gt;昨天看到杭 js 上
&lt;a href="http://2014.jsconf.cn/slides/herman-taobaoweb/index.html#/" rel="nofollow" target="_blank"&gt;http://2014.jsconf.cn/slides/herman-taobaoweb/index.html#/&lt;/a&gt;
淘宝居然也前后分离了？
一直搜不到那个 bigpiper 在哪里。我只搜到 bagpipe, &lt;a href="http://html5ify.com/bagpipe" rel="nofollow" target="_blank"&gt;http://html5ify.com/bagpipe&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;有没有人提供一些内部情报？&lt;/p&gt;</description>
      <author>hlxwell</author>
      <pubDate>Thu, 03 Jul 2014 12:00:54 +0800</pubDate>
      <link>https://ruby-china.org/topics/20291</link>
      <guid>https://ruby-china.org/topics/20291</guid>
    </item>
    <item>
      <title>前端测试框架错综复杂，跟 rails 集成又是各种迷乱，求 Rails 集成测试方案</title>
      <description>&lt;h2 id="问题篇："&gt;问题篇：&lt;/h2&gt;
&lt;p&gt;市面上测试框架太错综复杂了。尤其是 Rails 程序用 angular 写了前段以后，发现以前 rails view 端的逻辑很多多挪到了 js 上去了。所以 js 的测试也变得必然了。&lt;/p&gt;

&lt;p&gt;网上一查各种迷惑，jasmine, kama, phantomjs, protractor .... 各种名词。&lt;/p&gt;

&lt;p&gt;然而现在所有的前段测试框架比如 jasmine + karma + phantonjs 都是完全脱离 rails 的。意思就是 Rails 的 assets pipeline, rails 的测试数据完全用不上了。angujarjs unit test 现在唯一找到比较好的方案就是用 jasmine-rails gem，可以用 coffeescript, headless, 以及浏览器上跑测试。在测试后端的时候，fixture data 也不能直接用到前段，必须再做一份给前端用作 api 返回结果。gon 也用不了了，要想办法用其他方法解决。有时候真相干脆用 capybara 直接继承测试搞定就好了。可是集成测试真心慢。有时候调试真心麻烦。
不知道有没有好心人介绍一下比较好用的可以在 rails 上用的前端测试最佳实践？&lt;/p&gt;
&lt;h2 id="假想的方法：（挫了点，但是发现有人真这么做了。）"&gt;假想的方法：（挫了点，但是发现有人真这么做了。）&lt;/h2&gt;
&lt;p&gt;Javascript 用 phantonjs 实现一个 让前段或者测试程序员用 javascript 就能写出的测试。在测试服务器上跑一个 Rails 应用，然后通过弄一个 FixtureController 来进行数据准备，比如 /fixtures/load_users  /fixtures/cleanup_database。&lt;/p&gt;</description>
      <author>hlxwell</author>
      <pubDate>Wed, 25 Jun 2014 18:07:49 +0800</pubDate>
      <link>https://ruby-china.org/topics/20164</link>
      <guid>https://ruby-china.org/topics/20164</guid>
    </item>
    <item>
      <title>讨论讨论创业小团队的管理问题？</title>
      <description>&lt;p&gt;我相信群里肯定有很多 project leader 或者 team leader。相信你们也会遇到各种类似的问题。&lt;/p&gt;

&lt;p&gt;列一些我发现的问题：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;当一个团队到达 5-10 个人以上的时候，给团队分工和调节团队间的协作，已经比你自己亲自从操刀整代码要来的更有生产力。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;你每天应该更每一个组员有一定的交流时间，或者开一个小会，一个极端的例子，如果你是一个雇员，你领导 1 个月都不来找你，你是否感觉到一种失落感？马上就不 motivated。但是组员多了之后，必然造成你自己大量时间浪费。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;让组员 motivated，充满激情，除了给组员自由舒适的环境，明确而又能充满的目标，&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;既然作为一个 team leader 你还得负责所有的技术问题，有技术难题你得解决，组员间做的 code 有冲突不能协作好你得负责，所有人写的代码质量你的看，你还得自己写一些代码。你们有什么办法来安排这些？&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;当然个人觉得如果每一个组员都能对自己做的部分负责，而不是一有问题就推给 leader，那么 leader 当然就好做了。问题是，有些时候 team member 会制造麻烦，制造 bug，就是起了很多负作用，不怕神一样的对手，就怕猪一样的队友。这个时候你要 review 他做的东西，一个一个指导，还不如你自己重新写一边来的快。但是每个团队总会有这样的人。你你们会如何处理？&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;有些时候很多团队会过度 over engineering，而不考虑大体，特别是 team leader 自己都是非常 geek 的时候。很多时候可以通过简单的方法快速实现。但是如果这样的话 team member 就认为没挑战，不好玩。这个时候你们怎么权衡？&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;我相信发现问题要比解决问题还要重要。抛砖引玉。&lt;/p&gt;

&lt;p&gt;我发现 ruby china 没有管理分支，这个应该有。&lt;/p&gt;</description>
      <author>hlxwell</author>
      <pubDate>Wed, 21 May 2014 00:16:38 +0800</pubDate>
      <link>https://ruby-china.org/topics/19429</link>
      <guid>https://ruby-china.org/topics/19429</guid>
    </item>
    <item>
      <title>如果有很多台 web server 同时使用 CarrierWave 的话，那么文件存储和 background worker 有没有更好的 solution for shared space</title>
      <description>&lt;p&gt;如题。&lt;/p&gt;

&lt;p&gt;除了远程 mount 一个 folder 之类的方法以外，有没有一个什么方法可以用在 aws，或者 azure 这里云服务上的，提供一个比如可以 mount 一个空间到两个 instance 上的，直接可以使用。&lt;/p&gt;

&lt;p&gt;因为远程 mount 不是一个非常可靠的方法。个人感觉。&lt;/p&gt;

&lt;p&gt;补充&lt;/p&gt;

&lt;p&gt;CarrierWave 有一个 Cache 的功能，这个是最大一个坑。当你有多台服务器的时候。这个假设服务器 a，你上传了 cache 文件，表单提交失败，然后你再提交一次，提交到服务器 b 上了，然后就找不到刚才提交的文件了。&lt;/p&gt;

&lt;p&gt;这个时候需要用到 shared storage。求各种优秀方案&lt;/p&gt;</description>
      <author>hlxwell</author>
      <pubDate>Thu, 27 Feb 2014 13:17:10 +0800</pubDate>
      <link>https://ruby-china.org/topics/17528</link>
      <guid>https://ruby-china.org/topics/17528</guid>
    </item>
    <item>
      <title>危险，极度危险，今天收到了 2000 刀的亚马逊的账单。警惕啊</title>
      <description>&lt;p&gt;今天早上收到了一个账单（有图有真相），我说欠账 2000 刀，先用信用卡无法支付，所以我的账号并 suspended。&lt;/p&gt;

&lt;p&gt;我已经 n 年没有用亚马逊的服务了，哪来的账单啊。我有仔细去后台看了一下发现 2013 年 12 月份一整个月，我用了一台 extra large 的服务器。而且在这个月内用了 863 个小时（一个月才 744 个小时，你坑爹不用这样的吧。）而且前一个月和后一个月，都没有用。这个肯定不是人为。&lt;/p&gt;

&lt;p&gt;我猜测就是他们亚马逊自己的错误。&lt;/p&gt;

&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/2014/3d8091ec1393e58bf04c26354e7c312c.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>hlxwell</author>
      <pubDate>Wed, 19 Feb 2014 10:51:12 +0800</pubDate>
      <link>https://ruby-china.org/topics/17349</link>
      <guid>https://ruby-china.org/topics/17349</guid>
    </item>
    <item>
      <title>Dart －我暂时接受不了你</title>
      <description>&lt;p&gt;公司有个同事说我们试试 dart 来写新项目吧。
dart + angular + D3 做一个什么实时的图表现实。&lt;/p&gt;

&lt;p&gt;然后看了看 dart，编辑器，语法，功能都挺好的挺吸引人的，但是永远你要关注的就是短板问题，你是否接受 Dart 的短板。&lt;/p&gt;

&lt;p&gt;现在列几个我不能接受的。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Dart 目前只支持 IE9,10 和最新版本的 Chrome, Safari, Firefox，你要想支持老版本，比如编译成 JS，而编译成 js 之后，文件非常巨大，就几行代码的 helloworld 就大概在 90k 左右了，而且 minified。因为他要包含很多 dart 自己的库了。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dart 当你要跟别的 javascript 库沟通的时候，代码就变得非常不便了。而且当把 dart 的变量传给 js 的方法的时候也需要转换一下。我非常不看好这点。
可以查看一下以下页面。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://www.dartlang.org/articles/js-dart-interop/" rel="nofollow" target="_blank"&gt;https://www.dartlang.org/articles/js-dart-interop/&lt;/a&gt;
一个 js 写的类，然后让 dart 去调用。&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var Point = function(x, y) {
this.x = x;
this.y = y;
this.distanceFrom = function(otherPoint) {
return Math.sqrt(Math.pow(otherPoint.x - this.x, 2) +
    Math.pow(otherPoint.y - this.y, 2));
};
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;==Dart code=&amp;gt;&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var p1 = new JsObject(context['Point'], [5, 1]);
var p2 = new JsObject(context['Point'], [1, -2]);
print(p1.callMethod('distanceFrom', [p2])); // Prints 5.
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;当你的用户告诉你出了什么 js 错误的时候，你得打开 rails server side + dart editor 一起调试，因为你不能用 browser console 去调试了，必须用 dart editor.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;我接受不了，所以我打算劝我同事放弃吧。&lt;/p&gt;</description>
      <author>hlxwell</author>
      <pubDate>Wed, 18 Dec 2013 14:45:41 +0800</pubDate>
      <link>https://ruby-china.org/topics/16281</link>
      <guid>https://ruby-china.org/topics/16281</guid>
    </item>
    <item>
      <title>代码里可以贴图了？</title>
      <description>&lt;p&gt;&lt;img src="//l.ruby-china.com/photo/2013/0a66e6fbcd158164b9f84bd30e7a8bba.png" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>hlxwell</author>
      <pubDate>Tue, 10 Dec 2013 11:06:53 +0800</pubDate>
      <link>https://ruby-china.org/topics/16113</link>
      <guid>https://ruby-china.org/topics/16113</guid>
    </item>
    <item>
      <title>提个建议，主页上的主题更新算法是否应该变一下？</title>
      <description>&lt;p&gt;我已经一个月都没有看到什么新的主题在首页上出现了。一直都是这么几篇文章。
还是以前的好，一个是最新的一个是最热门的，最热门的也会一直更新。&lt;/p&gt;

&lt;p&gt;我每次首页一看，没啥新闻就关了，新的主题上来也很难成为首页文章。&lt;/p&gt;</description>
      <author>hlxwell</author>
      <pubDate>Fri, 06 Dec 2013 18:24:10 +0800</pubDate>
      <link>https://ruby-china.org/topics/16045</link>
      <guid>https://ruby-china.org/topics/16045</guid>
    </item>
    <item>
      <title>Objective-C 的 Coffee Script -- eero.  让冗长的 objective-c 减肥一半并且更加易于阅读。</title>
      <description>&lt;p&gt;主页地址
&lt;a href="http://eerolanguage.org/" rel="nofollow" target="_blank"&gt;http://eerolanguage.org/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;而且支持 Code Completion.&lt;/p&gt;

&lt;p&gt;喜欢的请赞一个。&lt;/p&gt;

&lt;p&gt;Objective-C&lt;/p&gt;
&lt;pre class="highlight objective_c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#import &amp;lt;Foundation/Foundation.h&amp;gt;
&lt;/span&gt;
&lt;span class="err"&gt;@interface&lt;/span&gt; &lt;span class="n"&gt;FileHelper&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;NSObject&lt;/span&gt;

&lt;span class="err"&gt;@property&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;readonly&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;NSString&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;@property&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;readonly&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;NSString&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;-&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;NSFileHandle&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nf"&gt;openFile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;NSString&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;-&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;NSFileHandle&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nf"&gt;openFile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;NSString&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;
          &lt;span class="n"&gt;withPermissions&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;NSString&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;permissions&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="err"&gt;@end&lt;/span&gt;


&lt;span class="err"&gt;@implementation&lt;/span&gt; &lt;span class="n"&gt;FileHelper&lt;/span&gt;

&lt;span class="k"&gt;-&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;NSString&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;@"Macintosh"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;-&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;NSString&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;format&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;@"HFS+"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;-&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;NSFileHandle&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nf"&gt;openFile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;NSString&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;NSFileHandle&lt;/span&gt; &lt;span class="nf"&gt;fileHandleForReadingAtPath&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;-&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;NSFileHandle&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nf"&gt;openFile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;NSString&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;
          &lt;span class="n"&gt;withPermissions&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;NSString&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;permissions&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

  &lt;span class="n"&gt;NSFileHandle&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;handle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;permissions&lt;/span&gt; &lt;span class="nf"&gt;isEqualTo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;@"readonly"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;permissions&lt;/span&gt; &lt;span class="nf"&gt;isEqualTo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;@"r"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;handle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;NSFileHandle&lt;/span&gt; &lt;span class="nf"&gt;fileHandleForReadingAtPath&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;permissions&lt;/span&gt; &lt;span class="nf"&gt;isEqualTo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;@"readwrite"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;permissions&lt;/span&gt; &lt;span class="nf"&gt;isEqualTo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;@"rw"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;handle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;NSFileHandle&lt;/span&gt; &lt;span class="nf"&gt;fileHandleForUpdatingAtPath&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;handle&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="err"&gt;@end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;

&lt;p&gt;eero language:&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#import &amp;lt;Foundation/Foundation.h&amp;gt;

interface FileHelper
  String name   {readonly}
  String format {readonly}

  openFile: String, [withPermissions: String], return FileHandle
end

implementation FileHelper
  name,   return String = 'Macintosh'
  format, return String = 'HFS+'

  openFile: String path, withPermissions: String = 'readonly', return FileHandle = nil
    if permissions == 'readonly' or permissions == 'r'
      return FileHandle.fileHandleForReadingAtPath: path
    else if permissions == 'readwrite' or permissions == 'rw'
      return FileHandle.fileHandleForUpdatingAtPath: path
end
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>hlxwell</author>
      <pubDate>Thu, 05 Dec 2013 10:49:04 +0800</pubDate>
      <link>https://ruby-china.org/topics/16022</link>
      <guid>https://ruby-china.org/topics/16022</guid>
    </item>
    <item>
      <title>"百度云同步盘" 目录的问题</title>
      <description>&lt;p&gt;这两天开发 rails 发现一个问题就是当 scss 或者 assets 梨有错的时候，错误提示就打开 500 页面没有任何错误提示。搞的我差点抱怨 rails4。&lt;/p&gt;

&lt;p&gt;后来在～／desktop 上建立了一个项目，拷贝文件过来看看，结果怎么也无法重现。后来突然想到自己吧 project 目录全部放到了“百度云同步盘”里了。于是就出错了。&lt;/p&gt;

&lt;p&gt;不是知道大家有没有把项目都同步到云存储上？&lt;/p&gt;

&lt;p&gt;不知道能不能 rename 百度云同步盘，真的不是 developer friendly 的名字。&lt;/p&gt;</description>
      <author>hlxwell</author>
      <pubDate>Wed, 02 Oct 2013 16:13:21 +0800</pubDate>
      <link>https://ruby-china.org/topics/14509</link>
      <guid>https://ruby-china.org/topics/14509</guid>
    </item>
    <item>
      <title>为啥 Angularjs 里的 Service, Value, Factory, Provider 这么让人感到 Confused.</title>
      <description>&lt;p&gt;为啥发明这么概念。难怪学习曲线上升了。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gist.github.com/Mithrandir0x/3639232" rel="nofollow" target="_blank"&gt;https://gist.github.com/Mithrandir0x/3639232&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;基本上差不多的东西要搞出这么多概念。&lt;/p&gt;

&lt;p&gt;整一个，把功能都集成进来不就行了？&lt;/p&gt;

&lt;p&gt;明明就是同一个东西，然后写法不一样，然后可能用起来的时候细节不一样。&lt;/p&gt;

&lt;p&gt;觉得真搞那么多 js，还是得用 bower, 通过引用 gem 去加入 js 不靠谱啊，版本难管理。
&lt;a href="http://dev.af83.com/2013/01/02/managing-rails-assets-with-bower.html" rel="nofollow" target="_blank"&gt;http://dev.af83.com/2013/01/02/managing-rails-assets-with-bower.html&lt;/a&gt;&lt;/p&gt;</description>
      <author>hlxwell</author>
      <pubDate>Wed, 02 Oct 2013 13:53:21 +0800</pubDate>
      <link>https://ruby-china.org/topics/14506</link>
      <guid>https://ruby-china.org/topics/14506</guid>
    </item>
    <item>
      <title>ruby 或者在数据库的正则里如何最快算出 10100101011101010101011011010101 里有多少个 1</title>
      <description>&lt;p&gt;求助，如题。
我想如果用任何字符串处理肯定是慢的。&lt;/p&gt;

&lt;p&gt;用与或计算应该会比较快一点。&lt;/p&gt;</description>
      <author>hlxwell</author>
      <pubDate>Sat, 28 Sep 2013 15:27:18 +0800</pubDate>
      <link>https://ruby-china.org/topics/14449</link>
      <guid>https://ruby-china.org/topics/14449</guid>
    </item>
    <item>
      <title>看到 NYT 上的 iOS 规范，我第一条就不喜欢。</title>
      <description>&lt;p&gt;说推荐做法是，个人觉得好噁心。太恶心了。&lt;/p&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;xxx&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="c1"&gt;// code&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="c1"&gt;// code&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;个人比较喜欢那个他说的错误的做法&lt;/p&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;xxx&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="c1"&gt;// code&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="c1"&gt;// code&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;随便找个 google 的代码 &lt;a href="https://github.com/google/gumbo-parser/blob/master/src/tokenizer.c" rel="nofollow" target="_blank"&gt;https://github.com/google/gumbo-parser/blob/master/src/tokenizer.c&lt;/a&gt;
也是他说所的错误的做法。&lt;/p&gt;</description>
      <author>hlxwell</author>
      <pubDate>Sun, 25 Aug 2013 20:28:29 +0800</pubDate>
      <link>https://ruby-china.org/topics/13607</link>
      <guid>https://ruby-china.org/topics/13607</guid>
    </item>
    <item>
      <title>[求指点] 有谁买过那种破解 wifi 密码的路由器？怎么操作的？</title>
      <description>&lt;p&gt;不知道有没有人做过，就是破解路由密码的路由器，或者什么设备。
还有这个东西跟蹭网器是啥区别。&lt;/p&gt;</description>
      <author>hlxwell</author>
      <pubDate>Thu, 22 Aug 2013 16:47:52 +0800</pubDate>
      <link>https://ruby-china.org/topics/13526</link>
      <guid>https://ruby-china.org/topics/13526</guid>
    </item>
    <item>
      <title>大家有没有见过 Free 的 In App Purchase Item</title>
      <description>&lt;p&gt;今天应用别拒了，说我发布的都是免费 iap，但是他们允许我们设置免费的 iap.&lt;/p&gt;

&lt;p&gt;郁闷啊。&lt;/p&gt;</description>
      <author>hlxwell</author>
      <pubDate>Fri, 16 Aug 2013 11:03:07 +0800</pubDate>
      <link>https://ruby-china.org/topics/13373</link>
      <guid>https://ruby-china.org/topics/13373</guid>
    </item>
    <item>
      <title>英文的产品， 吸引到的都是中国的客户，因为你发现在国外推广你没什么朋友和渠道</title>
      <description>&lt;p&gt;我相信大家都做个很多产品，想针对国外的客户，特别是 ios 应用。&lt;/p&gt;

&lt;p&gt;我以前做了一个应用叫做 iSafePlayer，和最近做的 memoryforcer，昨天在 appannie 上一看，发现 80％以上收入来自于中国。当然我也只是在国内做了推广，我发现去国外推广不仅没有经验而且没有相关的知识和渠道。&lt;/p&gt;

&lt;p&gt;所以我在想，既然这样，我做啥全英文网站或者全英文应用啊。干脆做中文的做的好点就好了，有可能能够盈利更多。大家都觉得可能老外对软件付费习惯&lt;/p&gt;

&lt;p&gt;我不知道大家怎么看。&lt;/p&gt;

&lt;p&gt;&lt;a href="/yedingding" class="user-mention" title="@yedingding"&gt;&lt;i&gt;@&lt;/i&gt;yedingding&lt;/a&gt; 我发现 pragmatic.ly 好像 90% 以上的流量来自于国内，不知道收入也是不是这样，一开始我看到网站只有英文版，后来推出了中文版。是不是跟我一样的感受？&lt;/p&gt;</description>
      <author>hlxwell</author>
      <pubDate>Thu, 15 Aug 2013 14:20:02 +0800</pubDate>
      <link>https://ruby-china.org/topics/13345</link>
      <guid>https://ruby-china.org/topics/13345</guid>
    </item>
    <item>
      <title>突然不知怎么地，在 chrome 下 copy，paste 到 textmate 下不能 paste 刚才的内容。</title>
      <description>&lt;p&gt;在 safari 下可以。
不知道这个是 chrome 的什么新特性。&lt;/p&gt;

&lt;p&gt;不知道大家是否遇到过？&lt;/p&gt;

&lt;p&gt;sublime 也一样。chrome 下的不能与其他的应用互通 paste board&lt;/p&gt;</description>
      <author>hlxwell</author>
      <pubDate>Tue, 06 Aug 2013 15:55:25 +0800</pubDate>
      <link>https://ruby-china.org/topics/13104</link>
      <guid>https://ruby-china.org/topics/13104</guid>
    </item>
  </channel>
</rss>
