小编sig*_*god的帖子

Angular.js:$ eval如何工作?为什么它与vanilla eval不同?

我很好奇$scope.$eval你经常在指令中看到你,所以我查看了源代码,发现以下内容rootScope.js:

  $eval: function(expr, locals) {
    return $parse(expr)(this, locals);
  },
Run Code Online (Sandbox Code Playgroud)

$parse似乎是由ParseProviderin 定义的parse.js,它似乎定义了它自己的某种迷你语法(文件长900行).

我的问题是:

  1. 究竟在$eval做什么?为什么它需要自己的迷你解析语言?

  2. 为什么不使用普通的旧JavaScript eval

angularjs

148
推荐指数
2
解决办法
12万
查看次数

在JavaFx标签或文本中将文本的一部分加粗

在我的JavaFx应用程序中,我需要在整个句子中用粗体字表示一两个字.目前,句子呈现为JavaFx标签,但升级组件也不允许我将文本设置为以便我可以将单词"Sample"以粗体显示.

String s = "This is a <b>Sample</b> sentence"
Label label = new Label(s);
Run Code Online (Sandbox Code Playgroud)

产量

This is a Sample sentence

JavaFx Text也不允许这样做.是否有任何组件,我可以用粗体表示部分文本?

我不确定JavaFx WebView是否适合在窗口中渲染许多小句子.

javafx javafx-2

31
推荐指数
3
解决办法
4万
查看次数

RESTful授权

我正在Rails中为现实世界组织的成员构建一个基于社区的站点.我正在努力坚持RESTful设计的最佳实践,而且大多数都是或多或少地通过书本.使我的大脑在整洁的RESTful圈子中运行的问题是授权.身份验证是一个容易,长期解决的问题,广泛接受的RESTful解决方案,但RESTful授权似乎有点黑色艺术.我正在尝试找到这样一种方法,它将提供最通用和灵活的框架来控制对资源的访问,同时尽可能简单,同时符合RESTful架构.(还有一匹小马.)

注意事项:

  1. 我需要控制对各种资源的访问,例如用户,页面,帖子等等.
  2. 对于给定资源的授权必须比简单CRUD更精细.
  3. 我希望允许自己和他人在应用程序中编辑授权规则.
  4. 应允许授权规则依赖于谓词,例如(概念上)所有者(用户,资源)或锁定(主题)

考虑(2)是最让我担忧的问题.在我的权限概念和RESTful动作概念之间似乎存在阻抗不匹配.例如,选择帖子(如留言板).REST指示在Post资源上存在四个操作:创建,读取,更新和删除.很容易说用户应该能够更新自己的帖子,但只允许某些用户(或角色或组)锁定它们.表示锁定的传统方式在Post的状态内,但是这会导致在相同条件下的用户可能或可能无法根据他提供的(完全有效)值更新帖子的气味.对我来说,似乎有两种不同的行动来改变邮政的状态,

(我应该注意,这个问题与由于无效或不一致的数据导致更新失败的问题截然不同- 来自非特权用户的锁定请求原则上非常有效,简单地不允许.)

腐烂不是分解另一个词吗?

这可以通过分解Post来克服:一个Lock是一个特定帖子的子资源,而Create或Destroy一个可能具有单独的权限.这个解决方案具有REST环,但它带来了理论和实践方面的困难.如果我将锁定分解出来,那么其他属性呢?假设我完全决定只允许一名管理员修改帖子的标题?然后,授权的简单更改需要重组数据库以适应它!这不是一个解决方案.为了在分解策略下允许这种灵活性,需要每个属性都是资源.这有点进退两难.我的隐含假设是资源在数据库中表示为表.在这个假设下,每个属性的资源表示每个属性的表.显然,这是不切实际的.但是,要消除这种假设会导致表和资源之间的阻抗不匹配,这可能会打开它自己的蠕虫病毒.使用这种方法需要比我给出的更深入的考虑.一方面,用户合理地希望能够一次编辑多个属性.请求在哪里?到包含所有属性的最小资源?并行地对每个单独的资源?到月球?使用这种方法需要比我给出的更深入的考虑.一方面,用户合理地希望能够一次编辑多个属性.请求在哪里?到包含所有属性的最小资源?并行地对每个单独的资源?到月球?使用这种方法需要比我给出的更深入的考虑.一方面,用户合理地希望能够一次编辑多个属性.请求在哪里?到包含所有属性的最小资源?并行地对每个单独的资源?到月球?

其中一些东西不像其他东西......

假设我没有分解属性.然后,替代方案似乎是为每个资源定义一组权限.然而,在这一点上,REST的同质性已经丧失.为了定义资源的访问规则,系统必须具有该资源功能的特定知识.此外,现在不可能一般地将权限传播给后代资源 - 即使子资源具有相同名称的特权,特权之间也没有固有的语义连接.在我看来,定义类似REST的标准权限集是两个世界中最糟糕的,所以我对每种类型的资源都会遇到单独的权限层次结构.

好吧,我们做了鼻子.还有帽子.但这是一种资源!

我看到的一个建议减轻了上述方法的一些缺点,即将权限定义为资源上的create/delete 和属性的读/写.该系统是属性 - 资源和每资源特权之间的折衷:一个仍然只有CRUD,但为了授权,读取和更新属于属性,可以将其视为伪资源.这提供了属性 - 资源方法的许多实际好处,尽管概念完整性在某种程度上受到了损害.权限仍然可以从资源传播到资源,从资源传播到伪资源,但绝不会从伪资源传播.我还没有充分探讨这一战略的后果,但似乎它似乎很有希望.在我看来,这样的系统最适合作为模型的组成部分.例如,在Rails中,它可能是一个改进版ActiveRecord.这对我来说似乎相当激烈,但授权是如此根本的交叉关注,这可能是合理的.

哦,不要忘记小马

所有这些都忽略了预测权限的问题.显然,用户应该能够编辑自己的帖子,但没有其他人的帖子.同样显然,管理员编写的权限表不应该为每个用户分别记录.这几乎不是一个罕见的要求 - 诀窍是使它成为通用的.我认为我所需要的所有功能都可以通过仅使规则具有预测性来获得,从而可以快速且立即地确定规则的适用性.规则" allow User write Post where Author(User, Post)"将转换为" for all User, Post such that Author(User, Post), allow User write Post"和" deny all write Post where Locked(Post)"转换为" for all Post such that Locked(Post), deny all write Post".(这将是伟大的如果所有这些谓词都可以用一个用户和一个资源来表达.)概念上得出的"最终"规则将是非预测性的.这提出了如何实现这样一个系统的问题.谓词应该是Model类的成员,但我不确定如何在规则的上下文中优雅地引用它们.要安全地这样做需要某种反思.在这里我再次感觉这将需要改进Model实现. …

architecture permissions rest authorization

25
推荐指数
1
解决办法
7023
查看次数

VK Oauth:安全错误

我正在尝试授权我的独立应用程序.但是在我单击"允许"后,它总是重定向到http://oauth.vk.com/error?err=2并将其作为响应主体给出:

{"error":"invalid_request", "error_description":"Security Error"}
Run Code Online (Sandbox Code Playgroud)

这是请求URL(我有正确的client_id):

https://oauth.vk.com/authorize?client_id=...&scope=messages,offline&redirect_uri=https://oauth.vk.com/blank.html&display=page&v=5.37&response_type=token
Run Code Online (Sandbox Code Playgroud)

看来我已经尝试了一切:

  • 打开和关闭应用程序
  • 传递scope为位掩码
  • URI编码一些参数以具有正确的URL
  • 等等

oauth oauth-2.0 vk

10
推荐指数
1
解决办法
5728
查看次数

在D中将临时字符数组转换为字符串

我正在学习D语言(我很熟悉C++)...我想做一些Windows特定的东西,所以我写这个只是为了试用API:

import core.sys.windows.windows;
import std.stdio;

string name()
{
    char buffer[100];
    uint size = 100;

    GetComputerNameA(&buffer[0], &size);

    return buffer;
}

void main()
{
    writeln(name());
}
Run Code Online (Sandbox Code Playgroud)

我收到了回复声明:

test.d(11): Error: cannot implicitly convert expression (buffer) of type char[100] to string
Run Code Online (Sandbox Code Playgroud)

好吧,在C++中,它会调用构造函数来创建一个字符串.它表示隐式,所以让我们用C样式转换:return (string)buffer;.

test.d(11): Error: C style cast illegal, use cast(string)buffer
Run Code Online (Sandbox Code Playgroud)

好的,我记得,语法不同.

return cast(string)buffer;
Run Code Online (Sandbox Code Playgroud)

现在它编译但我只是垃圾.

我认为那是因为它将字符串中的指针存储到临时缓冲区.我不想这样做,我想把字符复制成一个字符串,但我很烦人,我似乎无法找到如何做到这一点?

所以问题:

  1. 如何从正确分配存储的char数组构造实际字符串?(复制字符)

  2. 像这样分配一个随机大小的缓冲区并转换为字符串似乎很难看.在D中有没有正确的方法呢?(我正在谈论一般性问题,不是专门针对此API,以防万一有另一个API来获取计算机名称).

  3. 如果在手册中回答了其中任何一个,我应该在哪里查找详细信息?

感谢您的帮助和建议.

d

8
推荐指数
2
解决办法
681
查看次数

java中的HashMap克隆实用程序

是否有java实用程序clone()HashMap这样做的方法,它不仅复制地图元素的地图对象(如clone()HashMap类中)?

java

7
推荐指数
1
解决办法
2万
查看次数

Twitter oauth请求令牌响应代码401

我正在使用twitter oauth登录.但是,当我执行request_token第一步时,响应代码始终返回401 Unauthorized.

我已经搜索了一周,但我找不到解决方案,请帮助.

这是我的联系:

URL url = new URL("https://api.twitter.com/oauth/request_token");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestProperty("Host","api.twitter.com");
conn.setRequestProperty("Authorization", data);
conn.setRequestMethod("POST");
conn.connect();
Run Code Online (Sandbox Code Playgroud)

对于我的数据:

String data = "OAuth oauth_nonce=\"" + oauth_nonce
    + "\", oauth_callback=\"" + oauth_callback
    + "\", oauth_signature_method=\"" + oauth_signature_method
    + "\", oauth_timestamp=\"" + oauth_timestamp
    + "\", oauth_consumer_key=\"" + oauth_consumer_key
    + "\", oauth_signature=\"" + oauth_signature
    + "\", oauth_version=\"" + oauth_version + "\"";  
Run Code Online (Sandbox Code Playgroud)

另外,我确信我的签名是正确的,因为我使用了twitter示例的参数,我可以计算与其示例相同的结果,所以我认为我的方法是正确的.

这是我的计算:

String oauth_para = "oauth_callback=" + oauth_callback
    + "&oauth_consumer_key=" + oauth_consumer_key
    + "&oauth_nonce=" + oauth_nonce
    + …
Run Code Online (Sandbox Code Playgroud)

twitter oauth request token

7
推荐指数
1
解决办法
1万
查看次数

无法创建目录'/home/username/.ssh'

Git突然停止为我工作.(我在Windows 7下使用Git Bash.我没有使用Cygwin.)

每次我试图拉或推它说:

Could not create directory '/home/sigod/.ssh'

我的SSH密钥位于C:\Users\sigod\.sshHOME设置为/c/Users/sigod.哪个应该根据各种 SO 问题工作.

如果我将SSH密钥放入,C:\Program Files\Git\home\sigod\.ssh那么Git将再次开始工作.但是如何在没有肮脏解决方案的情况下使其工作

windows git ssh bash

7
推荐指数
2
解决办法
2万
查看次数

如何创建一个空的切片

如何[]const []const u8在不使用分配器的情况下构建?

我可以

var slice: []const []const u8 = undefined;
slice.len = 0;
// use slice
Run Code Online (Sandbox Code Playgroud)

但肯定有更好的方法。

zig

7
推荐指数
1
解决办法
2147
查看次数

Hibernate使用带有条件的别名

说实话,我对别名有点困惑,所以我希望有人可以帮助我更好地理解它们.为了解释我所缺少的内容,我将使用示例.

让我们说我有:

Criteria criteria = session.createCriteria(Car.class)
criteria.createAlias("doors", "doors");
Run Code Online (Sandbox Code Playgroud)

这意味着现在我可以使用一些Restrcitions来找到Car沿着这些线的左侧或其他东西的门.

现在我的问题是,如果我在哪里添加多个别名:

criteria.createAlias("doors", "doors").createAlias("doors.keytype", "keytype");
Run Code Online (Sandbox Code Playgroud)

criteria.createAlias("tier".tier);
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我的criteria对象有所有这些别名?在哪种情况下,getAlias()方法会返回什么?

来自API:

获取此条件实例封装的实体的别名.

我的印象是所有的别名都被这个实例封装了?我错了吗?我不知何故失去了我的第一个别名?

如果我做的事情如下:

Criteria criteri2 = criteria.createAlias("tier".tier);
Run Code Online (Sandbox Code Playgroud)

这是否意味着两者criteriacriteria2点都相同Criteria或差异,哪一个指向别名?

如果每个都createAlias返回一个Criteria应该我分配给原始criteria或新的?

好吧,我希望你能看到我的困惑.

alias hibernate criteria

6
推荐指数
1
解决办法
2万
查看次数