Ruby China
  • 社区
  • 招聘
  • Wiki
  • 酷站
  • Gems
  • 注册
  • 登录
adam.shen
@adamshen
高级会员
第 20859 位会员 / 2015-09-01

[email protected]
26 篇帖子 / 841 条回帖
81 关注者
53 正在关注
67 收藏
争取成为ruby圈一流段子手
GitHub Public Repos
  • rails_problem 5

    总结一些实现Rails常见需求所需要面对的问题

  • fetch_tieba 1

    贴吧爬虫

  • activestorage-aliyun 0

    Wraps the Aliyun OSS as an Active Storage service.

  • ruby-openai 0

    OpenAI API + Ruby! 🤖❤️ Now with ChatGPT and Whisper...

  • github-hosts 0

    通过修改Hosts解决国内Github经常抽风访问不到,每日更新

  • coding_mistakes 0

  • rspec-rails 0

    RSpec for Rails 5+

  • zxing_cpp.rb 0

    ZXing Ruby bindings for the ZXing C++ library.

  • git_flow 0

  • ruby 0

    The Ruby Programming Language [mirror]

More on GitHub
  • 概况
  • 话题
  • 回帖
  • 收藏
  • 正在关注
  • 关注者
  • 想看 Ruby 源代码,要怎么看 at 2015年12月31日

    用 pry 看吧

  • 能否举出各种例子,关于 Ruby 可以做一件事用很多方法? at 2015年12月31日

    #12 楼 @qinfanpeng

    class C
    end
    
    C.define_singleton_method(:singletom_method) do
      puts 'the seventh way to define class methods'
    end
    
  • RubyConf China 2015 资源汇总 at 2015年12月31日

    期待 2016 年的,想去和大牛们合个影。

  • 能否举出各种例子,关于 Ruby 可以做一件事用很多方法? at 2015年12月31日

    定义类方法,方法多到炸

  • [上海] CareerTalk 招聘 Ruby on Rails (+WebRTC) 全栈开发架构师 at 2015年12月31日

    以前在你们网站注册过帐号耶

  • Debian 创始人 Ian Murdock 自杀身亡 at 2015年12月31日

    Seems god needs some better install /uninstall commands.

  • Show RC - ReleaseHub at 2015年12月30日

    感谢开源,明天就 clone 一个学习一下楼主的源码。

  • 关键词 while 有没有返回值? at 2015年12月30日

    while 不是判断,只是条件循环,它判断 gets 的返回值,如果 gets 返回 nil 或者 false 就跳出循环。你的代码和下面的代码是等价的

    ARGV << "testfile"
    
    loop do
      gets ? print : break
    end
    
  • Ruby 中没有 “逻辑与” 的短路原则吗? at 2015年12月30日

    #24 楼 @msg7086 thank you. &.

  • Rails 中,怎么才能删除关联对象集合时 不自动 commit ?? at 2015年12月30日

    我觉得你第二个链接里的办法不错啊。override Rail 的 association methods,然后注册一个 before save

  • Ruby 中没有 “逻辑与” 的短路原则吗? at 2015年12月30日

    #19 楼 @msg7086 youtube 上的?视频能给个链接吗?

  • Ruby 中没有 “逻辑与” 的短路原则吗? at 2015年12月29日

    #14 楼 @dudu_zzzz 基本上就是这个类的方法http://ruby-doc.org/core-2.3.0/RubyVM/InstructionSequence.html

    但是这个虚拟机的指令集我找了半天都找不到资料,只有日文资料。貌似 rubyspec 只描述 ruby 语言级行为,关于 ruby 虚拟机怎么实现其实并没有统一标准可循。你要是能找到 MRI 的指令集资料记得告诉我一声。

  • Ruby 中没有 “逻辑与” 的短路原则吗? at 2015年12月29日

    题主的思路没错,就是句法太杂了。如果升到了 2.3 就赶紧用楼上的单身狗运算符,没有的话,判断一个对象是否为 nil 在代码中使用它本身就可以了(boolean 类型除外),没必要用 not + nil。

    性能上也会有差别,not+nil 编译出来是这样的

    0003 opt_send_simple  <callinfo!mid:a, argc:0, FCALL|VCALL|ARGS_SKIP>
    0005 opt_send_simple  <callinfo!mid:nil?, argc:0, ARGS_SKIP>
    0007 opt_not          <callinfo!mid:!, argc:0, ARGS_SKIP>
    0009 dup              
    0010 branchunless     22
    

    而使用本身来判断只有一句

    0003 opt_send_simple  <callinfo!mid:a, argc:0, FCALL|VCALL|ARGS_SKIP>
    0005 dup              
    0006 branchunless     18
    

    用 Benchmark 试了下,效率差 30%

           user     system      total        real
    simple  0.060000   0.000000   0.060000 (  0.064289)
    complex  0.090000   0.000000   0.090000 (  0.092268)
    
  • Teahour #82 发布, 这次请到了论坛里的隐藏高手 Jan at 2015年12月29日

    #9 楼 @poshboytl

    恩,多谢关注,我升级到 43.0 之后发现也没有这个问题了。

  • Teahour #82 发布, 这次请到了论坛里的隐藏高手 Jan at 2015年12月28日

    #5 楼 @ywjno 查了下,我的 firefox 是 35.0.1,此版本的 audio 标签后面的音频格式最好是 ogg,否则就不能播放

  • Teahour #82 发布, 这次请到了论坛里的隐藏高手 Jan at 2015年12月28日

    哭了,用 firefox 好像没办法听,装个 chrome 试试好了,unbuntu 下浏览器真心太少。

  • 解决 stack level too deep 问题 at 2015年12月26日

    #11 楼 @runup 这个和 ruby 解释器的原理有关,具体的步骤不太清楚,但是可以根据一般的编译原理想一下。一旦切换了 scope,当前 scope 下的符号表就会更新。符号表里会记录当前 scope 下面的变量名和方法名,只要代码里出现符号表里可以找到的单词,就解释为变量和方法,反之,就会提示找不到这个方法或者变量。

  • 解决 stack level too deep 问题 at 2015年12月26日

    #8 楼 @runup 在 mouse 方法内部调用自己本身,这是递归调用,所以必须要有退出这个递归的条件,不然就是死循环。

    至于 stack level too deep (SystemStackError),每次调用一个子方法的时候,都会将原方法的地址及局部变量入栈,以方便返回。如果不断递归调用本身,栈内存区域迟早会被耗完,所以就报错了。

  • 元编程问题:关于动态创建方法 at 2015年12月26日

    #2 楼 @runup 哈哈 不好意思。 前面的正则表达式是不是少个 + 号,点后面跟个空格能够匹配多个字符吗?

  • 元编程问题:关于动态创建方法 at 2015年12月26日

    你把定义 mouse 方法的语句注释掉了

  • 解决 stack level too deep 问题 at 2015年12月26日

    #4 楼 @runup

    建议楼主看看这篇文章 http://www.ibm.com/developerworks/cn/opensource/os-cn-rubysbl/

    加了冒号相当于创建了一个 symbol 对象,所以传递的参数就是这个 symbol 对象,解释器不会认为它是一个方法或者变量,就好像你使用 componet("string"),componet(1) 是一个概念。

    由于 Symbol 比 String 在执行时更为高效,所以在一些仅仅只需要表示"名称"的场合,Rubyist 都会倾向于使用 symbol。例如这个 hash{"name" => "adam"},String 当然也可以用来作为 key,但几乎没有人这样用,因为 Ruby 在处理 Symbol 时更加快速,占用的资源更少。许多方法都以 Symbol 而不是 String 来作为名称参数,比如 define_method(symbol, method) 。在 Rails 里,绝大多数 DSL 后面的参数,跟的也是 Symbol。虽然 Rails 有自己的补救方法可以兼容 Symbol 和 String,但最好还是使用 Symbol 来表示名称。

  • 重用页面的表格做 CSV 导出 at 2015年12月26日

    如果是浏览器载完页面再导出,是否可以考虑用 JS 来做。

  • 2.3.0 悄无声息的发布了? at 2015年12月25日

    #6 楼 @michael_roshen 你真给力,正想知道 What's new

  • Ruby 里面如何将 电话号码 手机号码全部匹配出来? at 2015年12月24日

    #14 楼 @ruby_xi 如果文本格式很多样化,建议不要用正则表达式了,自己去写个方法吧。

  • Ruby 里面如何将 电话号码 手机号码全部匹配出来? at 2015年12月24日

    #9 楼 @ruby_xi 那是整个 MatchData 对象 你看上面 取 m[1] 和 m[2]

  • Ruby 里面如何将 电话号码 手机号码全部匹配出来? at 2015年12月24日

    分别是 m[1] 和 m[2]

    m = /^<p>(\d+-\d+-\d+).+<p>(\d+)/.match(%q[<p>400-669-4525</p>\r\n\r\n<p>15001787892</p>\r\n\r\n<div id=\"xunlei_com_thunder_helper_plugin_d462f475-c18e-46be-bd10-327458d045bd\"> </div>\r\n")])
    m[1]
    # => 400-669-4525
    m[2]
    # =>  15001787892
    
  • Ruby 里面如何将 电话号码 手机号码全部匹配出来? at 2015年12月24日
    m = /^<p>(\d+-\d+-\d+).+<p>(\d+)/.match(...)
    
  • 两段元编程代码的疑问 at 2015年12月24日

    第一个应该很少有人会这么用,我觉得可以理解为 define_method。因为这时使用 def 这个方法,recieve 还是 MyClass 这个类,所以等同于在该类下面直接定义一个方法。

    如果在 Ruby 中,定义一个类相当于是执行一段代码,那么在类中定义实例方法其实也可以理解为执行一段代码。具体的实现应该要看 CRuby 的源码还有底层的书,我猜 Ruby 解释器在类中扫描到 def 方法时,会将该方法写入符号表,至少让执行器知道该类包含这个方法,以及此方法的内存地址。但是这个过程中,方法内部的代码并没有被执行,所以必须要手工调用一次 method_one,method_two 才会被定义。

  • 最近 GitHub 是怎么了, 老是连不上, 又要被墙的节奏吗 at 2015年12月24日

    个人项目建议转移到 https://git.oschina.net/

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