Ruby China
  • 社区
  • 招聘
  • Wiki
  • 酷站
  • Gems
  • 注册
  • 登录
谢文威
@vincent
高级会员
第 332 位会员 / 2011-11-29

薄荷科技
上海
25 篇帖子 / 529 条回帖
111 关注者
6 正在关注
16 收藏
写优雅的程序,做一个优雅的人
GitHub Public Repos
  • redis_scanner 85

    RedisScanner is a tiny tool for scanning redis's keys and creating statistic information.

  • sneakers_packer 53

    Microservice communication, job message, event broadcast and remote procedure call based on Rabbi...

  • migrate-ssdb2pika 5

    迁移 SSDB 到 Redis/Pika 工具集,Ruby 实现

  • grpc_for_rails 3

    Make grpc server and client easy for rails project.

  • gruf 1

    gRPC Ruby Framework

  • wechat 1

    API, command and message handling for WeChat in Rails

  • my-slides 1

    my slides for sharing

  • sneakers 1

    A fast background processing framework for Ruby and RabbitMQ

  • capistrano-sneakers 1

    Sneakers support for Capistrano

  • shortme 1

    Yet Another URL Shortening Service in Golang

More on GitHub
  • 概况
  • 话题
  • 回帖
  • 收藏
  • 正在关注
  • 关注者
  • [上海] 薄荷科技寻找靠谱的 Rubyist at 2013年08月27日

    #1 楼 @tumayun 偶尔是可以住在里面的,有同事这么干过,呵呵

  • Writing Sensible Tests for Happiness at 2013年08月27日

    好文!讲如何使用 Test framework 和 Test tool 的文章很多,但是讲如何写好 Test 的文章很少,楼主的文章很棒,感谢分享!

  • [视频][中文字幕] RubyKaigi 2013 中村成洋 (@nari) Ruby 2.0 GC at 2013年08月10日

    @willmouse 楼主分享,必属精品啊!

  • [上海][2013年8月10日] Ruby Tuesday 活动召集 (周六) at 2013年08月10日

    签到,哈!

  • [上海][2013年8月10日] Ruby Tuesday 活动召集 (周六) at 2013年08月10日

    参加参加,感兴趣的话题,非常期待!

  • [上海][2013年7月9日] Ruby Tuesday 活动召集 at 2013年07月04日

    参加参加,难得 @lgn21st 在上海滩露面,哈哈!

  • 我是否应该使用 mongodb?(即 mongodb 能比 mysql 更好的解决我面临的问题吗?) at 2013年06月15日

    #19 楼 @ruohanc 不是要从一个 SQL 中直接计算统计结果,而是在一个批处理的 SQL 文件(可能有很多个 SQL,还要生成临时表)定时处理,执行结果生成统计表,Ruby 是直接从统计表里拿结果。 我自己是这么干的。举个简单例子:一个网站,每天有大量的用户登录(大概几十万条记录),需要统计一个月内每天登录的人数。如果直接去登录日志表里做查询估计要半分钟。 我的处理方法是,每天凌晨的时候跑批处理 SQL,把结果放到一个 日登录数据统计表中,Ruby 的程序直接读这个统计表的数据就可以生成数据分析报告了。

  • 我是否应该使用 mongodb?(即 mongodb 能比 mysql 更好的解决我面临的问题吗?) at 2013年06月15日

    #15 楼 @ruohanc 对于数据分析而言,最重要的是处理的策略(或者说算法),无论用 MySQL 还是 MongoDB 都是一样。 我觉得你让 MySQL 处理数据,而不是加载到 Ruby 里处理会更好。数据应该在 MySQL 里完成计算统计(用 SQL 处理),然后把计算统计的结果放到一张统计表里,Ruby 只展示结果就好了,不需要 Ruby 参与数据的分析计算。

  • 《Ruby on Rails Tutorial》中文版限免 at 2013年05月31日

    恭喜,恭喜!

  • 别在服务器上安装 RVM at 2013年05月29日

    我们一直在生产环境使用 RVM,用得很好,尤其对于升级 Ruby 非常方便,还没有遇太棘手的问题。

  • [上海][2013年5月28日] Ruby Tuesday 活动召集 at 2013年05月29日

    #11 楼 @ericguo 昨晚有事没能参加,感谢楼主的分享,R 很有前途,回头好好研究一下,呵呵

  • 实例说明 Ruby 多线程的潜力和弱点 at 2013年05月27日

    #40 楼 @bhuztez #38 楼 @luikore 峰值的处理情形的确不常见,不过我觉得提升处理能力的用处在于:

    1. 稳定性,偶尔有情况达到峰值,这个时候你的系统总不能轻易挂掉;
    2. 安全性,遇到坏人拿你的系统做压力测试怎么办。(当然安全还需要额外措施加固)
  • Ruby on Rails 线程安全代码 at 2013年05月27日

    #17 楼 @simonykq Ruby 的类变量本质上是全局变量,设置类实例变量都可以认为是全局变量,只不过限制了一定范围而已。Ruby 线程里有 Thread.current hash 用于保存只属于当前线程的变量。

  • 实例说明 Ruby 多线程的潜力和弱点 at 2013年05月27日

    #30 楼 @luikore 多谢提醒,回头我根据你说的更改试试,看看是不是这个原因。

  • 实例说明 Ruby 多线程的潜力和弱点 at 2013年05月27日

    #26 楼 @hooopo #27 楼 @5long #28 楼 @zj0713001 两位真是认真细致啊,这个都注意到了,呵呵 我需要把例子再补充完善,以考虑到这种情况。

  • 实例说明 Ruby 多线程的潜力和弱点 at 2013年05月27日

    #22 楼 @robbin 还不是很明白,gil2.rb 主要是压缩的工作,是耗 CPU 而不是 IO 等待的,另外,Ruby 1.9.3 和 Ruby 2.0.0 差异明显,方式有修改吗?

  • 实例说明 Ruby 多线程的潜力和弱点 at 2013年05月27日

    #19 楼 @zj0713001 @robbin Rails 3 的多线程确实有比较大的问题,主要是稳定性不行,我搭过一个简单测试例子,使用 Rainbows ThreadPool 方式,允许每个进程最多 64 线程,当并发数到 20 的时候,就有 2% 左右请求失败率,具体原因不祥。期待 Rails 4 正式版本推出的时候,这一问题已解决。

  • 实例说明 Ruby 多线程的潜力和弱点 at 2013年05月27日

    #11 楼 @reus 异步 IO 也是经常使用的解决 IO 问题一种方法,不过它额外的要求:

    1. 必须使用 callback 方式的写法
    2. 使用的类库必须使用专门异步 IO 版本 有时候这两点还是比较麻烦的。
  • 实例说明 Ruby 多线程的潜力和弱点 at 2013年05月27日

    #10 楼 @zj0713001 @robbin 我使用 ruby-2.0.0-p195 试了一下,确实使用多线程有明显加快。

    time ruby gil1.rb
    
    real    0m8.708s
    user    0m8.664s
    sys 0m0.025s
    
    time ruby gil2.rb
    
    real    0m2.102s
    user    0m17.630s
    sys 0m0.147s
    

    这是在一台 单 CPU 6 核(带超线程)机器,在 ruby-2.0.0-p195 的执行结果。 按理,Ruby 2.0 并没有去除 GIL,应该不能真正并行执行多线程的,有点超出现在的理解范围了,谁能解析一下?

  • 实例说明 Ruby 多线程的潜力和弱点 at 2013年05月27日

    #3 楼 @iBachue 你是指 Thread.fork 吗?还 fork process 呢? 基本上 Thread.fork 和 Thread.new 是一样的,fork process 就另当别论了。

  • Ruby on Rails 线程安全代码 at 2013年05月27日

    Ruby 能提升 Web 应用吞吐量的原因,见我的另一个帖子: 实例说明 Ruby 多线程的潜力和弱点 http://ruby-china.org/topics/11248

  • Ruby on Rails 线程安全代码 at 2013年05月26日

    #14 楼 @simonykq Ruby 的 类变量类似于全局变量,对同一进程内的所有线程来说,看到的自然是同一份变量,所以它不是线程安全的。举例子说明比较清晰:

    class A
       @@var = 'ok'
    
       def method1
          @@var = 'ok1'
          sleep(2)
          puts @@var
       end
    
       def method2
          @@var = 'ok2'
          sleep(1)
          puts @@var
       end
    end
    
    t1 = Thread.new { A.new.method1 }
    t2 = Thread.new { A.new.method2 }
    t1.join
    t2.join
    

    期望代码的结果是

    ok1
    ok2
    

    但实际结果是

    ok2
    ok2
    

    原因是,t1 和 t2 访问的是同一个变量 @@var。 要避免这个问题,方法有:

    1. 尽量避免是使用读写型全局变量,尤其是类变量,类变量本就是 Ruby 中很迷惑人的一种变量,行为怪异,本就不推荐使用。如果全局变量在启动的时候初始化,后面多线程只是读,不涉及写,无此影响;
    2. 如果实在要写全局变量,在使用该变量的时候加锁。加锁版的代码如下:

      class A
       @@var = 'ok'
      
       def method1
          @@var = 'ok1'
          sleep(2)
          puts @@var
       end
      
       def method2
          @@var = 'ok2'
          sleep(1)
          puts @@var
       end
      end
      

    lock = Mutex.new t1 = Thread.new { lock.synchronize{ A.new.method1 } } t2 = Thread.new { lock.synchronize{ A.new.method2 } } t1.join t2.join

    这个时候,结果是 
    ```ruby
    ok1
    ok2
    
  • 淘宝搜索技术总监鬼脚七好像是个很牛 B 的人物 at 2013年05月22日

    名字听着很酷,人不知道怎么样。

  • [上海][2013年5月14日] Ruby Tuesday 活动召集 at 2013年05月14日

    #24 楼 @williamherry #25 楼 @loveky #26 楼 @zgm #27 楼 @williamherry 我通常拿一个 IBM 的红点包,装一本 MacBook,MacBook 里运行的是 Windows,这样是否很被鄙视,呵呵。

  • Ruby on Rails 线程安全代码 at 2013年05月13日

    #11 楼 @shatle 还好,其实需要注意的地方也就几个,不是特别麻烦。

  • [上海][2013年5月14日] Ruby Tuesday 活动召集 at 2013年05月13日

    #2 楼 @yangchenyun #15 楼 @williamherry #16 楼 @otecteng

    那就暂定一个主题:探讨 Ruby / Rails 并发模型,以及 Ruby on Rails 线程安全代码问题, 由我来主持,到时大伙一起交流。

  • Ruby on Rails 线程安全代码 at 2013年05月13日

    #6 楼 @iBachue 开发环境通常是不会开启多线程的,因为开发环境需要主动加载变化的代码。

    所以线程的问题通常只发生在生产环境,非常难以测试和重现,这是使用多线程的代价之一。

  • Ruby on Rails 线程安全代码 at 2013年05月13日

    #7 楼 @iBachue

    config.eager_load_paths accepts an array of paths from which Rails will eager load on boot if cache classes is enabled. Defaults to every folder in the app directory of the application.

    把目录加入 eager_load_paths 后,Rails 在启动时会 require 该目录下的所有文件,这样目录下的文件就不会在启动后再次加载了,从而规避了 Ruby require 非线程安全的问题。

  • Ruby on Rails 线程安全代码 at 2013年05月13日

    #4 楼 @robbin 所以关键问题,是否使用 Connection Pool 取决于 Connection 的 IO 等待时间?比如 ActiveRecord 的 Connection,SQL 的 IO 等待可能很长,所以有必要用 Connection Pool 管理。但是 NoSQL 的 IO 等待很短,不使用 Connection Pool 还更高效。

  • [上海][2013年5月14日] Ruby Tuesday 活动召集 at 2013年05月13日

    Ruby / Rails 并发模型,@robin 的两篇文章非常值得推荐 Web 并发模型粗浅探讨 http://vdisk.weibo.com/s/kiwIU 这个是 ppt Ruby 的多线程应用服务器介绍 http://ruby-china.org/topics/10832

  • 上一页
  • 1
  • 2
  • …
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 下一页
关于 / RubyConf / Ruby 镜像 / RubyGems 镜像 / 活跃会员 / 组织 / API / 贡献者
由众多爱好者共同维护的 Ruby 中文社区,本站使用 Homeland 构建,并采用 Docker 部署。
服务器由 赞助 CDN 由 赞助
iOS 客户端 / Android 客户端 简体中文 / English