• Ruby 2.6 无限 Range at 2018年04月26日

    要说的话ary[1..-1]其实是个很神奇的思路,直接把begin和end拿来用了,1..-1和1..Infinity看上去是完全不等价的两个东西……

  • 非常赞,ssr和webpacker结合在我看来是完美的方案,可以避开前端各种状态管理,路由的坑。之前看webpacker的react ssr好像有人在WIP,原来react-rails就已经支持了。

  • cichol#live.cn 两个 古银 古金

  • 这样是可解的,就是得用户打密码登录,另外苹果的ITP把google sign in都搞的不能用了。。https://github.com/google/google-api-javascript-client/issues/342

  • 是的,用缓存的话等过期就好,读取和preload会更新缓存,不用手动

  • 这些是可以的:

    router = Mrouter.new
    router.add_route '(/page/:page)(/per_page/:per_page)', '233'
    
    p router.match '' # => {:tag=>"233"}
    p router.match '/page' # => false
    p router.match '/page/12' # => {:page=>"12", :tag=>"233"}
    p router.match '/per_page/12' # => {:per_page=>"12", :tag=>"233"}
    p router.match '/page/12/per_page/34' # => {:page=>"12", :per_page=>"34", :tag=>"233"}
    

    我在遇到 ( 的时候直接让trie分叉了,然后匹配的时候是深度优先匹的。这样做可能trie重复的部分多一点,不过匹配是没问题的。

  • 是指匹配不到 /per_page/34/page/12
    这个可能得反过来加个定义,毕竟定义本身也没表达出可以反过来,别的应该还好吧

  • 是的,不得不用啊。。手机和pc一定要相同的url,就是读session也得用mruby了。。感觉很头疼

  • #2楼 @windwiny 看来确实是,以前binary和普通读混用没注意这点。。 啊,兜了好大的圈子

  • 好吧,我解决了

    def process obj
      case obj
      when String
        obj.chars.map{|x| x.ord}.join('.')
      when Array
        obj.map{|x| process x}
      when Hash
        new_hash = {}
        obj.each do |k,v|
          new_hash[process k] = process v
        end
        new_hash
      else obj
      end
    end
    
    def recover obj
      case obj
      when String
        obj.split('.').map{|x| x.to_i.chr(Encoding.find('utf-8'))}.join
      when Array
        obj.map{|x| recover x}
      when Hash
        new_hash = {}
        obj.each do |k,v|
          new_hash[recover k] = recover v
        end
        new_hash
      else obj
      end
    end
    

    dump之前process load之后recover

    本质是把字符串改成数字的字符串,虽然应该也会有隐患,但是目前看来还没有问题

    这BUG真是太坑爹,5个小时就这么没了