• 苹果也用 Rails at July 12, 2015

    #18 楼 @limkurn PHP & RoR Web Developer 12 个小时赶过去,面了 1 个小时,然后又 12 个小时回家……第二天跟我说找到更合适的人了,再见(

  • rspec 实战篇 at July 12, 2015

    #8 楼 @caiqinghua 问题是先写测试代码我根本不知道怎么写啊。 实际开发完成前根本不知道最后接口、架构会设计成什么样。 想请教下你平时是怎么提前写测试代码的呢?

  • 苹果也用 Rails at July 12, 2015

    #15 楼 @limkurn 秒挂……

  • rspec 实战篇 at July 11, 2015

    #4 楼 @caiqinghua 我现在的确是先写测试用例啊。只是具体的代码会后填。 而且实际开发的时候经常会为怎么设计结构而烦恼,很难说可以一拍脑门就能写出很好的测试来。 所以我都是先写一堆 it 'xxxx yyy zzz',等代码写完了再回来根据测试用例和设计完的接口来写测试代码。

    当然也可能是我水平太菜做不到先写测试……

  • rspec 实战篇 at July 11, 2015

    TDD 是个很好的概念,但是同样也带来了问题。 比如说 TDD 本身推荐的「写 - 红-写 - 绿-重构」模型,实际开发过程中会严重影响思考效率。 反正我是宁愿先写一堆 pending usecase,然后开发完再填测试代码。

  • https://devdocs.io/ 你会喜欢的。(左下角可选择开闭

  • 苹果也用 Rails at July 11, 2015

    并没有什么奇怪的吧。之前刚刚面试过 Apple 的 RoR 职位……

  • 这算特性还是算 Bug? at July 11, 2015

    为什么要这么写…… User.where() 返回的是 Relation 吧……?

  • 全字段搜索在数据量大的时候会死慢死慢。

  • 不想自己搞服务器

    搞吧。成本低而且配置简单……

  • #8 楼 @lance_zyb 算法题就要当成算法题来做,然后就发现不难了 wwww 代码如果觉得有用的话就拿走好了,当 public domain 授权了。 当然有轮子用的话直接用轮子也可以。

  • https://gist.github.com/msg7086/1822abdc063aee116f19

    $ rspec main_spec.rb
    
    Schedule
      generates future events by month
      generates future events by week
      generates future events by workday
      generates future events by day
    
    ScheduleService
      日程【2015-07-08 16:00:00,2015-07-08 17:00:00,不重复】与日程【2015-07-06 16:00:00,2015-07-06 16:30:00,每天重复,没有截止日期】冲突
      日程【2015-07-08 16:00:00,2015-07-08 17:00:00,每工作日重复,没有截止日期】与日程【2015-07-11 16:00:00,2015-07-11 17:00:00,每周重复,没有截止日期】 不冲突
      日程【2015-05-31 16:00:00,2015-05-31 17:00:00,每月重复,截止2015-07-15】与日程【2015-06-10 16:00:00,2015-06-10 17:00:00,每天重复,没有截止日期】不冲突
    
    Finished in 0.131 seconds (files took 0.3343 seconds to load)
    7 examples, 0 failures
    

    现在是计算到 10 年后,我觉得差不多应该够了……

  • #3 楼 @ywjno 时区和夏令时应该并不重要吧。反正 Rails 已经接管了时区问题。

  • 你可以把两个日程想象成两个等差数列,然后对等差数列做 merge sort。 写一个伪代码。

    def conflicts? s1, s2
      # if both schedule exists?
      while !s1.nil? && !s2.nil?
        # check if they conflicts
        return true if s1.date conflicts? s2.date
        # find the next date to compare
        if s1.date < s2.date
          s1 = s1.next_schedule
        else
          s2 = s2.next_schedule
        end
      end
      false
    end
    
    class Schedule
      # return: nil if no next, else a schedule start from next date
      def next_schedule
        return nil if repeat == 0
        next_s = this.dup
        case repeat
        when DAY then next_s.date.add-1-day
        when WDAY then next_s.date.travel-to-next-wday
        when WEEK then next_s.date.add-7-days
        when MONTH then next_s.date.travel-to-next-month
        end
        return nil if next_s.date > finish_date
        return nil if next_s.date.too_late?
        next_s
      end
    end
    

    应该不算太复杂吧。 具体实现方法(具体使用的对象/是否使用迭代器技术等等)请根据你自己的实际要求来写。 不过核心方法也就这么二三十行了。 而且也不需要开始结束日期在同一天。 而且也可以扩展到无数个日程互相检查冲突的情况。(用个小顶堆来实现应该就好)

  • 竟然有人直接承包了啊 →_→

  • 强势围观,前排广告位招租(死

    建议先把 task 提出来。如果功能简单的话,说不定大家一人一个 PR 就搞定了呢。

  • 先查询再更新,主要是因为 model 里的 validation,需要保证数据验证合法后再写入。 除非你是特别需要效率且不需要验证数据合法性,否则还是先读再写好。 另外查 development.log 就可以看到不同代码转换成 SQL 后的结果。 可以自己开 pry 做实验。

  • 同一直 win 下开发 linux 下运行。

  • 国内为何不支持自定义域名。备案。

  • 说个我自己的事情。 老板招人的时候要 PHP 程序员,然后我就去了,然后就被招进去了,然后他们的开发项目全是 ruby on rails。 楼主你怎么看。

  • #3 楼 @gantoo 感觉主要还是内存容易爆。 另外放在国内的话带宽才是大头,硬件没几个钱。

  • 推荐配置 1-2G 内存,能正常使用的 1-2 核。 最低配置 512 内存单核。

  • #17 楼 @davidwei 总之我们可以总结出一句话:你 uri 里就算只包含了最后一个 id,也可以通过代码重建出前面的那一大串 id。 那么前面那串 id 就是冗余数据,完全没用。

  • 转成 hash 可以用 Hash[l1.map(&:values).map(&:to_a)] 然而并不好看。 至于你这需求,我觉得改变一下数据结构效率会更高。 匹配:k 的话,总还是要用到 Hash 来去重的。

  • MySQL 导入大 SQL 文件 at July 06, 2015

    #7 楼 @leopku 是这样。 用合适的导出工具很重要。 mysqldump导出的文件就很漂亮。 (当然要比较新的版本,别说是 4.x 的就行)

  • MySQL 导入大 SQL 文件 at July 06, 2015

    10G 并不大,直接 mysql < x.sql 导入即可。

  • location ......{
      try_files $uri /pictures/resize?file=$uri;
    }
    
  • #3 楼 @nowherekai 因为 rake 可以方便调用 ActiveRecord 这和没说一样。谁调用 ActiveRecord 不方便来着? rake 的目的是替代 make,在有依赖关系的脚本里顺序处理。

  • #3 楼 @hxh1246996371 原来如此,学到了(

  • 文件要上传先写入临时目录,上传完毕后再做进一步处理。 你/tmp 才给 1M,当然妥妥爆掉了。