我需要在向API发送请求时对客户端进行身份验证.客户端有一个API令牌,我正在考虑使用标准Authorization头将令牌发送到服务器.
通常,此标头用于Basic和Digest身份验证.但我不知道是否允许自定义此标头的值并使用自定义身份验证方案,例如:
Authorization: Token 1af538baa9045a84c0e889f672baf83ff24
Run Code Online (Sandbox Code Playgroud)
你会推荐这个吗?或者是否有更好的方法来发送令牌?
我有一个用XHTML 1.0 Strict编码的站点.我想使用新的Microdata为我的网站添加面包屑(因此Google会理解它们).
我的旧的非微数据标记面包屑看起来像这样:
<ul>
<li><a href="...">Level 1</a></li>
<li><a href="...">Level 2</a></li>
<li><a href="...">Level 3</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
据谷歌称,要使用Microdata标记面包屑,你可以像这样扩展上面的代码:
<ul>
<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
<a href="..." itemprop="url">
<span itemprop="title">Level 1</span>
</a>
</li>
...
</ul>
Run Code Online (Sandbox Code Playgroud)
但这不是有效的XHTML 1.0 Strict.
我该怎么办?
我应该忽略验证冲突吗?
我应该写itemscope="itemscope"而不是只是itemscope(这将是有效的XML,但仍然无效的XHTML)?
我应该将Doctype更改为HTML5而不是XHTML 1.0 Strict吗?
我想让它一直回到IE6!
请指教 :)
我无法让git完成在zsh shell中新安装的OS X Yosemite上工作.我已经使用自制软件安装了git和zsh:
brew install zsh git
Run Code Online (Sandbox Code Playgroud)
当通过自制软件安装git时,它应该为你设置tab-completion,但是当我git <tab>,它只是尝试tab-complete目录,而不是git-commands.即它没有给出任何错误 - 它只是没有工作 - 就像它没有设置.
显然,zsh会通过查找_*其中一个目录中的文件来寻找自动完成的方法$fpath.这是我的:
% echo $fpath
/usr/local/share/zsh/site-functions /usr/local/Cellar/zsh/5.0.6/share/zsh/functions
Run Code Online (Sandbox Code Playgroud)
看看我们看到的第一条路径:
% ls -l /usr/local/share/zsh/site-functions
lrwxr-xr-x 1 watson admin 55 Oct 20 12:08 _git -> ../../../Cellar/git/2.1.2/share/zsh/site-functions/_git
lrwxr-xr-x 1 watson admin 70 Oct 20 12:08 git-completion.bash -> ../../../Cellar/git/2.1.2/share/zsh/site-functions/git-completion.bash
Run Code Online (Sandbox Code Playgroud)
所以似乎设置开箱即用 - 但事实并非如此.
source git-completion.bash这种工作(即它启用自动完成),但它会打印一个警告:
WARNING: this script is deprecated, please see git-completion.zsh
Run Code Online (Sandbox Code Playgroud)
因此,由于上述警告,我显然也尝试下载git-completion.zsh并按照文件顶部的指南进行操作,但它基本上会告诉您首先获取.bash文件,这是导致错误的原因.
我在这里和谷歌上搜索了我能找到的所有东西,但似乎没有什么对我有用.
在Rails中路由资源时,可选的format属性会自动附加到生成的路由中.这样可以将所讨论的资源请求为XML,HTML等.实际允许的格式通常在控制器中使用respond_to.
但在许多情况下,您只想支持HTML,并且respond_to :html在每个控制器中的每个操作中写入感觉都是一种开销.因此,如果在routes.rb文件中构建路由时已经有限制允许内容类型的方法,那将是很酷的,例如
map.resources :users, :formats => :html
map.resources :users, :formats => [:html, :xml]
map.resources :users, :formats => {:index => :html, :show => [:html, :xml]}Run Code Online (Sandbox Code Playgroud)
有没有办法实现本机或通过插件?
PS解决此问题的常用方法是忽略该问题,不要respond_to在操作中使用.但这实际上并不限制允许的内容类型.相反,它只是期望视图目录中存在每种可能的内容类型的模板.如果在请求时不存在,则系统将抛出HTTP 500错误.
如果您joins在ARel范围内使用,则结果将变为只读(即您无法更新您获得的任何记录).如果您不希望结果是只读的,那么您只需链接readonly(false)到范围,例如
User.joins(:orders).where(:orders => { :state => 'completed' }).readonly(false)
但我猜测默认的连接范围是只读的有一个原因.将结果设置为只读的原因是什么?
MongoDB有时会返回lastErrorObject- 而且据我所知,这是它的架构:
{
updatedExisting: <boolean>,
upserted: <boolean>,
n: <num>,
connectionId: <num>,
err: <string>,
ok: <num>
}
Run Code Online (Sandbox Code Playgroud)
但是mongodb.org网站上我唯一可以找到对该对象的引用的地方就在findAndModify API文档中.
但我无处可寻找对象的不同属性的任何解释.我可以做出有根据的猜测,但即使我从文档中得到的结论也似乎与它自相矛盾.例如upserted,根据findAndModify应该是一个布尔值,但显然也可以是一个ObjectId.
什么是ok?它似乎1大部分时间 - 但它不是布尔值,所以它可以是2什么,这是什么意思?
尽管某些属性可能非常明显,但请在答案中为每个属性写一个解释,以便每个人都有100%的文档记录.或者,如果我错过了它(它发生),请随时链接到解释这个的文档;)
我有一个帐户模型和一个用户模型:
class Account < ActiveRecord::Base
has_many :users
end
class User < ActiveRecord::Base
belongs_to :account
endRun Code Online (Sandbox Code Playgroud)
用户属于某个帐户,并且帐户具有用户最大值(每个帐户不同).但是,如何在向帐户添加新用户时验证是否未达到此最大值?
首先,我尝试在用户上添加验证:
class User < ActiveRecord::Base
belongs_to :account
validate :validate_max_users_have_not_been_reached
def validate_max_users_have_not_been_reached
return unless account_id_changed? # nothing to validate
errors.add_to_base("can not be added to this account since its user maximum have been reached") unless account.users.count < account.maximum_amount_of_users
end
endRun Code Online (Sandbox Code Playgroud)
但这只有在我一次添加一个用户时才有效.
如果我通过@account.update_attributes(:users_attributes => ...)它添加多个用户,即使只有一个用户的空间,也可以直接通过.
更新:
只是为了澄清:当前验证方法验证account.users.count小于account.maximum_amount_of_users.例如,比如说account.users.count是9并且account.maximum_amount_of_users是10,那么验证将通过,因为9 <10.
问题是,在account.users.count所有用户都写入数据库之前,返回的计数不会增加.这意味着同时添加多个用户将通过验证,因为用户计数将一直相同,直到它们全部经过验证.
正如askegg指出的那样,我是否应该在帐户模型中添加验证?那怎么办呢?
我想将一个独立版本的GraphicsMagick gm二进制文件与一个应用程序捆绑在一起,这样我就不必在运行应用程序的服务器上构建和安装GraphicsMagick库.
我正在创建一个构建系统,它可以生成一个包含整个node.js应用程序的tar-ball,包括所有二进制依赖项(在我们的例子中是node二进制文件和GraphicsMagick库).然后它将其上传到服务器,提取并运行它.
我试图用预先编译的gm二进制文件发送它,但正如预期的那样gm取决于几个库,所以我得到的错误就像gm: error while loading shared libraries: libGraphicsMagick.so.3: cannot open shared object file: No such file or directory.
我在本地运行OSX,我们的服务器运行Ubuntu.
从nodejs 源代码(LOC 179),我们有以下内容:
EventEmitter.prototype.once = function(type, listener) {
/** ... **/
function g() { /** ... **/ }
g.listener = listener; // => ???
this.on(type, g);
return this;
};
Run Code Online (Sandbox Code Playgroud)
到目前为止,我的想法是这样的:
EventEmitter.once()设置一个事件type并listener在通过调用回调后立即将其删除g().但这条生产线究竟做了g.listener = listener;什么呢?
它是否在调用时添加了一个属性listener,该属性是构造函数创建的函数对象的函数g()?
划分两个IEEE 754浮点数的最安全的方法是什么?
就我而言,语言是JavaScript,但我想这并不重要.目标是避免正常的浮点陷阱.
我已经读过,人们可以使用"修正系数"(cf)(例如10提升到某个数字,例如10 ^ 10),如下所示:
(a * cf) / (b * cf)
Run Code Online (Sandbox Code Playgroud)
但我不确定这会对分裂产生影响吗?
顺便说一下,我已经看过Stack Overflow上的其他浮点帖子了,我还没有找到关于如何划分两个浮点数的单一帖子.如果答案是在添加和分割时解决浮点问题的解决方案之间没有区别,那么请回答一下.
编辑:
我在评论中已经被问到我所指的哪些陷阱,所以我想我也会在这里为那些没有阅读评论的人添加快速说明:
当加0.1和0.2时,你会得到0.3,但是使用浮点运算得到0.30000000000000004(至少在JavaScript中).这只是常见陷阱的一个例子.
上面的问题在Stack Overflow上讨论了很多次,但我不知道分割时会发生什么,如果它与添加或乘法时发现的陷阱不同.可能没有风险,在这种情况下,这将是一个非常好的答案.
activerecord ×2
javascript ×2
node.js ×2
rest ×2
validation ×2
api ×1
arel ×1
breadcrumbs ×1
build ×1
content-type ×1
deployment ×1
git ×1
homebrew ×1
html5 ×1
http ×1
http-headers ×1
ieee-754 ×1
math ×1
microdata ×1
mongodb ×1
routing ×1
ubuntu ×1
zsh ×1