假设我有这样的多态结构.
map.resources :bar, :has_many => :foo
map.resources :baz, :has_many => :foo
map.resources :qux, :has_many => :foo
class Foo
belongs_to :parent, :polymorphic => true
end
class FooController < AC
before_filter :find_parent
...
private
def find_parent
# ugly way:
@parent = if params[:bar_id]
Bar.find(params[:bar_id])
elsif params[:baz_id]
Baz.find(params[:baz_id])
elsif params[:qux_id]
Qux.find(params[:qux_id])
end
end
end
Run Code Online (Sandbox Code Playgroud)
那太难看了.每当我们添加一个它可能属于的新东西时,我们需要将它非干扰地添加到before_filter.
它也变得更糟.假设Foos 真的是可以在任何地方出现的多态事物,比如评论或标签.并假设您有以下路线:
map.resources :bar, :has_many => :foo do |bar|
bar.resources :baz, :has_many => :foo
end
map.resources :qux, :has_many => :foo do |qux|
qux.resources :baz, :has_many => :foo …Run Code Online (Sandbox Code Playgroud) 假设我有以下HTML:
<div id="test">
<span style="display:inline;">foo</span>
<span style="display:none;">bar</span>
<span style="display:inline;">baz</span>
</div>
Run Code Online (Sandbox Code Playgroud)
.. JavaScript中有什么办法让我获取输出“ foo baz”(不是“ foo bar baz”)吗?
$('test').textContent返回后者,并innerHTML执行等效操作。
我根本不在乎所使用的方法是hackhack还是环形交叉路口,如果它是特定于浏览器的或需要Flash,则可以对其进行处理。
但是,除了JS或Flash之外,它不需要其他任何内容,不需要任何用户交互,并且它不得返回“ bar”。
有想法吗?
我有一个大表(站点)有几个数字列 - 比如说a到f.(这些是来自不同组织的网站排名,例如alexa,google,quantcast等.每个都有不同的范围和格式;它们是来自外部数据库的直接转储.)
对于许多记录,这些列中的一个或多个为空,因为外部DB没有数据.它们都涵盖了我的数据库的不同子集.
我希望列t是它们的加权平均值(每个a..f都有我赋予的静态权重),忽略空值(可以出现在任何一个中),除非它们全部为空,否则为null.
我更喜欢用简单的SQL计算来做这件事,而不是在应用程序代码中使用它,或者使用一些巨大的丑陋嵌套if块来处理每个空值的排列.(鉴于我添加了更多的外部数据库源,我的平均列数越来越多,这将是指数级更难看和容易出错的.)
我会使用AVG,但这仅适用于分组,而且这是一个记录中的w /.数据在语义上可以为空,我不想平均一些"平均"值代替空值; 我想只计算数据所在的列.
有没有办法做到这一点?
理想情况下,我想要的是像UPDATE sites SET t = AVG(a*@a_weight,b*@b_weight,...)任何空值被忽略并且没有发生分组的情况.
编辑:我最终使用的,基于van's并添加正确的加权平均值(假设a已根据需要进行了规范化,在本例中为浮点数0-1(1 =更好):
UPDATE sites
SET t = (@a_weight * IFNULL(a, 0) + ...) / (IF(a IS NULL, 0, @a_weight) + ...)
WHERE (IF(a IS NULL, 0, 1) + ...) > 0
Run Code Online (Sandbox Code Playgroud) 我想使用google ruby API客户端进行相当于例如此API资源管理器调用.
这应该是简单的:
require 'rubygems'
require 'google/api_client'
require 'httpadapter/adapters/net_http'
@client = Google::APIClient.new(
:key => MY_SIMPLE_API_SERVER_KEY,
:host => 'www.googleapis.com',
:http_adapter => HTTPAdapter::NetHTTPAdapter.new,
:pretty_print => false
)
@plus = @client.discovered_api('plus', 'v1')
status, headers, body = @client.execute(
@plus.people.list_by_activity,
'activityId' => 'z12nspyxxufislit423eex442zqpdtqnk',
'collection' => 'plusoners',
'maxResults' => '100',
'authenticated' => 'false'
)
public_activity = JSON.parse(body[0])
Run Code Online (Sandbox Code Playgroud)
但是,这个execute电话会导致ArgumentError: Missing access token.
我不希望登录用户; 我只想访问公共数据.我该怎么做呢?
一些未声明的变量为零,有些则抛出错误.怎么会?
$ irb
1.9.3p0 :001 > asdf # local
NameError: undefined local variable or method `asdf' for main:Object
from (irb):1
from /Users/saizai/.rvm/rubies/ruby-1.9.3-p0/bin/irb:16:in `<main>'
1.9.3p0 :002 >@asdf # instance
=> nil
1.9.3p0 :003 >@@asdf # class
NameError: uninitialized class variable @@asdf in Object
from (irb):3
from /Users/saizai/.rvm/rubies/ruby-1.9.3-p0/bin/irb:16:in `<main>'
1.9.3p0 :004 > $asdf # global
=> nil
Run Code Online (Sandbox Code Playgroud) 我在rails 3.2.6中有两个类:
self.table_name为bar_foos)当我进入控制台时,我得到:
> Bar::Foo
=> Bar::Foo(id: ...)
> Foo # or ::Foo
LoadError: expected models/bar/foo.rb to define Foo
Run Code Online (Sandbox Code Playgroud)
怎么了?
眼镜:
问题:
相关链接:
BitTorrent协议不指定块(块)大小。这是留给用户的。(我见过相同内容的不同 torrent 有 3 个或更多不同的选择。)
\n我正在考虑提交BitTorrent 增强提案,该提案需要为整个 torrent 以及单个文件(其中BTv2 (BEP 52))强制指定特定的块大小 \xe2\x80\x94指定 bs=16KiB)强制指定特定的块大小 \xe2\x80\x94 。
\n我发现唯一接近的是 rsync 块大小算法Tridgell & Mackerras 技术论文中的 rsync 块大小算法中的 rsync 块大小算法。它们的 bs=300-1100 B(# 字节不是 2 的幂)。
\n然而,Torrent通常 使用bs=64kB\xe2\x80\x9316MB(# bytes 是 2 的幂,比 rsync 大得多)(对于 BTv2,文件使用 16KiB)。
\n指定的块大小不需要是常量。当然,它可能是事物散列大小的函数(就像 rsync 中的那样)。它也可以是文件类型的函数;例如,可能有一些块大小更适合使部分视频/存档/等文件更可用。
\n\n所以\xe2\x80\xa6
\n我想做类似以下的事情:
class String
def fancy_thing appendix
# Just a trivial example to ensure self and params work.
# Pretend this is something complex.
self.reverse + appendix
end
end
# print_method on instance or class should spit out a string
# containing the actual code for that method
ft_code = "cob".print_method :fancy_thing
ft_code = String.print_instance_method :fancy_thing
# => "{|appendix| self.reverse + appendix }" *
# ft_code gets passed around a bit...
# exec on an object should run code (w/ parameters) …Run Code Online (Sandbox Code Playgroud) css ×2
ruby ×2
activerecord ×1
bittorrent ×1
exec ×1
fonts ×1
google-api ×1
google-plus ×1
innerhtml ×1
javascript ×1
jquery ×1
mysql ×1
namespaces ×1
routes ×1
routing ×1
rsync ×1
sql ×1