我们量小的时候用 QQ 企业邮箱,没有发生过服务器拒收情况,后来量大转用 Sendcloud 发国内配合 Mailgun 发国外,注意 sendcloud 发送 sina 会被拒收,不道是不是我们的个别情况
另外有个坑,Sendcloud 即使是收费用户每日也有配额,而且你不能通过花更多钱来提高,只能通过他文档里介绍的提高信用度来提高配额,然后半独立 ip 和独立 ip 要申请,不直接和他们团队沟通,根本申请不下来
另外最大的坑就是,sendcloud 因各种原因(超过配额、欠费)拒收之后 Rails 这端会给无厘头的异常 EOFError: end of file reached
遇到之后第一时间登录到 sendcloud 上检查配额余额之类的情况就好
class BaseMailer < ActionMailer::Base
abstract!
layout 'mailer'
default content_type: 'text/html',
reply_to: '[email protected]'
SMTP_SERVERS = {
white: {
from: 'KnewOne <[email protected]>',
delivery_settings: {
address: 'smtp.mailgun.org',
port: 25,
domain: 'knewone.com',
user_name: USERNAME,
password: PASSWORD,
authentication: 'plain',
enable_starttls_auto: true
}
},
default: {
from: 'KnewOne <[email protected]>',
delivery_settings: {
address: 'smtpcloud.sohu.com',
port: 25,
user_name: USERNAME,
password: PASSWORD,
authentication: 'login',
domain: 'sendcloud.org'
}
}
}
WHITES = %w(gmail.com ruby-china.org)
def mail(headers = {}, &block)
if self.delivery_method == :smtp
smtp_config = route_smtp_server(headers[:to])
m = super headers.merge(from: smtp_config[:from]), &block
m.delivery_method.settings.merge!(smtp_config[:delivery_settings])
m
else
super headers, &block
end
end
private
def route_smtp_server(email)
SMTP_SERVERS[(WHITES.include?(/.*@(.+)/.match(email)[1]) ? :white : :default)]
end
end
其实应该用 http://guides.rubyonrails.org/action_mailer_basics.html#intercepting-emails 来实现,不过当时顺手写的,懒得重构了
为啥不方便?添加 class 不是一个参数的事情么?
撸主是个萝莉控啊
rmbp 基本个人维修不能了,换一次屏 5.8k 没 apple care 基本可以考虑贴钱弄台新的了
app 在一个独立低权限用户跑 app 的代码放到该用户 home 里 log 放到挂载的/data 数据盘里
Concern 最好命名以 able 结尾~
我建议可以先试试接近 rails 风格的 play framework 然后再接触 rails,好处是先用熟悉的技术建立起 Rails 风格 MVC 的有关概念,然后再做技术的迁移
#72 楼 @xiongxin8802 可以参加每月组织一次的 SZRuby 聚会 @lyfi2003
#32 楼 @quakewang 了解了 那长微博我没读
#22 楼 @quakewang 老罗不懂的,发布会当晚 tombkeeper 在微博上说是老罗找他咨询给科技界基金捐款,然后推荐的 openssl,至于网站没上 https 应该是手下人的做法吧,客观的说这个应该跟吹牛关系不大
今天流量爆发刚搞完...早看到白天就不用花时间研究了 - -
感觉不同人学习能力有差异
同意解决问题比代码本身重要
提供一种可能的思路,把编程问题和熟悉的事务建立关联
支持,道理上是如此,但我认为这些内容都是对有经验的人来说的,但有经验的人往往有自己的方法了,总结的意义不大了...
对于新手或者刚入行的人来说,个人对各种经验总结都持悲观态度,试着逐一举反例
抓住主干,而非细节。 那么,什么是主干?什么是细节?你可以知道,但新手怎么能够知道,我们也可以告诉新手什么是主干什么是细节,但要做不同的事情主干和细节是不同的,前辈们真的有那么多精力么?比方说学写 Rails 可能很长一段时间都不需要自己亲自动手完成一个类,或者也几乎不需要操作各种 IO,但我想写一个统计代码行数的小脚本则反之了。
尽量不折腾 和 1 类似,什么叫折腾?对于新手,本身就是白纸一张,做任何事情都是“折腾”。而且相对来讲,做网站 NodeJs+MongoDB 组合对一个完全新手来说可能是最不折腾的了,因为只需要学习 JS 一门语言足矣。而且在基本 CRUD 上,是不可能遇到坑的,碰到“坑”完全是因为用错了。
尽量学习经典原理而不是浪费时间在细节上 原理、思想很重要,但是,一个实践不足的人能够理解他们么?此外,编程是极重实践的工作,任何思想最终都要化为一行行实实在在的编程语言的代码,思想和模式是提供思路的,语言的语法、特性、类库是解答问题的,两者分工不同
尽量学习形而下的系统而不过多上升到形而上的思想上 学习 C 语言就要随着 OS 学习,学习 OS 本身就是一个巨大的范畴了,数据结构、算法、汇编等等,而 C 只是因为历史原因采用其实现而已。 学习 Lisp 就随着编译器或分析器一起学习,抱歉不好举例,但个人认为编译器和分析器与 LISP 或者 HASKELL 之类函数式语言也无直接关系 学习 Ruby 或 Python 就跟着 web 开发来学习,至少 Python 在科学计算领域也有着很大的市场,Ruby 也在测试领域还有 PAAS 领域有着很重要的地位 上边每一个选择都是巨大的坑,彼此之间完全不相干 此外,通过某一类系统架构理解语言的优劣,优劣是通过对比得来的,也就是说,你要用 LISP 和 C 写操作系统,用 LISP、C 或者 Py、Rb 对比写编译器,用多种语言写 Web 对比后,才能说出优劣,这完全是实践出来的总结
我认为成长只有实践,走弯路很正常、感觉困惑也很正常,遇到了,停下来,反思、交流,我觉得这是个穷则思变的事情,各种经典书籍里记载的也不是真理,思考的原料、实践的方向而已,在瓶颈之前,不要想太多
#66 楼 @tangzhan_ 感谢! 过段时间会发布消息的
已经入手,等纸质版,再买一本留念
这种情况 mongodb 更容易解决,我们的流程是这样的
下一届办在哪里 保密 恩。。。
蹭饭!
恩 会去
#65 楼 @simlegate 至于怎么找到方法,原因则很复杂,运气、个人经历、知识积累、经验等等都有可能
另外就是,人是会随项目成长的。面对问题来解决问题,然后总结,什么样的问题是常见问题,什么是跟场景有关,Rails 其实就是前者常见问题解决方案的集合。