• RVM 与 Bundler 的爱恨情仇 at 2014年08月08日

    #30 楼 @dave 可以,你说的对,我改之。

  • RVM 与 Bundler 的爱恨情仇 at 2014年08月06日
  • RVM 与 Bundler 的爱恨情仇 at 2014年08月06日

    #21 楼 @comensontin 嗯,你说的是对的,这个问题的确是一个安全隐患,值得说明一下。我还好只是在本地开发用机上这么干,纯粹图省事而已。不过话说回来如果我 ls 一下就会问我要密码,那傻子也知道不对劲了,我没有一直用 root 干活的习惯。

  • RVM 与 Bundler 的爱恨情仇 at 2014年08月06日

    #18 楼 @ruohanc 其实手动添加 ./bin$PATH 最前面就可以了,一直这么做,很聪明,也没啥问题。

  • RVM 与 Bundler 的爱恨情仇 at 2014年08月04日

    #12 楼 @bluecoda 对啊,只是有不少人不会去定义下 $PATH,还在没完没了的 ./bin/rails,看的人蛋疼,除却这一点,binstub 实在是极好的一种方案。不过话说回来,gemset 也不复杂,不就是创建项目的时候 --create --default 一句么,以后都是自动切换的。麻烦的是管理不善导致的混乱,这个真是要看人了。gemset 还有简单方便的导入/导出特性,这个就完全和 binstub 没关系了。

  • RVM 与 Bundler 的爱恨情仇 at 2014年08月04日

    #9 楼 @xiaoronglv gemset 只是一个工具,如果你觉得它讨厌那就别用好了,这和你是否要从 rvm 转移到 rbenv 完全没有关联。你知道 rbenv 也有 gemset 吗?那为什么不会因为讨厌 gemset 而从 rbenv 转向 rvm 呢?这从道理上就完全说不通不是么?

    至于说有没有人用 gemset,肯定是有的,我自己就在用。不过就像我之前说的,gemset 就是一个工具而已,派的上用场你就用,派不上了或者有更好的方式取代它了,那就不用。没什么大不了的。

    举个例子吧。比方说我们常有两个项目用不同版本的 rails 的,如果你不用 gemset 也行啊,每一个项目用 bundler 去约束 rails 的版本好了。但相应的,执行 CLI 命令的时候一定不要忘了加上 bundle exec,否则就会搞错不同版本的 rails 命令;反过来,如果你用 gemset 来分开不同版本的 rails,那就不用理会 bundle exec 了。在很长一段时间里,gemset 都带给我这样的好处。另外还有一点好处,如果你的 Ruby 升级了,你可以很方便的 export/import 指定的 gemset,而不需要费时费力的重新 gem install

    随着 Rails 的发展,现在更流行使用 binstub 了,上面提到的第一个好处倒是变得可有可无了。不过还是有很多人都用 ./bin/rails 这样的方式来执行 rails 命令,因为如果不这样做的话,命令行会使用全局的那个 rails 而不一定是你当前项目指定的版本。于是这么一来,比之 bundle exec rail 貌似也没进步到哪儿去是吗?但是,工具是需要灵活应用的,如果你配置一下环境变量 $PATH,让 ./bin/ 成为命令查找路径里最高优先级的一个,就又可以像使用 gemset 那样直接敲 rails 了。事实上,gemset 的原理也就是如此——劫持你的环境变量,把优先级指向你创建的 gemset 里的命令而已。

    工具而已,没什么高低贵贱之分。

  • 穿越了?

  • RVM 与 Bundler 的爱恨情仇 at 2014年08月04日

    我觉得楼主的研究有一些地方都是先入为主的下一个结论,然后去凑证据来证明自己所言非虚。

    比如说:> RVM 诞生于 Bundler 之前……处于十分尴尬的地位

    我就想问一句了,你这段的因果关系是怎么来的?因为自己用不好,所以就觉得 gemset 是一个很尴尬的东西?RVM 诞生于 Bundler 之前这句话就 更是可笑 有点问题了,不知道从哪里找来的证据?但如果你能在下结论之前去看一眼 Github 上的提交记录,就知道事实恰好相反。

    gemset 和 bundler 根本要解决的就不是同一个问题,也不知道有什么好对比的。一个关注的是本地环境,一个关注的是项目自身的依赖,使用它们的时候思维模型根本都是不同的。

    1. 和 Bundler 打交道的时候,思维模型是:不管什么样的环境,反正对于这个项目,我要求 gems 怎样怎样/或者针对特定条件的环境(比如某种特定版本的解释器),我要求 gems 怎样怎样

    2. 和 gemset 打交道的时候,思维模型是:不管什么样的项目,只要切换到我(gemset)这里,我就可以提供 xxx 版本的 xxx gems 供你使用。你当然可以更新我(gemset)管理的 gems,但是记住:你创造我的目的就是为了给本地开发环境设定一个可控的 gems 环境。如果你不 care 这件事情,请你直接使用 global gemset,然后从此忘了我吧——懂得人自然懂。

  • 别只是“感觉”呀,你不妨说一说你找到的这个方式对你而言哪里不够好?分析出原因了才好找到解决的方案。

  • git checkout <tag_name>

  • #4 楼 @runup 你看过镐头书或双飞燕么?这些基础的概念书里都有讲。哪怕你不想一页一页读完这些大块头,最好也常备一本在手边,一旦遇到问题及时翻阅,可以省去你不少时间。上网来问问题,最好不要问这些稍微一查就可以获得答案的问题,倒不是苛求初学者,而是这个查阅的过程获得的知识远比别人总结好摆在你面前要来的更多、更深入。

  • 作为曾经的 AATC 认证讲师,负责任的告诉楼主,所有 AATC 的项目都是真的,教材证书讲师全都是苹果认证的,这个有假你可以向苹果投诉。但是 AATC 是没有 iOS 开发这一类课程的。环球嘛,作为从业者不予置评,任何 AATC 认证机构除了官方给的资源外,难免会开发一些第二产业什么的,这也是人之常情,但是这方面的教材证书讲师什么的和苹果没有任何关系,你想好就是了。。。

  • 求购 Ruby 书 at 2014年07月17日

    #2 楼 @i5ting 双飞燕,价格忘了,放在朋友那里借阅中。

  • 全栈又不是只写代码,他们真正的价值在于解决问题,而不是去做那些周而复始的码字工作。

  • 求购 Ruby 书 at 2014年07月17日

    英文的要么?

  • Install Ruby The "Postmodern" Way at 2014年07月10日

    #34 楼 @ywjno 走死路通常都不是因为 Ruby 自己,而是那些需要 C extensions 的 gem——听大家这么说的。

  • Install Ruby The "Postmodern" Way at 2014年07月10日

    #32 楼 @ywjno 绕着走是因为那边是死路……

  • #9 楼 @billy 或者写个伪类,在 content 里面给个空格,更显逼格一些。。。

  • 正常啊

  • 良好的用户界面设计 at 2014年06月19日

    写给没看过 Good UI 的朋友:

    这个系列是 Jakub Linowski 撰写的小贴士的集合,特别适合产品经理和 UX/UI 体验设计的人用来学习和参考。但是——这里要提示一点:这些小贴士里大部分都不太符合我朝国情,完全照搬肯定是要吃亏的。真正的价值在于你得先分析一下每一条贴士其背后的动机和目的,然后结合自己的产品+所处市场的特色(国情)来决定现实的做法。也就是说你不一定要 100% 听从这些贴士的建议,但是这些贴士的出发点都是值得仔细考量的。

    另外,Jakub Linowski 真正的实力在他和别人合办的一个期刊里,这个在线期刊也放在 Good UI 网站上了,地址很好找:https://www.goodui.org/datastories/,相比于那几十个 UI 小贴士,这个期刊里的内容才是真正的无价之宝!

    给不熟悉的朋友解释一下这个叫做 Data Stories(数据的故事)的期刊,简单地说就是真实案例的分析和实践过程+实施记录/数据对比。Jakub Linowski 其人应该是一个独立的用户体验咨询师,他把自己经手/合作的一些真实案例完整的记录在这份期刊里,而且和我们看过的一些大路货不同的是,这里面都是包含了真实数据的!更重要的是,他把 A/B 测试的完整过程也毫无保留的放了进去。可以说这是为数不多的能看到真正的专业人士亲手操刀的经验大礼包!

    唯一的遗憾就是贵,37 刀/一个月,也就一期,往期还得单花 88 刀另买(真想买的不妨算算怎么买最划算),不过我觉得这个真心值!

  • #6 楼 @wcc526 如果你只用 y 复制,那么就只在 vim 里有效。 如果你用 "+y 复制,就会复制到系统剪切版里。

  • 撸管算法,跪了~

  • 1s 的延迟……蛋疼

  • 啊?是她吗?

  • 关于 KISSY 的一个问题 at 2014年05月25日

    #4 楼 @xiongxin8802 对呀,所以用原型的 slice 转一下就可以当真数组用了呗。

  • 关于 KISSY 的一个问题 at 2014年05月24日

    没有用过 Kissy,不知道选择器结果是真数组还是类数组(看起来像数组,比如说有 length,但是缺少很多数组方法。DOM 集合都是这样的类数组)。

    如果是真数组,那么使用 indexOf 方法可以获得索引位置;如果是类数组,那么先用 Array.prototype.slice.call 转一下,再 indexOf 即可。

    
    var results = [].slice.call(S.all("#playlist li"));
    
    var index = S.one(ev.target).indexOf(results);
    
    

    应该能行,用 Vanilla JS + DOM 测试过。


    嗯,看了一下 MDN,其实可以一句搞定:

    [].indexOf.call(S.all("#playlist li"), S.one(ev.target));
    
  • #10 楼 @groot 你嘴巴能不能干净点?苹果惹你了关我什么事儿?自己倒霉就好好洗脸,顺便刷牙!

  • 业余时间做了一个虚拟主机,然后主页上说技术支持都是从业多年的资深工程师……请问技术支持也是在业余时间么?

  • #6 楼 @saiga 那是你还没学会,学会了以后就不折腾了,Linux 是学会了才更折腾,越会越折腾。如果你愿意,你可以把所有写代码的时间都用于折腾 Linux 上,一辈子都绰绰有余。

  • 这个页面不是让你看具体的测试代码的,而是给关心的人看一下这个项目有多少测试,都给哪些模块/功能写了哪些测试,覆盖了哪些测试样例,测试的开销,目前是否有未通过测试等等。

    如果你想看这些测试是怎么写的,代码在 Github 上:https://github.com/jashkenas/underscore/tree/master/test