• #37 楼 @279959599 demo 应该是展示自己水平的地方,应该是把自己做得最优秀的部分告诉别人。 我一般给别人看这几个站。

    http://ra.gg/ 这是我 5 年前在公司里做过的一个站。当然这漂亮的前端并不是我做的。

    http://rooms.library.oregonstate.edu/ 这是 2 年前我初学 Ruby 的第二个项目。前端后端都有参与。

    http://beta.camoe.net/ 这是我初学 Ruby 的第三个项目,前端后端都是我自己做的。

    demo 站是你水平的象征,别人看到的东西就是别人对你的第一印象评价。如果你说你做的站和你的水平不符,那你把站给别人看的目的是什么?特别是 #12 楼 你让大家多指点指点,结果又说这些东西我都知道你别轻易评价因为你不了解真相。几个意思呢。

    回到正题。 Rails assets pipeline 本来就是 best practice,就算你用 CDN 用多域服务器,还是要用到 assets digest 这些东西,不用的结果就是无法刷新掉旧的静态文件。 CSS 也好,JS 也好,一般做 Rails 的公司肯定会要求用 SASS/SCSS/LESS 和 Coffee 之类的替代语言以提高开发速度。你把所有文件放在 public 目录下,说明你根本没有利用到这些技术。 你说线上代码里有 .svn,那么问题来了,你为什么不用 Git 来做版本管理?大公司里不可能只有你一个人做开发。就算只有你一个人,也不可能你同一时间只处理一个功能或者一个问题。Git branch / Git flow 的运用能力是必不可少的。(甚至我之前做兼职开发的时候,老大要求我们一律做 Fork + Branch + Pull Request + Code Review 流程)你这给人的第一印象就是连 Git 都用不好。

    然后回到 #31 楼 。你不要以为一直回答别人的问题,就是对别人的帮助。 现在很多人最欠缺的能力就是自己解决问题的能力。学习上,工作上,一遇到什么问题,就到处伸手。「哪里能下载到 XXX?」「哪里能找到 XXX 的资料?」天哪,他们就在我能找到他们的地方——搜索引擎的对岸啊。 之前我加了一个技术群,是专门玩视频图像处理的。我一直在里面回答问题,甚至是我根本不懂的问题,解决了很多很多人的燃眉之急。怎么做到的?很简单,打开谷歌,查一下,然后把链接贴给他们。或者是查到相关的资料,结合他们的问题,给他们解释一遍。他们一看,哦原来是这样。完美解决。我甚至都不用搞懂他们说的到底是什么东西。 然而这对他们没好处,让他们养成了一遇到问题就伸手的坏习惯,最后丧失了自己思考自己研究的能力。 我从高中的时候就进字幕组界玩了,就当时入门的时候有几个前辈带了几天,剩下的十来年,都是自己研究自己思考。我现在带新人的时候感觉就非常明显。天天问问题的人,一定比天天自己研究问题的人,最后的水平差的多。 我不反对问问题,但是问的问题应该有些深度,应该对其他人也有帮助,应该能引起人们的思考,而不是「XX 出错了怎么办」然而又特别基础的问题。(然而,「XX 出错了怎么办」但内容丰富值得回味的问题倒是非常欢迎的)

    总之,我是一直建议新人好好读完「提问的智慧」。否则没前途的。(参见置顶帖)

  • #12 楼 @279959599 薪水定价,有很大一部分是看的解决问题的能力,而不是问问题的频率。 现在除非一个问题我折腾很久都不行,否则我是不会真的去外面发帖的。 (而且实际上我问的不少问题最后还是我自己折腾出来自己回答结贴的。 去一个大公司面试,经常会被要求解决一些实际问题(算法或者设计)。 能不能自己思考并做出来,是是否会被录取的关键。

    PS: 16K 的薪水是什么水平不太清楚,现在拿 4-6K 左右的路过。

  • 你可以在 Windows 下开发。但是最好别在 Windows 下运行。

  • さくらのVPS at 2015年09月04日

    不在日本也能申请?

  • #28 楼 @yellowstar 呃,英文比较菜,如果有中文版的话还是希望能看中文版。

  • 现在就用着 SmartGit 的每月订阅,感觉也挺方便的。万一哪天我觉得别的 Git 工具更好用了,随时停止订阅就好。又或者哪天我离职了,也可以随时停止订阅节约费用。

  • #3 楼 @blacktulip 最常见的三种情况:

    1. 一次购买,终身有效
    2. 一次购买,当前版本有效
    3. 一次购买,一个月有效

    1 就不说了。 2 的话很有可能变成 PD 的那种情况,就是每次升级把价格定得跟完整版差不多高,然后被用户狂骂。 特别像 PD 这种一升级系统就必须升级软件版本的情况,更是被人骂死,用个 5 年付的钱相当于买了 2、3 个完整版 3 的话用户可以根据需要来付费,如果你软件没有改进,被其他软件超越了,用户还是会停止订阅的。

    订阅模式的好处是不用的时候不用付费,特别适合人员变动频繁或者项目变动频繁的公司。

    比如 RubyMine 现在是 199/99,5 年累计付费是$600。新模型是 79,5 年累计付费是$400,便宜不少。 有比如有些公司本来用 Java 的,用了两年以后转型做 Ruby 了。按照原来的模型,3 年累计付费是$1000,而新模型下只要$320 就够了。 对于用户来说,如果有一天某个新的 IDE 超越了 RubyMine 了,完全可以转换到新的软件并且停止订阅。对于开发商来说自然也要努力干活避免用户停止订阅。

  • 跪求电子版……

  • #3 楼 @lukefan title需要@page #4 楼 @lukefan 放到 cache 里面

  • 以前有人说过个很重要的事情。

    现在的生产技术是两三年就会过时的。 也就是说,你大一学的语言啊软件啊什么的,到大三就已经过时了。

    真正不会过时的,只有学习能力与基础知识。

  • 服务器配置 at 2015年09月01日

    Apache 做个反向代理。(然而这年头我早就不用 Apache 了)

  • 网上还有个更恶心的玩法,[min, p, max].sort[1]

  • 请问哪里有电子版的……

  • sublime 下 sass coffee erb 都有插件,为何不装?

  • 你传入的其实是 1。

  • UPYUN 云存储免费了! at 2015年08月30日

    敬告楼上各位。这个免费空间是要收取费用的。

  • 几道有趣的 leetcode 题目 at 2015年08月28日

    #15 楼 @killernova

    You may assume that the array is non-empty and the majority element always exist in the array.

  • #19 楼 @rubyu2 UUID 要撞到实在太难了。

    根据维基百科的资料,每秒产生 10 亿笔 UUID,100 年后只产生一次重复的概率是 50%。

  • 主要就是 nfs 的可靠性啦。 nfs 部署还是挺常见的,只是类似 PHP 代码会不太适合跨网络启动,因为每次执行网页都会读写网络。Rails 基本只在第一次启动的时候读一次,所以应该会比较好用。

  • 如果能放出现场录像就比较好了。毕竟坐标比较远没法过去听。

  • #12 楼 @zj0713001 其实最好的是 [0, arg].max ……

  • 哈哈 开个源 at 2015年08月25日

    本站已通过 360 网站安全检测平台 和 安全联盟 的检测 来 百度口碑 为我们点赞吧

    :doge:

  • #10 楼 @zj0713001 这种函数肯定是三元表达式最好。 arg < 0 ? 0 : arg

  • #9 楼 @ibugs 你说的并不正确。

    count(1) 单次查询肯定是不能代表平均查询时间的

    实际是,count(1) 单次查询是根本不能代表查询时间的。因为平日里很少很少会去查 count(1)。你用 count(1) 来做性能评判标准毫无意义。你自己想想,你写的应用里,用过多少次 count(1)?


    至于你关于查询 b 的疑问,我为你谷歌了一下,解释如下: (其实 #11 楼 已经贴了,我补全一下

    possible_keys 表示搜索可能用到的索引,key 表示实际选用的索引。 有一种可能是 possible_keys 为空,但是 key 不为空的情况。 这种情况下说明 mysql 无法利用索引来搜索数据,但是返回的列却是某个索引的一部分,因此可以用覆盖索引的方式优化全表扫描。 这里你 idx 包含了 p_s 和 u_t,而返回的列是 id 和 p_s,乍一眼看上去并不包含。 然而后面还有解释一句:如果你恰好用的是 InnoDB,那么索引会默认包含主键,也就是说你的索引实际上就是一个 id+p_s+u_t 的索引,完全包含了你的返回值 id+p_s,因此适用于覆盖索引的条件,也就是为什么最后 mysql 会选这个索引的原因了。

    希望能帮到你。 http://dev.mysql.com/doc/refman/5.6/en/explain-output.html#explain_key

  • #5 楼 @ibugs 先回答下第一个问题吧。为什么你认为日常的请求都是和 count(1) 相近的请求?

  • Rails 的精髓就是:能多用第三方组件的,绝对不要自己写。 回到主题。用 memcache 不是挺简单么,登录失败的时候检查 memcache 对应的值,如果没有就加上次数,如果有就更新次数。把键设置成 10 分钟过期就好了,10 分钟以后键自己消失了也就能再次登录了。

  • C/C++ 的块是 Scope Ruby 的块是 Block 不是一个东西。

    Ruby 的 Block,根据松本菊苣的说法,更类似于匿名函数,也就是类似于 C++ 里的 lambda 表达式。 例如:

    a.each { |x| puts x }
    

    相当于

    for_each(begin(a), end(a), [](char* s) { puts(s); });
    

    Ruby 的对应语法,begin...end,是不会像 C/C++ 那样打开新的 scope 的。

    另外,花括号引出的代码会被解析成 Hash,而不是块,所以这里会报语法错误。

    最后,Ruby 不提倡把方法写得很长。超过 20 行一般就要考虑拆分了。