RFC2617表示将用户名和密码编码为base64,但没有说明在创建用于输入base64算法的八位字节时要使用的字符编码.
我应该假设US-ASCII或UTF8吗?或者有人已经在某处解决了这个问题?
我遇到了这个有用的提示,如果你正在处理很多文件而你希望它们自动构建,你可以运行:
看做
它会重新运行,每隔几秒就可以生成一些东西.
但是......它似乎总是吞下所有的输出.我认为它可能更聪明 - 也许显示输出流但是禁止为'all'做任何事情,这样如果没有构建,输出就不会滚动.
使用循环和grep可以想到一些shell脚本方法...但也许更优雅的东西呢?有人见过什么吗?
我最近创建了一个支持+, - 等操作的不可变类,它在更改时返回该类的新实例.
我想创建该类的子类来添加一些状态和功能,但现在我遇到了一个问题,即所有原始类的方法都返回自身的实例而不是子类.
基于我目前对Scala的有限知识,我可以想出这个:
class Foo(val bar:Int) {
def copy(newBar:Int) = new Foo(newBar)
def + (other:Foo):This = copy(this.bar + other.bar)
}
class Subclass(barbar:Int) extends Foo(barbar) {
override def copy(newBar:Int) = new Subclass(newBar)
override def + (other:Subclass) = super.+(other).asInstanceOf[Subclass]
}
Run Code Online (Sandbox Code Playgroud)
这里的问题非常明显 - 返回新实例的超类的所有操作都必须在子类中使用强制转换重新定义.
起初"this.type"似乎很有希望,但"this.type"只包含"this"而不包含任何其他相同类型的对象.
是否存在使不可变类易于子类化的标准模式?就像是:
class Foo(val bar:Int) {
def copy(newBar:Int):SameType = new Foo(newBar)
def + (other:Foo) = copy(this.bar + other.bar)
}
class Subclass(barbar:Int) extends Foo(barbar) {
override def copy(newBar:Int):SameType = new Subclass(newBar)
override def + (other:Subclass) = super.+(other).asInstanceOf[Subclass]
} …Run Code Online (Sandbox Code Playgroud) 我正在为Amazon S3访问创建专用用户,例如为第三方服务提供服务.帐户没有电子邮件地址或密码.我希望我能够使用aws命令行工具提取这些帐户的规范ID.
我读过的一种方法是使用他们的帐户创建一个存储桶,查看它的acl,然后从中提取规范ID,然后删除无用的存储桶并继续.
但是为了将来使用,有更简单的方法吗?
JAX-RS和JAX-WS非常适合生成API.但是,他们根本没有解决向后兼容问题.
为了避免在向API引入新功能时破坏旧客户端,您基本上必须接受并提供与之前完全相同的输入和输出格式; 如果找到一个不映射到任何东西的字段,或者类型错误,那么许多XML和JSON解析器似乎都很合适.
一些JSON库,例如Jackson和Gson,提供了一个功能,您可以根据运行时设置为给定对象指定不同的输入/输出表示,这似乎是处理许多情况的版本控制的合适方法.这使得可以通过添加添加和删除字段来提供向后兼容性,因此它们仅根据客户端使用的API的版本显示.
到目前为止,JAXB和我发现的任何其他XML数据绑定库都没有对这个概念提供相应的支持,因此无法为JSON和XML重用相同的注释.将它添加到JAXB-RI或EclipseLink Moxy似乎有可能,但令人生畏.
另一种版本控制方法似乎是对所有已更改的类进行版本化,通常是每次发布API时创建一个新包,并在新包中复制所有修改过的DTO,Service和Resource类,以便所有类型信息是为绑定和调度系统版本化的.这种方法对我来说似乎更加费力.
我的问题是:您是如何设计Jave API提供程序以实现向后兼容的?什么工作,什么没有?
关于该主题的案例研究或博客文章的链接非常感谢; 我做了一些谷歌搜索,但没有找到太多关于此的讨论.
我在Scala类型系统中遇到了某种怪癖,让我有点难过.我正在尝试创建一个扩展Map [String,String]的类,我无法弄清楚如何以编译器接受它的方式实现+方法.
这是我现在的代码:
class ParamMap(val pairs:List[(String,String)] = Nil) extends Map[String,String] {
lazy val keyLookup = Map() ++ pairs
override def get(key: String): Option[String] = keyLookup.get(key)
override def iterator: Iterator[(String, String)] = pairs.reverseIterator
/**
* Add a key/value pair to the map
*/
override def + [B1 >: String](kv: (String, B1)) = new ParamMap(kv :: pairs)
/**
* Remove all values for the given key from the map
*/
override def -(key: String): ParamMap = new ParamMap(pairs.filterNot(_._1 == key))
/**
* …Run Code Online (Sandbox Code Playgroud) 我遇到了这个错误.该应用程序似乎工作正常,但它导致Firebug停止脚本.
JSON.parse: unexpected character
Line 9 (all.js)
Run Code Online (Sandbox Code Playgroud)
有问题的行看起来像这样:
FB.provide('JSON',{stringify:function(a){if(window.Prototype&&Object.toJSON){return Object.toJSON(a);}else return JSON.stringify(a);},parse:function(a){return JSON.parse(a);},flatten:function(c){var a={};for(var b in c)if(c.hasOwnProperty(b)){var d=c[b];if(null===d||undefined===d){continue;}else if(typeof d=='string'){a[b]=d;}else a[b]=FB.JSON.stringify(d);}return a;}});
Run Code Online (Sandbox Code Playgroud)
我相信Firefox的内置JSON解析器会在该行定义的解析方法中引发异常.传递给解析的字符串如下所示:
"cb=f49f4551da8c7e&origin=http%3A%2F%2Flocalhost%3A9292%2Ff3726c758943f5&relation=parent&transport=postmessage&frame=f2b4bb038098548&code=2.AQ...fU&signed_request=_7hf...E3OCJ9&access_token=AAADj6D4s...ZDZD&expires_in=6650"
Run Code Online (Sandbox Code Playgroud)
显然这不是有效的JSON字符串,因此解析错误.
该字符串来自以某种方式使用xd_proxy.php传递的事件,上面的字符串是该iframe的URL上的哈希值.
我搜索了一下,没有看到任何有关此错误的有用信息.
scala ×2
amazon-s3 ×1
api-design ×1
base-class ×1
cross-domain ×1
facebook ×1
http ×1
inheritance ×1
jax-rs ×1
jax-ws ×1
jaxb ×1
json ×1
makefile ×1
soap ×1
types ×1
watch ×1