我必须根据他/她的连接速度做出关于内容权重的动态决定发送给客户端.
也就是说:如果客户端使用的是具有3G(或更慢)连接的移动设备,我会向他/她发送轻量级内容.如果他/她使用WiFi或更快的连接,我会向他/她发送完整的内容.
我试图测量重新加载之间的时间,向客户端发送一个标题Location: myurl.com(有关客户端的一些信息以识别它).这适用于桌面浏览器和一些完整的移动浏览器(如Obigo),但它不适用于迷你(代理)浏览器,如Opera Mini或UCWeb.这些浏览器返回我的服务器和代理服务器之间的连接时间,而不是移动设备.
如果我尝试使用<meta>标记或Javascript 重新加载页面,也会出现同样的情况document.location.
有没有办法发现或测量客户端连接的速度,或者他/她是否使用3G或WiFi等,这适用于迷你浏览器(即,我可以识别通过迷你浏览器的慢速连接)?
我正在设计一个新的Web项目,在研究了一些旨在实现可伸缩性的选项之后,我想出了两个数据库解决方案:
我不相信当前共享主机上的MySQL服务器,因为它经常出现故障(我在其他主机上也遇到了MySQL问题).出于同样的原因,我不喜欢使用postgres.
SQLite的优点:
MongoDB的优点:
我想帮助做出决定(也许可以考虑第三种选择).当写入和读取操作正在增长时,哪一个更好?
我打算用Ruby.
我有一个代码,我需要在其中使用eval.有时我需要退出eval代码,但我的尝试会导致错误.
例如:
# expected to see 1, 2 and 5; not 3 nor 4; and no errors
eval "puts 1; puts 2; return; puts 3; puts 4" # => Error: unexpected return
puts 5
Run Code Online (Sandbox Code Playgroud)
我试着用return,end,exit,break,,我不能得到成功.exit不会引起错误,但是我没有得到5.
(注意:我知道这eval是邪恶的,但在这种情况下我需要使用它.)
我是AWS的新手,它有很多产品(EC2,负载均衡器,EBS,S3,SimpleDB等),还有很多文档,我无法弄清楚我必须从哪里开始.
我的目标是为可扩展性做好准备.
假设我想建立一个简单的网络服务器,它访问mongolab中的数据库.我想我需要一个EC2实例来运行它.此时,我还需要更多东西(EBS,S3等)吗?
在某些时候,我的应用程序已达到足够的流量,我必须扩展它.我正在考虑启动我的EC2机器的新副本(实例).但是它会有另一个IP.那么,如何在两个EC2实例之间分配流量?那是自动的吗?我必须雇用Load Balancer服务来分配流量吗?那么我需要支付2个EC2实例和1个LB吗?此时,我还需要更多东西(例如:弹性IP)吗?
在这个答案我读过ppp.rb.它被称为"众所周知",但在谷歌上找不到任何相关信息.
我发现它很有趣,我已经调整它来构建我自己的caller_binding版本.
但是,据我所知,这是ppp.rb什么?"ppp"代表什么?我在哪里可以找到有关它的信息?
我正在寻找一种方法来获取本征类的实例,因为每个本征类只有一个实例.
我可以通过ObjectSpace来测试每个本征类,但我猜它很昂贵.
奇怪的是,我必须得到每个对象的本征类来测试匹配,因为is_a?这还不够:
class A; end
class B < A; end
AA = class << A; self; end
p A.is_a? AA #=> true
p B.is_a? AA #=> true!!!!
Run Code Online (Sandbox Code Playgroud)
我希望有一个Class#instance或Class#instances方法来获取类(或本征类)的实例.
最直接的方法是从特征类中提取实例inspect,但我想知道我是否可以依赖它:
p AA #=> #<Class:A>
instance = Object.const_get(AA.inspect.match(/^#<Class:(\w+)>$/)[1])
p instance #=> A
# (this works for class' eigenclass)
Run Code Online (Sandbox Code Playgroud)
我的用例是我必须得到类方法的类,但是Method#owner给了我本征类,并Method#receiver给了我当前的接收器:
# Continuing previous example
def A.f; end
mtd = B.method(:f)
p mtd.owner #=> #<Class:A>
p mtd.receiver #=> B
# I …Run Code Online (Sandbox Code Playgroud) ruby ×4
scalability ×2
amazon-ec2 ×1
connection ×1
core ×1
eigenclass ×1
eval ×1
instance ×1
mobile ×1
mongodb ×1
performance ×1
sqlite ×1