这与" 给定Ruby对象的实例,如何获取其元类? " 的问题相反.
您可以在默认to_s
输出中看到元类或单例类附加到的对象的表示:
s = "hello"
s_meta = class << s; self; end
s_meta.to_s # => "#<Class:#<String:0x15004dd>>"
class C; end
c_meta = class << C; self; end
c_meta.to_s # => "#<Class:C>"
Run Code Online (Sandbox Code Playgroud)
是否可以实现一个Class.attached
返回此对象的方法(如果接收者是常规类,则为nil)?
s_meta.attached # => s
c_meta.attached # => C
C.attached # => nil
Run Code Online (Sandbox Code Playgroud) 我正在研究将SHA1中的应用程序升级为默认的PKCS#7 SignedData摘要算法,以更强的摘要(如SHA256),以保留不支持SHA1以外的摘要算法的签名验证程序的向后兼容性.我想检查一下我对PKCS#7格式和可用选项的理解.
我想要做的是使用SHA1和SHA256(或更一般地说,一组摘要算法)消化消息内容,以便较旧的应用程序可以继续通过SHA1进行验证,并且升级的应用程序可以通过SHA256开始验证(更一般地说,提供最强的摘要),忽略较弱的算法.[如果有更好的方法,请告诉我.]
看来,在PKCS#7标准中,提供多个摘要的唯一方法是提供多个SignerInfos,每个摘要算法一个.不幸的是,这似乎会导致安全性的净减少,因为攻击者能够使用最弱的摘要算法剥离除SignerInfo之外的所有算法,而单独的摘要算法仍将形成有效的签名.这种理解是否正确?
如果是这样,我的想法是在SignerInfo的authenticatedAttributes字段中使用自定义属性为其他摘要算法提供额外的消息摘要(将SHA1保留为"默认"算法以实现向后兼容).由于此字段被认证为单个块,因此可以防止上述攻击.这似乎是一种可行的方法吗?有没有办法在不超出PKCS标准的情况下完成这个或类似的东西?
我有一个XML文档和关联的模式,它将几个属性定义为具有该xs:boolean
类型.对于词法值xs:boolean
是true
,false
,1
,和0
,因此它似乎正确地选择与特定的布尔值属性,我不得不写类似:
@attribute='true' or @attribute='1'
Run Code Online (Sandbox Code Playgroud)
要么
@attribute='false' or @attribute='0'
Run Code Online (Sandbox Code Playgroud)
这看起来很冗长.
你可能期望某些东西boolean(@attribute)
可以工作,但是这个boolean
函数有不同的语义.
有没有更好的办法?这是架构感知处理器可以帮助的东西吗?
假设我正在编写一个mixin模块,可以为第三方类添加功能.显然,我希望第三方类及其客户端可以访问一些方法和实例变量.这些构成了mixin模块的公共接口.
但我想要封装某些其他方法和实例变量.我不希望它们被我混入的类访问,特别是我不希望它们意外地覆盖,阴影,冲突或以其他方式干扰mixee类的方法或实例变量 - 这些如果第三方修改我正在混合的类,那么当前可能存在,或者将来可能创建的那些.
我需要采取哪些预防措施,以确保我的mixin以这种方式"卫生"?
是测试仪器为Android咖啡可在CircleCI 2.0吗?如果是,请有人帮我配置config.yml文件吗?我已经尝试了上千次,但是没有运气。我可以运行单元测试,但不能运行仪表。
谢谢
SQL Server 2005+
我有一个带INSTEAD OF INSERT
触发器的视图.在触发器的主体内部,我想使用带有OUTPUT
引用两个INSERTED
表的子句的语句:
INSERTED
表INSTEAD OF INSERT
INSERTED
该OUTPUT
子句的内部表MSDN 说:
如果在触发器主体内部使用包含OUTPUT子句的语句,则必须使用表别名来引用触发器插入和删除的表,以避免使用与OUTPUT关联的INSERTED和DELETED表重复列引用.
但别名似乎不起作用:
CREATE TRIGGER v_insert ON v
INSTEAD OF INSERT
AS BEGIN
INSERT INTO t (a, b, c)
OUTPUT inserted.a, inserted.b, outer_inserted.d INTO t_prime (a, b, d)
SELECT a, b, c
FROM inserted as outer_inserted
END
Run Code Online (Sandbox Code Playgroud)
它产生错误"多部分标识符"outer_inserted.d"无法绑定.这是否意味着我想要做的是不可能的?
在Rubinius源代码中,负责包含模块的代码是什么?(具体来说,将模块放置为对象类的超类.)
每当我尝试使用sudo gem install rmagick安装rmagick gem时,安装失败,当它试图包含一个名为wand/MagicWand.h的头文件时
日志文件中的确切错误是:
gcc -E -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0 -I. -I$MAGICK_HOME/include/ImageMagick -I/include/ImageMagick -fopenmp conftest.c -o conftest.i"
conftest.c:1:29: error: wand/MagickWand.h: No such file or directory
checked program was:
/* begin */
1: #include <wand/MagickWand.h>
/* end */
Run Code Online (Sandbox Code Playgroud)
$ MAGICK_HOME env变量设置为/usr/bin/imagemagick
它要查找的头文件/usr/bin/imagemagick/include/ImageMagick/wand/MagickWand.h
我试图按照这里的说明进行操作.我在运行Snow Leopard的Intel iMac上安装它.
ruby ×4
circleci ×1
circleci-2.0 ×1
cryptography ×1
hygiene ×1
magickwand ×1
mixins ×1
pkcs#7 ×1
rmagick ×1
rubinius ×1
sha1 ×1
sha256 ×1
sql-server ×1
triggers ×1
xpath ×1
xsd ×1