• #11 楼 @hexawing 。。。这是挖墓啊。

  • #4 楼 @wanzi001 ^_^,已经好长时间没写 rails web 了。现在正开始慢慢从 ruby web service 转向其他语言中。谢谢好意。

  • 帮顶

  • #8 楼 @mjf429 估计 github 上那兄弟对 clojure 不熟

  • #4 楼 @jjym gin 运行在 openresty 这个改过的 nginx 上。

  • ^_^,之前还有 rails 的 benchmark,后来估计是被 github 上那位仁兄给抛弃了。

  • main_controller +1

  • ruby round down 三位小数 at 2014年01月22日

    #17 楼 @jxs471494539

    另外,还需要判断一下,如果 num 不是小数的情况,num.to_s.index('.') 会是 nil,会报错哈。

    除非你非常确定 num,必是小数

    num = num.to_f.to_s num[0, num.index('.') + tail + 1].to_f

    这样看起来舒服些。免得两个 to_s,呵呵

  • ruby round down 三位小数 at 2014年01月22日

    #17 楼 @jxs471494539 嗯。是的

  • ruby round down 三位小数 at 2014年01月22日

    #14 楼 @jxs471494539 后面那个你不用管他,float 本身就是不精准的, 如果你要的是字符串的话

    前面加上 '%.3f' %即可。

    tail = 3 # 保留小数位 num = 1.2346 # 输入数据 "%.#{tail}f" % (0.1 ** tail * (10 ** tail * num).to_i)

    如果你要的是 float 的话,类似于 1.2 这种。小数位不足的,似乎是很难达到需求。

  • ruby round down 三位小数 at 2014年01月22日

    '%.3f' % ((1.2 * 1000).to_i * 0.001) => "1.200"

    '%.3f' % ((1.2346 * 1000).to_i * 0.001) => "1.234"

    '%.3f' % ((-1.2346 * 1000).to_i * 0.001) => "-1.234" 可以自己写个方法,支持自定义位数。

  • #1 楼 @leslin123 大牛们现在都还没起床。^_^

  • 废除 at 2014年01月13日

    #22 楼 @ailen 呵呵。是的。就看怎么在服务器成本和人力成本之间做权衡了。

  • 废除 at 2014年01月12日

    比格邦,,没有 big-bang 好识别。反应了半天才反应过来。帮顶。

    打算跟 ruby 死磕,默默地漂过。node,go 用了都感觉没 ruby 好使。还是死磕吧。

  • 客户端 API 开发总结 at 2013年10月31日

    #6 楼 @i5ting ^_^ 不明觉厉

  • 求客户端 API 开发经验 at 2013年10月31日

    以下是个人的一点 IOS GAME SERVER 开发经验,欢迎指正(以下客户端简称为 C 端,服务端简称为 S 端):

    1、controller 级参数 validate。参数是否不可缺失,合法性,合理性,结合自己维护的一套错误信息编号,返回给 C 端。这里之所以没有采用 model 层的 validate,个人的看法是,在 model 层的操作之前会有很多逻辑需要处理,关联较多,validate 越早越好,一层层过滤不合法的请求。

    2、C 端大多是导步的,就是发了这个请求之后,他就一边玩儿去了,并没有守在这里等这个请求返回结果。所以你返回给 C 端的 JSON 里面,有必要指出这个 JSON 对应的是哪个请求。 这里我采用的是

    render :json => { action_name => ... }
    

    这种方式,当然,如果有更好的方式,可以@我。

    如果用这种方式,那就需要注意

    (1)、所有 action_name 保持唯一 (2)、routes 里 post、get 后面的'xxx'需要与 action_name 保持一致。

    3、所有敏感数据自己维护一套常量,特别是可变数字,尽量不要通过参数的形式传递。我做 server 端的过程中,从来不信任 C 端发过来的可变数字。可能这是病吧,总担心如果有人模拟请求,会带来意外的灾难。另外如果实在逼不得已,需要采用参数里面的可变数字,那做减法之前,别忘了事先.abs 一下,许多无聊的人,会试探你的请求,然后模拟,如果你减法不做 abs,so,那个被减的对象遇到一个负数的参数的时候,他就变成加法了,越减越多。

    4、如果有许多 C 端和 S 端都会用到许多常量,那请认真构思一下你的常量系统。以哪种类型作为常量的载体,常量如何载入 S 端,C 端如何动态增量更新 S 端已有常量数据。

    5、如果你的 C 端是游戏产品,那么你还有必要考虑一下 S 端数据的虚拟化、实体化的问题。 如:一个角色可能会有许许多多,几十上百件装备,如果这些装备都处于未使用也未被强化提升的等级,如:1 级,那么我认为,这几十上百件装备对于 S 端来讲,都是不存在的。我们只需要给这个角色的装备库里存上几十上百个装备类型,如:101001,201001 等,用来代表这个角色拥有这些装备类型的最低等级的装备。

    其他就暂时没有想到了。欢迎指正,补充。

  • 客户端 API 开发总结 at 2013年10月31日

    客户端是异步的,服务端也应该返回这个 json 属于哪个请求的吧?不然客户端拿到 JSON,都不知道是对应哪个请求的,怎么进行下一步的处理呢。难道是 code:10000?呵呵。。感觉太难理解了这样做。除非有相当完善的文档,不然客户端和服务端都容易搞晕。

  • 建议使用来往 at 2013年10月29日

    #10 楼 @bydmm 曾经一度以为雷不死已经够不要脸的了,没想到堂堂马总也要步后尘了。

  • 建议使用来往 at 2013年10月29日

    以下纯属个人观点,平常心,不激进,也不极端。

    说实在的,特别反感马云的一系列营销方案,什么“三天后来来往找我”,什么“XX 万淘女郎入驻来往”,什么“阿里全员工任务分配制”。

    但是还是抱着好奇的心态装了下,没发现功能上有什么突出的亮点。看了一会就卸载了。

    就一聊天工具罢了,何必还要走借工具的壳打算做平台的老路子呢。看到微信平台游戏火了,月入多少多少眼红了?感觉已经晚了。

    什么“三天后来来往找我”,找你何用?

    什么“XX 万淘女郎入驻来往”,淘女郎岂是我等码畜,或天下众屌丝所能企及的?这些噱头都会随着时间的流逝,一点一点被这个时代的过量信息所淹没。阿门!

  • #6 楼 @Kabie 长姿势了。没通看过 ruby 的文档,平时都是按需查看。怕看了不用也记不住。呵呵

  • @mlb0903

    中间还有些异常判断没做,比如 arr = [1, 2] 时就会报错,默认你的输入数组 arr 是符合你给的规范的

  • @mlb0903 欢迎提出更好的解决方案。

  • 大致想了下,方法可能比较笨。需要你多测试下,看是否是你想要的结果:

    module ArrayDeepRecursion
      def deep_recursion
        return self if size < 2
    
        collect do |_|
            prefix_arr, suffix_arr = shift(2)
            result_arr = prefix_arr.zip.inject([]) { |tmp_arr, prefix| 
                tmp_arr << suffix_arr.zip.map { |suffix| (prefix + suffix).flatten } 
            }.flatten(1)
            return result_arr if size == 0
    
            unshift(result_arr)
            deep_recursion
        end
      end unless Array.method_defined?(:deep_recursion)
    end
    Array.send(:include, ArrayDeepRecursion)
    

    测试结果:

    arr = [[2,3],[4,5],[8,9,10]]
    arr.deep_recursion
    => [[2, 4, 8], [2, 4, 9], [2, 4, 10], [2, 5, 8], [2, 5, 9], [2, 5, 10], [3, 4, 8], [3, 4, 9], [3, 4, 10], [3, 5, 8], [3, 5, 9], [3, 5, 10]]
    
    
    arr = [[1, 2], [33, 44, 55], [66, 77, 88, 99]]
    arr.deep_recursion
    => [[1, 33, 66], [1, 33, 77], [1, 33, 88], [1, 33, 99], [1, 44, 66], [1, 44, 77], [1, 44, 88], [1, 44, 99], [1, 55, 66], [1, 55, 77], [1, 55, 88], [1, 55, 99], [2, 33, 66], [2, 33, 77], [2, 33, 88], [2, 33, 99], [2, 44, 66], [2, 44, 77], [2, 44, 88], [2, 44, 99], [2, 55, 66], [2, 55, 77], [2, 55, 88], [2, 55, 99]]
    

    没测过性能,不知道性能咋样。期待其他大牛贴上更科学的方法。 PS:会清空原数组:arr

  • where 查询语句有问题 at 2013年10月28日

    #10 楼 @tank_lei session create 的时候,貌似不用再 User.new 一个吧。直接 find_by_name 把 password 取出来,做加密校验,再对比就完了呀。

  • 好像是做景区硬件的,上次去聊过,二次被拒。但我感觉还是比较开心。不被拒的话,就不会在现在公司了。哈哈。

  • 顶一个!看起来挻有诚意的,可惜人不在帝都,也不打算去帝都吸那里的“高含量氧”。呵呵。只能默默帮顶了。

  • 默默地帮顶。

    好像办公环境不错,公司妹纸也多,大牛也有不少。另外有个哥们好像还是跟我是同一个小区,同一个单元呢。