• 只用一个正则匹配看上去太费劲了。就算你能写出规则正确且运行效率高的正则,代码也很难阅读。

    还不如用 .split("@") 拆分成两段,域名部分也 .split(".")拆分开来,各段分别写验证规则的时候再用正则也行。

  • 参考 Rails 教程里创建 model 但未能通过验证的做法:即使还没存数据库,用户已经把 markdown 内容 POST 上来了。不要重定向,直接拿去渲染就是。

    http://guides.rubyonrails.org/getting_started.html#adding-some-validation

  • ruby 中 == ?. 的用法解释 at 2017年09月07日

    可以用这个比较笨拙但有效的办法试试看:

    if File.basename(path)[0] == ?.
      puts "HAZDOT: " + path # 加入这一行,当某些文件夹的名字满足你的假设条件,就会打印出来
      Find.prune       # Don't look any further into this directory.
    else
      next
    end
    

    然后运行程序来验证你的假设就行了。

  • 如果要按照 REST 的思路来设计的话,尝试把产品领域里的逻辑概念抽取出来,创建一种业务上能说得通的新资源。

    比如说没写完的文章,一般都叫做草稿,那么就先建个 ActiveModel(因为还不需要存到数据库,所以不用继承 ActiveRecord)的子类,名字就叫 Draft

    这样来说,预览这个功能就等于“创建了一篇草稿”,那么在 HTTP 接口上应该体现成 POST /drafts/。有了这些思路,再往下自己写控制器,写模板渲染什么的,应该就不需要多说了。

  • 你所面对的问题不是 peatio 特有的,而是因为你对 Ruby 和 Rails 都是从零开始了解。所以你需要去看从零开始的教材。比如去 Rails 官网上的资源开始学起。

  • ruby 中 == ?. 的用法解释 at 2017年09月07日

    就这个特例来说,在不知道语法定义的前提下,自己去探索的难度太大(因为一个问号加一个句点,绝大多数搜索引擎都不知道该怎么索引才好,一般都会在 normalize 的过程中清洗掉)。

    来论坛直接提问就是更干脆的方案,而且一楼也有回答,先记住就行了。在知道了这是“单个字符串的字面量的语法”之后,可以在 http://ruby-doc.com/ 上搜索 literal(“字面量”的英文原文)或者 string literal(“字符串字面量”) ,尝试找到官方文档的解释。不过还是因为难于索引的缘故,只能点进搜索结果一行行地细读。

  • ruby 中 == ?. 的用法解释 at 2017年09月07日

    就是单个字符的字符串,没什么“很难确定”的。顺便这是我四年前的同样主题的帖:https://ruby-china.org/topics/11052

    即便把下面这段都去掉,也不会影响运行结果

    如果你还在初学编程(或者任何一门知识)的阶段,不要有这种“我试着改一下看看这个黑盒能出什么结果”的态度,而是要改成“我现在接触的都是皮毛,所以肯定有人 / 文档能完整解答”的态度。

  • 明白了。Windows 支持这个问题对我来说等于没有,所以就没体验到。

    至于说“割裂感”这种事,我也完全不在乎。

  • 那么,和 fzf.vim 方案相比,优势在哪里呢。

    模糊查找这个功能我最初用的是 Command-T,后来过了许久才开始寻找替代方案(因为 Command-T 一直够用,没什么大毛病)。最终选用 fzf 方案是因为它可以独立使用,比如说取代 zsh 的 Ctrl+R 去查找历史命令。而且性能与响应性也很棒。再就是项目也足够成熟&流行,能一直维护 / 发展下去。

  • 你需要学着用调试工具去检查不同的渲染环境里,哪些 CSS 规则影响了你正在调试的元素: https://developer.mozilla.org/zh-CN/docs/Tools/Page_Inspector

  • 没有实际处理数据库问题的经验,只有纸上谈兵:

    self.account.balance = self.account.money_records.success.sum(:money)
    

    这个实现方案,不仅需要锁 account 记录所在的行,还要设法去锁 money_records 表(锁整表或者按查询条件锁多个行,具体要看数据库是否支持细粒度的锁)。再就是还要从数据库读取 money_records 进来,浪费时间。

    如果换作是我来实现,会写成这样:

    # @money_record 就是正在检查的,是否已完成金额转移的交易
    self.account.balance += @money_record.money
    

    看 Rails 的 API 文档实例,也是这么做的:http://api.rubyonrails.org/classes/ActiveRecord/Locking/Pessimistic.html

    话又说回到事务处理:transaction 功能并不能智能地摆平一切冲突问题。数据库可以设置成不同的隔离级别(isolation level)。高隔离级别更能保证数据完整性,但可能会牺牲性能。你的数据库具体支持哪些级别,你的应用场合需要哪种级别,这个只能花时间去研究了: https://www.bing.com/search?q=transaction+isolation

  • 个人行事风格与公司文化不符,虽然帖子第一行就自称是兼职招聘 (说得难听点就叫临时工),但能把招聘工作委托到这样的人手上,公司自己也得找原因。

    编辑:其实我对这个公司没什么了解。随口说公司文化有点太武断了。

  • 使用聚集函数的问题. at 2017年08月16日

    是的。聚集计算的过程在数据库服务器端进行,具体的实现细节未知也不需要知道(除非因为某些原因造成抽象泄漏,比如要深度性能优化)。

  • 录音效果:麦克风距离音源 (演讲者的嘴) 越近,对麦克风的敏感度要求越低,录入的环境噪音就越少。试试用领夹 + 手机耳麦录音,而不是笔记本内置麦克风。

    降噪:OBS 录音是支持为各个音源设置 filter 的,而且自带降噪 / 响度阀值 filter。

    画中画:OBS 能做到。最简单的方案是演讲者的幻灯片,摄像头和 OBS 都连接 / 运行在同一台电脑上。

    OBS 的设置帮助可以去 twitch.tv 之类的直播网站的帮助文档里找找看,里面有面向非技术专业人士的指南。

  • 这个在 README 里面有写:

    It persists job states to your database using Active Record.

    所以你的猜想可能是对的。

    关于“停机一段时间重启服务之后是否要执行定时任务”这件事,要依任务自身的业务需求决定。比如批量处理用户产生的数据这种任务,由于停机时间是没有数据积累的,那么定时任务也就不用执行。如果业务有一定的时效性要求,在停机恢复之后尽早重跑一次就是值得考虑的。

  • 对于这个应用场景我的意见是用现有框架里提供的 (before_action)[http://guides.rubyonrails.org/action_controller_overview.html] 来解决问题,而不是把其他语言 / 框架里你所熟悉的实现方法照搬过来。除非你有很好的理由。

    @sefier 主楼的实现并没有完全还原 PHP die() 的语义,只是用异常做了个 goto 而已。

  • 把超类作为参数传给 Class.new: http://ruby-doc.org/core-1.9.3/Class.html#method-c-new

  • 举手~ 目测还是 mac 用户多。

  • 一小段代码重构 at 2013年08月09日

    如果回复的类型就这么几种,感觉不算多,我倾向于用这个方案:

    class Person < Struct.new(:answer_policy)
      def respond(words)
        answer_policy.new(words).answer
      end
    end
    
    class LackadaisicalTeenagerAnswerPolicy < Struct.new(:words)
      def answer
        case
        when nothing?
          'Fine, Be that way!'
        when yell?
          'Woah, chill out!'
        when question?
          'Sure.'
        else
          'Whatever'
        end
      end
    
      def nothing?
        words.empty?
      end
    
      def question?
        words.end_with? '?'
      end
    
      def yell?
        words == words.upcase
      end
    end
    
    bob = Person.new(LackadaisicalTeenagerAnswerPolicy)
    
    puts bob.respond('meh')
    
  • 因为经常要保存,已经自己写了 map:

    nnoremap <leader>w :update<CR>
    
  • 把"确认退出系统吗?"这个提问直接删掉更好 - -. 除非当前页面上有需要保存的工作成果,那么提醒一下用户还有点意义。否则这种提示只是在制造操作上的麻烦。

  • 猜测主要还是编辑器的问题。找个保存文件时能选择编码的编辑器,保存时注意选上 utf-8, 和开头的注释里写的 # encoding: utf-8 保持一致。

  • #27 楼 @jjym 见前面 #6 楼 我发的自己的配置~搜 mouse 可以找到一系列鼠标相关的配置。虽然我自己从来不用 - -

  • 因为 def 是关键字。irb 在解析这一行输入时以为你还没写完。把 def 这一组 key-value 拿掉就支持了...