小编sli*_*eed的帖子

从Guava的Splitter创建一个String []

是否有更有效的方法从Guava的Splitter创建一个字符串数组而不是以下?

Lists.newArrayList(splitter.split()).toArray(new String[0]);
Run Code Online (Sandbox Code Playgroud)

java string guava

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

在颜色空间之间转换CGColors的正确方法

有几个问题要求在Apple平台上的颜色空间之间转换颜色.不幸的是,答案通常涉及NSColorUIColor- 不可移植的Objective-C类,不能在OS X和iOS上互换使用.

所以我想问一个非常具体的事情,我确信必须有一个很好的答案.我简直无法相信苹果公司不会预见到这一点.

如何只使用便携式核心图形功能,如何CGColor以通用方式将一种颜色空间(例如单色)转换为另一种颜色空间(例如RGB),支持所有CGColorSpace类型?


一些背景.我需要将在线服务提供的值乘以存储的值UIColor.在最终引入该方法的iOS5之前提取RGB组件的正确方法-[UIColor getRed:green:blue:alpha:]是使用CGColorGetComponents().然后,我将此颜色与从在线服务获取的颜色相乘.在+[UIColor grayColor]用于生成的情况下失败UIColor.意思是,我需要将颜色从灰度颜色空间转换为RGB.在这种情况下,这很容易.那提供的其他颜色空间怎么样?或者如果在理论上的未来情景中我只想处理单个像素的颜色呢?

有人建议我将一个像素绘制到位图上下文中然后读取这个像素.这是疯了,我希望这不是唯一的方法.显然,绘图方法可以弄清楚如何执行转换; 我们如何才能在不创建位图上下文的情况下利用它来仅绘制像素?


其他研究:

  • 关于颜色转换的这篇文章除了UIColor没有文档/私有方法之外-styleString,更有趣的是还提到了无证文件CGColorTransform.
  • WebKit的ColorCG.cpp建议有一个名为的标题CoreGraphics/CGColorTransform.h.不幸的是,这个标题不存在,至少在Mountain Lion上不存在.为什么Apple会隐藏这些API?
  • 我发现提到CGColorTransform的唯一其他敏感资源是FreeQuartz,这是Core Graphics的免费/开源重新实现.

向Apple提供雷达#12141580,打开并记录文件CGColorTransform.不过,我并没有屏住呼吸,所以如果有其他明智的建议,我全都听见了.

macos core-graphics colors cgcolorspace ios

26
推荐指数
2
解决办法
3247
查看次数

从节点转储v8 JIT输出

node.js(或其他v8接口或v8的包装器)可以从v8 JIT输出生成的程序集吗?

我想看看生成的程序集对于各种代码段的样子.

javascript jit v8 node.js

13
推荐指数
1
解决办法
3436
查看次数

如何绑定ko.observableArray字符串?

我正在尝试将ko.observableArray的字符串绑定到模板,但是我无法让模板获取数组中字符串中的更改.

如果我绑定一组对象而不是一组字符串,我会获得JSON的更新,但是在我实际更改第一个非数组值之前它们不会触发任何内容.但是,我更愿意找到一个字符串数组,因为我可以将数据模型直接发送回服务器而无需任何后处理.

如何触发我的字符串数组的更新,以及如何确保它们正确触发更改而无需更新非数组值?

如果无法绑定到可观察的字符串数组,那么在更新可观察数组中的对象时如何才能触发事件?

请参阅此处的示例:http://jsfiddle.net/gcEHC/2/

在此示例中,当value更改时,array3的数据将反映在模型中,但是对array1和array2的数据的更改将永远不会显示.

JS:

var ViewModel = function() {
    this.value = ko.observable("hi")
    this.array1 = ko.observableArray(["hi", "there"]);
    this.array2 = ko.observableArray([ko.observable("hi"), ko.observable("there")]);
    this.array3 = ko.observableArray([{ data: "hi" }, { data: "there" }]);
};

ko.applyBindings(new ViewModel());
Run Code Online (Sandbox Code Playgroud)

HTML:

<div class='liveExample'>   
    <p><input data-bind='value: value' /></p> 
    <div data-bind="foreach: array1">
        <p><input data-bind='value: $data' /></p> 
    </div>
    <div data-bind="foreach: array2">
        <p><input data-bind='value: $data' /></p> 
    </div>
    <div data-bind="foreach: array3">
        <p><input data-bind='value: data' /></p> 
    </div>
</div>

<pre data-bind="text: ko.toJSON($data)"></pre>
Run Code Online (Sandbox Code Playgroud)

knockout-2.0 knockout.js knockout-mvc

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

ZLIB输入流意外结束

我正在尝试使用DeflaterOutputStream将JSON字符串往返一个字节数组,但下面的代码是抛出的java.io.EOFException: Unexpected end of ZLIB input stream.

将字符串替换为"Hello world"时,或者从下面的字符串中删除一些字符时,它可以正常工作.

有任何想法吗?

public static void main(String[] args) throws IOException {
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    DeflaterOutputStream deflate = new DeflaterOutputStream(bytes, new Deflater(Deflater.BEST_COMPRESSION, true));
    OutputStreamWriter writer = new OutputStreamWriter(deflate);
    writer.write("[1,null,null,\"a\",null,null,null,null,[1,null,null,null,null,null,null,null,null,null,null,null,null,0.0,0.0,null,null]");
    writer.flush();
    writer.close();

    InflaterInputStream inflaterIn = new InflaterInputStream(new ByteArrayInputStream(bytes.toByteArray()), new Inflater(true));
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inflaterIn));
    System.out.println(bufferedReader.readLine());
}
Run Code Online (Sandbox Code Playgroud)

Java版本(OSX):

java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03-383-11A511)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02-383, mixed mode)
Run Code Online (Sandbox Code Playgroud)

java deflate

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

如何解包任意数量的嵌套选项类型?

我正在尝试写一个特性,这将允许我"解包"多个嵌套Option<Option<...<T>>>>到单个,Option<T>以更好地使用我正在使用的API.我正在尝试创建一个通用解决方案,但我无法弄清楚如何使其工作.

这是我的许多尝试之一:

trait UnwrapOption<T> {
    fn unwrap_opt(self) -> Option<T>;
}

impl<T> UnwrapOption<T> for Option<T> {
    fn unwrap_opt(self) -> Option<T> {
        self
    }
}

impl<T> UnwrapOption<T> for Option<Option<T>> {
    fn unwrap_opt(self) -> Option<T> {
        match self {
            Some(e) => e.unwrap_opt(),
            None => None,
        }
    }
}

fn main() {
    let x = Some(Some(Some(1)));
    println!("{:?}", x.unwrap_opt());
}
Run Code Online (Sandbox Code Playgroud)

generics rust

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

如何绑定可观察字符串的可编辑ko.observableArray?

这是如何绑定ko.observableArray字符串的后续内容?

如何将可编辑的可观察字符串数组绑定到一组输入框?我不想绑定到一个对象数组,因为从服务器发送的底层JSON是一个字符串数组.

以下示例不起作用(在http://jsfiddle.net/LDNeA/上尝试).使用可观察字符串绑定对象数组是可以的,但直接绑定可观察字符串数组不起作用,并且模型不会更新.

重要的是文本框中的条目被映射回模型.

JS:

var ViewModel = function() {
    this.value = ko.observable("hi")
    this.array1 = ko.observableArray([ko.observable("hi"), ko.observable("there")]);
    this.array2 = ko.observableArray([{ data: ko.observable("hi") }, { data: ko.observable("there") }]);
};

ko.applyBindings(new ViewModel());
Run Code Online (Sandbox Code Playgroud)

HTML:

<div class='liveExample'>   
    <p><input data-bind='value: value' /></p> 
    <div data-bind="foreach: array1">
        <p><input data-bind='value: $data' /></p> 
    </div>
    <div data-bind="foreach: array2">
        <p><input data-bind='value: data' /></p> 
    </div>
</div>

<pre data-bind="text: ko.toJSON($data)"></pre>
Run Code Online (Sandbox Code Playgroud)

knockout-2.0 knockout.js knockout-mvc

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

Box 和 Arc 使用什么魔法来允许投射到特征对象?有没有办法用我自己的类型来做到这一点?

在 Rust 中,您可以使用某种通过关键字访问的编译器魔法从 转换Arc/Box/Rc<T>为。有没有办法为用户定义的类型选择这种魔法,或者是特殊情况?Arc/Box/Rc<dyn Trait>asArcBox

天真的尝试会导致错误:

use std::sync::Arc;

struct X<T: ?Sized> {
    t: Box<T>,
}

impl <T> X<T> {
    pub fn new(t: T) -> Self {
        Self { t: Box::new(t) }
    }
}

pub fn main() {
    let x = Arc::new("123".to_owned()) as Arc<dyn AsRef<str>>;
    let x = Box::new("123".to_owned()) as Box<dyn AsRef<str>>;
    let x = X::new("123".to_owned()) as X<dyn AsRef<str>>;
}
Run Code Online (Sandbox Code Playgroud)
error[E0605]: non-primitive cast: `X<String>` as `X<dyn AsRef<str>>`
  --> src/main.rs:16:13
   |
16 |     let x = …
Run Code Online (Sandbox Code Playgroud)

traits rust

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

如何使用Google Compute Engine安全地配置AppEngine套接字

我想将Redis服务器放在Google Compute Engine上并通过AppEngine的socket支持与它通信.唯一的问题是,似乎没有特定的防火墙规则说"此AppEngine应用程序可以访问此主机/端口,而不是其他".

实例设置时有一些规则描述实例是否可以访问任务队列等,但不能反过来.

所以我的问题是:如何将Redis服务的端口访问权限仅限于单个AppEngine应用程序?

google-app-engine google-compute-engine

5
推荐指数
1
解决办法
396
查看次数

确定给定的纬度/经度是否在美国的边界内

如何确定给定的纬度/经度是否在美国的边界内?我希望后端代码在美国和美国以外的其他地方以某种方式运行.由于应用程序的要求,IP Geolocation不是一个选项.

理想情况下,我希望这不会发生外部服务.

algorithm location polygon geolocation

3
推荐指数
1
解决办法
872
查看次数

在OSX/iOS上的Objective C中的右移运算符是算术或逻辑右移吗?

在OSX/iOS上的Objective C中的右移运算符是算术或逻辑右移吗?

我找不到任何引用来指定右移是算术还是逻辑,或者它是否根据数据类型(有符号/无符号)和/或体系结构(x86/PPC/x64/ARM)而变化.

"Objective-C 2.0中的编程"指出这实际上是未定义的,但这与我在别处看到的信息冲突,编译器试图基于类型的签名来"做正确的事情".

macos objective-c ios

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

在同一函数的synchronized()块中初始化之后,是否可以在synchronized()之外安全地使用Java集合?

下面的代码是否被认为是线程安全的,即:是否保证在读取列表之前发生写入列表?我一直试图了解这在Java内存模型中是否会被认为是安全的,但目前还不清楚.

通过基本的流分析,看起来保证所有可能的线程都必须synchronizedfor下面的循环之前通过初始化程序块,但是对该列表的迭代是确定性的还是线程安全的?在使用下面的列表之前,我不确定是否可以保证初始化.

假设这是该类中唯一的方法.我知道在synchronized块中移动迭代会保证线程安全,但我更想知道这个构造是否安全.

此外,假设列表永远不会逃避类.

Java内存模型在JLS中有解释:http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.4

private List<Foo> list;
private final Object monitor = new Object();

public void bar() {
    synchronized (monitor) {
        if (list == null) {
            list = new ArrayList<>();
            list.add(...); // expensive operation
            list.add(...); // expensive operation
            list.add(...); // expensive operation
        }
    }

    for (Foo foo : list) {
        // do something with foo
    }
}
Run Code Online (Sandbox Code Playgroud)

java concurrency thread-safety

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