#3 楼 @wppurking 不是更新应用需要,而是主应用本来就是虚拟机操作面板(之类的,只是业务上还有些不同),本身就跑在比如说 Xen 的 Dom0 上的。如果是 docker 的话,能透过 docker 的隔离去调用系统本身的 su 等级的程序么?
#1 楼 @wppurking 那部署的话,直接替换 docker 镜像吗?
另外忘了说一点了。主应用涉及到一些比较核心的操作,比如启动 xen 虚拟机、建立虚拟网卡之类的操作。
现在看一个写得超破的系统,每天都看得想死。然而为了赚钱还是得干啊
raise exception 可以考虑用 catch throw 代替。
这是函数式才有的功能吧。 过程式语言的执行顺序会产生副作用,不能随便化简短路的。
比如 arr.map(&:a).map(&:b)
,在 ruby 里就要严格要求所有的 b 必须在所有的 a 之后执行,而绝对不能 a b a b
这样执行。
mysql(被打
params.require(:manager).permit(:password, :password_confirmation)
这里 Unpermitted parameter: current_password
Debian 8 直接 apt 里装上 ruby 一套,配上 nginx 和 unicorn 之类不就好了。
初期可以共享数据库 以后可以做成多主数据库同步的方式(比如 galera) 本地文件的话 nfs 挂载,也可以用分布式文件系统(比如 glusterfs)
整个帖子被最后这句话毁了……
类实例变量难道不是给类实例用的吗 如果是继承的话,是把这个变量下放到类实例级别,来实现子类的变量互相不共享。
我只搜到这样的用法,不知道你这边的用途是什么。
#8 楼 @caiqinghua 问题是先写测试代码我根本不知道怎么写啊。 实际开发完成前根本不知道最后接口、架构会设计成什么样。 想请教下你平时是怎么提前写测试代码的呢?
#4 楼 @caiqinghua
我现在的确是先写测试用例啊。只是具体的代码会后填。
而且实际开发的时候经常会为怎么设计结构而烦恼,很难说可以一拍脑门就能写出很好的测试来。
所以我都是先写一堆 it 'xxxx yyy zzz'
,等代码写完了再回来根据测试用例和设计完的接口来写测试代码。
当然也可能是我水平太菜做不到先写测试……
TDD 是个很好的概念,但是同样也带来了问题。 比如说 TDD 本身推荐的「写 - 红-写 - 绿-重构」模型,实际开发过程中会严重影响思考效率。 反正我是宁愿先写一堆 pending usecase,然后开发完再填测试代码。
https://devdocs.io/ 你会喜欢的。(左下角可选择开闭
并没有什么奇怪的吧。之前刚刚面试过 Apple 的 RoR 职位……
为什么要这么写…… 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 年后,我觉得差不多应该够了……
你可以把两个日程想象成两个等差数列,然后对等差数列做 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 做实验。