• 求教楼层排序问题 at 2013年09月26日

    #5 楼 @towonzhou C 是比 B 低还是高?可以改成使用 [category, number] 二元组来排序,地下层就取负数

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #103 楼 @astaxie 你很懂,没什么好讨论的了...

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #77 楼 @astaxie #78 楼 我还是说清楚点... gcc 编译器 -O2 的优化程度一般般,你可以试试 -O3, 如果是 clang 还可以 -O4 . -Og 的意思是加入了调试符号,作用是让编译出来的 C 程序跑得更慢点。

    C / ObjC / C++ 程序员基本不会上 Go 这条船的:没有动态加载能力,没有 macro, 没有 generic type, 没有 typed exception, 不支持手动内存管理,欠缺抽象能力,没有消息 dispatch 能力,不支持函数式的 idiom, 代码里面大量 if (err != nil), 编译器做不了跨 obj file 分析,运行时能力太弱,GC 太挫,缺少丰富的 literal 语法... Go 代码其实是很底层的,直接 1:1 映射到 assembler, 比起 C 的唯一优势是有字符串...

  • 求教楼层排序问题 at 2013年09月25日

    sort_by {|f| f.start_with?('B') ? -f[1..-1].to_i : f.to_i}

  • Ruby 2.1 Features PDF at 2013年09月25日

    #26 楼 @QueXuQ 扩展名是 .m 的是 objc, 扩展名是 .mm 的是 objc++ , objc++ 是结合 c++ 和 objc 的大变态,xcode 自动完成在里面经常挂,重构功能完全没作用

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #77 楼 @astaxie 要对两种语言都有充分了解才能真正了解性能差别哦

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #25 楼 @astaxie 你为什么要测 gcc -O2 ... 你可以用 gcc -Og 来表明 go 更快呀

  • GO 的性能真的是很惊人啊 at 2013年09月25日
  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #63 楼 @astaxie

    1. 请仔细看... cookie 的 secure (https only) 和 httponly 不是同一个选项
    2. 那请继续这么做...
    3. 你是浪费好多 cpu 算了一段签名,但是却不对它进行验证,那有什么用...
  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #21 楼 @astaxie 准确点说,是这个框架没有签名 cookie 支持,如果用了这个框架,cookie 就应该只用来存 session identifier 和存与用户身份不相干的信息。使用时如果不知道这一点就很危险。另外就是你的 sessionid 不支持 secure (https only) 的设定,利用 dns 污染进行 session hijack 也是可能的,不适合用来做电子商务收钱等安全性要求比较高的网站。

    #29 楼 @astaxie 如果服务器跑在 nginx 后面,通过 tcp 连接信息得来的 ip 都是同样的,如果用户用了代理,看到的 remote ip 都是同样的。按照你的计算方式,相同 ip, 同一时间的请求,就会存在 csrf token 撞车的情况。然后攻击者使用某个流行的 proxy 去访问你的网站来获取一个 token, 那么通过这个 proxy 的用户都有比较大的机会和攻击者的 token 撞车,攻击者在他的伪造表单里自动更新这个 token 坐等鱼上钩。你最后就只能寄希望在 nanotime 上了...

    解决很简单,增加一段随机字符串即可。

    最后,因为你没有防止篡改 cookie 的手段,你的 csrf 不该放 cookie 而应该存在 session store 里 (你的情况就是 文件/数据库/redis/内存了), 或者继续把 csrf 放 cookie 里,把签名附上也可以。

    要挑刺是还可以给你提很多 issue 的 (flash 写成 falsh 就不提了...) ...

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #18 楼 @jihua0a 嗯。有空测试下。go 的设计早就定型了,也没 llvm 的编译器专业,估计变化不大。

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #12 楼 @astaxie 作者尼豪

    https://github.com/astaxie/beego/blob/master/session/session.go 都是服务器端 session, 没找到签名 session 啊

    关于 csrf https://github.com/astaxie/beego/blob/master/controller.go#L307 token 的生成方法是 sha1(key + ip : nanotime) : nanotime 对吧?不直接用随机字符串的话 总是存在可预测的隐患的。

    c 和 go 的对比代码是两年前的... https://github.com/luikore/performance_evaluation/tree/master/chello 现在 go 比那时快很多了,但别忘了现在 clang 都能开 -O4

  • Ruby 2.1 Features PDF at 2013年09月25日

    #17 楼 @sevk 还行,C++ 语法复杂度是 ruby 的 2 倍左右,objective-C++ 是 3 倍

  • 开源诚可贵 , 理性价更高 at 2013年09月25日

    #21 楼 @song940 诶,应该是 后者可略抛 ...

  • Ruby 2.1 Features PDF at 2013年09月25日

    #8 楼 @WolfLee

    假设有个 before_filter{ ... } 的实现是把 block 转换成 proc 对象保存下来,那么定义这个 block 的环境闭包会一直保持着不释放。不过就算调用多次 before_filter 还是只有 1 个闭包,而且一般人不会在这个闭包里放超大的临时数据而不清理,所以基本不碍事...

  • 开源诚可贵 , 理性价更高 at 2013年09月25日

    #19 楼 @song940 若为免票故...

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    #5 楼 @jihua0a c 在 server 的话我用 libmicrohttpd + mongodb-c-driver 和 go 对比测试过的,tps 大约 10 倍左右 (已经接近硬盘 io 极限了). 虽然也很 hello world 但也比不连 db 的测试靠谱点 c 在各种 micro benchmark 里基本都是比 go 快 2 到 10 几倍不等,代码量和 go 在一个数量级

  • GO 的性能真的是很惊人啊 at 2013年09月25日

    测的太 hello world 了 你可以模板里加些拼接看看

    还有就是 beego 很多地方都在偷工减料... 例如 cookie session 里根本就没签名,作者好像没理解 CSRF 在里面用了固定字符串...

    (我测过 C 比 go 快 10 倍左右...)

  • Ruby 2.1 Features PDF at 2013年09月24日

    后缀语法一览:

    • r 有理数
    • i 虚数
    • f frozen string

    由于现在可以用有理数和虚数字面量,就不推荐 require 'mathn' 了,没必要而且会影响特化指令的速度


    def 返回 symbol 超赞,现在可以这样写了 (DRY, explicit, 少个 closure 三者兼得):

    before_filter def require_login
      ...
    end
    

    或者这样写 (python decorator style):

    before_filter \
    def require_login
      ...
    end
    

    然后访问 modifier 可以这么写:

    private def _foo
      ...
    end
    

    特化 attr_reader 但不特化 attr_writer 可以这么写

    attr_writer def foo
      @foo ||= 'foo'
    end
    

    btw 关于这个 ||= matz 有个 proposal ONCE{} 但不确定要不要加

    爱怎么玩怎么玩...

    {
      def foo
      end => def bar
              end
    }
    
  • 给社区的小小建议 at 2013年09月24日

    用粘滞键把 ctrl/cmd 卡住就默认新标签页了

  • #17 楼 @fsword 说明你的 model 设计得比较好,职责没有混合在一起...

  • #15 楼 @fsword

    scope 里面的方法不会污染别的 scope

    class Trinity < ActiveRecord::Base
      scope :as_father do
        ...
      end
      scope :as_son do
        def bar
          ...
        end
      end
      scope :as_spirit do
        def foo
          ...
        end
      end
    end
    
    Trinity.as_spirit.foo
    Trinity.as_son.bar
    ...
    

    scope 的 where lambda 可省略,不过职责有时也和 where 有关系

  • #3 楼 @jimrokliu

    ruby 不需要接口规范,只需要 API -- 因为支持传 block

  • 我觉得和 gemset 应该无关吧,rbenv 应该也可以 bundle install -j8

  • 我发现喜欢就是设计用来 +分 的,想要以后能找到,需要收藏

  • comments 评论的问题 at 2013年09月23日

    你是想怎么整? @user 可以自动完成,还是被 @ 的人可以看到提醒?