#21 楼 @comensontin 嗯,你说的是对的,这个问题的确是一个安全隐患,值得说明一下。我还好只是在本地开发用机上这么干,纯粹图省事而已。不过话说回来如果我 ls
一下就会问我要密码,那傻子也知道不对劲了,我没有一直用 root 干活的习惯。
#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 之前……处于十分尴尬的地位
我就想问一句了,你这段的因果关系是怎么来的?因为自己用不好,所以就觉得 gemset 是一个很尴尬的东西?RVM 诞生于 Bundler 之前这句话就 更是可笑 有点问题了,不知道从哪里找来的证据?但如果你能在下结论之前去看一眼 Github 上的提交记录,就知道事实恰好相反。
gemset 和 bundler 根本要解决的就不是同一个问题,也不知道有什么好对比的。一个关注的是本地环境,一个关注的是项目自身的依赖,使用它们的时候思维模型根本都是不同的。
和 Bundler 打交道的时候,思维模型是:不管什么样的环境,反正对于这个项目,我要求 gems 怎样怎样/或者针对特定条件的环境(比如某种特定版本的解释器),我要求 gems 怎样怎样
和 gemset 打交道的时候,思维模型是:不管什么样的项目,只要切换到我(gemset)这里,我就可以提供 xxx 版本的 xxx gems 供你使用。你当然可以更新我(gemset)管理的 gems,但是记住:你创造我的目的就是为了给本地开发环境设定一个可控的 gems 环境。如果你不 care 这件事情,请你直接使用 global gemset,然后从此忘了我吧——懂得人自然懂。
别只是“感觉”呀,你不妨说一说你找到的这个方式对你而言哪里不够好?分析出原因了才好找到解决的方案。
git checkout <tag_name>
作为曾经的 AATC 认证讲师,负责任的告诉楼主,所有 AATC 的项目都是真的,教材证书讲师全都是苹果认证的,这个有假你可以向苹果投诉。但是 AATC 是没有 iOS 开发这一类课程的。环球嘛,作为从业者不予置评,任何 AATC 认证机构除了官方给的资源外,难免会开发一些第二产业什么的,这也是人之常情,但是这方面的教材证书讲师什么的和苹果没有任何关系,你想好就是了。。。
全栈又不是只写代码,他们真正的价值在于解决问题,而不是去做那些周而复始的码字工作。
英文的要么?
正常啊
写给没看过 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 刀另买(真想买的不妨算算怎么买最划算),不过我觉得这个真心值!
撸管算法,跪了~
1s 的延迟……蛋疼
啊?是她吗?
#4 楼 @xiongxin8802 对呀,所以用原型的 slice 转一下就可以当真数组用了呗。
没有用过 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));
业余时间做了一个虚拟主机,然后主页上说技术支持都是从业多年的资深工程师……请问技术支持也是在业余时间么?
这个页面不是让你看具体的测试代码的,而是给关心的人看一下这个项目有多少测试,都给哪些模块/功能写了哪些测试,覆盖了哪些测试样例,测试的开销,目前是否有未通过测试等等。
如果你想看这些测试是怎么写的,代码在 Github 上:https://github.com/jashkenas/underscore/tree/master/test