小编Adr*_*scu的帖子

在GAE上解析完全有效的XML时,"prolog中不允许使用内容"

在过去的48小时里,我一直在打击这个绝对令人愤怒的小虫,所以我想在我把笔记本电脑扔到窗外之前,我终于放弃了,试着问问.

我正在尝试从我对AWS SimpleDB的调用中解析响应XML.电路上的反应很好; 例如,它可能看起来像:

<?xml version="1.0" encoding="utf-8"?> 
<ListDomainsResponse xmlns="http://sdb.amazonaws.com/doc/2009-04-15/">
    <ListDomainsResult>
        <DomainName>Audio</DomainName>
        <DomainName>Course</DomainName>
        <DomainName>DocumentContents</DomainName>
        <DomainName>LectureSet</DomainName>
        <DomainName>MetaData</DomainName>
        <DomainName>Professors</DomainName>
        <DomainName>Tag</DomainName>
    </ListDomainsResult>
    <ResponseMetadata>
        <RequestId>42330b4a-e134-6aec-e62a-5869ac2b4575</RequestId>
        <BoxUsage>0.0000071759</BoxUsage>
    </ResponseMetadata>
</ListDomainsResponse>
Run Code Online (Sandbox Code Playgroud)

我将此XML传递给解析器

XMLEventReader eventReader = xmlInputFactory.createXMLEventReader(response.getContent());
Run Code Online (Sandbox Code Playgroud)

eventReader.nextEvent();多次调用以获取我想要的数据.

这是一个奇怪的部分 - 它在本地服务器内运行良好.响应进来,我解析它,每个人都很开心.问题是,当我将代码部署到Google App Engine时,传出请求仍然有效,并且响应XML看起来100%完全相同且对我来说正确,但响应无法解析,但有以下异常:

com.amazonaws.http.HttpClient handleResponse: Unable to unmarshall response (ParseError at [row,col]:[1,1]
Message: Content is not allowed in prolog.): <?xml version="1.0" encoding="utf-8"?> 
<ListDomainsResponse xmlns="http://sdb.amazonaws.com/doc/2009-04-15/"><ListDomainsResult><DomainName>Audio</DomainName><DomainName>Course</DomainName><DomainName>DocumentContents</DomainName><DomainName>LectureSet</DomainName><DomainName>MetaData</DomainName><DomainName>Professors</DomainName><DomainName>Tag</DomainName></ListDomainsResult><ResponseMetadata><RequestId>42330b4a-e134-6aec-e62a-5869ac2b4575</RequestId><BoxUsage>0.0000071759</BoxUsage></ResponseMetadata></ListDomainsResponse>
javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1]
Message: Content is not allowed in prolog.
    at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(Unknown Source)
    at com.sun.xml.internal.stream.XMLEventReaderImpl.nextEvent(Unknown Source)
    at com.amazonaws.transform.StaxUnmarshallerContext.nextEvent(StaxUnmarshallerContext.java:153)
    ... (rest of lines …
Run Code Online (Sandbox Code Playgroud)

java xml google-app-engine parsing stax

93
推荐指数
5
解决办法
36万
查看次数

Python - 什么是sklearn.pipeline.Pipeline?

我无法弄清楚它是如何sklearn.pipeline.Pipeline工作的.

文档中有一些解释.例如,他们的意思是:

使用最终估算器进行变换的流水线.

为了让我的问题更清楚,那是steps什么?他们是如何工作的?

编辑

感谢答案,我可以让我的问题更加清晰:

当我调用管道并传递,作为步骤,两个变换器和一个估计器,例如:

pipln = Pipeline([("trsfm1",transformer_1),
                  ("trsfm2",transformer_2),
                  ("estmtr",estimator)])
Run Code Online (Sandbox Code Playgroud)

当我打电话给你时会发生什么?

pipln.fit()
OR
pipln.fit_transform()
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚估算器如何成为变压器以及如何安装变压器.

python machine-learning scikit-learn

91
推荐指数
3
解决办法
6万
查看次数

为什么不能在有界通配符通用中有多个接口?

我知道Java的泛型类型存在各种反直觉属性.这是我不理解的一个,我希望有人可以向我解释.为类或接口指定类型参数时,可以绑定它以使其必须实现多个接口public class Foo<T extends InterfaceA & InterfaceB>.但是,如果您要实例化实际对象,则此功能不再起作用.List<? extends InterfaceA>很好,但List<? extends InterfaceA & InterfaceB>无法编译.请考虑以下完整代码段:

import java.util.List;

public class Test {

  static interface A {
    public int getSomething();
  }

  static interface B {
    public int getSomethingElse();
  }

  static class AandB implements A, B {
    public int getSomething() { return 1; }
    public int getSomethingElse() { return 2; }
  }

  // Notice the multiple bounds here. This works.
  static class AandBList<T extends A & B> {
    List<T> …
Run Code Online (Sandbox Code Playgroud)

java generics language-design bounded-wildcard

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

每次启动EC2实例时,如何运行cloud-init启动脚本?

我有一个基于Amazon Linux AMI运行AMI的EC2实例.与所有此类AMI一样,它支持cloud-init系统,用于根据传递到每个实例的用户数据运行启动脚本.在这种特殊情况下,我的用户数据输入恰好是一个包含几个其他启动脚本的Include文件:

#include
http://s3.amazonaws.com/path/to/script/1
http://s3.amazonaws.com/path/to/script/2
Run Code Online (Sandbox Code Playgroud)

我第一次启动我的实例时,cloud-init启动脚本正确运行.但是,如果我对实例进行软重启(例如,通过运行sudo shutdown -r now),则实例会在不再运行启动脚本的情况下重新启动.如果我进入系统日志,我可以看到:

Running cloud-init user-scripts
user-scripts already ran once-per-instance
[  OK  ]
Run Code Online (Sandbox Code Playgroud)

这不是我想要的 - 我可以看到启动脚本每个实例生命周期只运行一次的实用程序,但在我的情况下,这些应该在每次实例启动时运行,就像正常的启动脚本一样.

我意识到一个可能的解决方案是rc.local在第一次运行后手动让我的脚本插入.然而,这似乎很麻烦,因为cloud-init和rc.d环境略有不同,我现在必须分别在首次启动和所有后续启动时调试脚本.

有谁知道我怎么能告诉cloud-init总是运行我的脚本?这听起来像是cloud-init的设计者会考虑的事情.

cloud amazon-ec2 cloud-init

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

每当写入NSPasteboard时,我都可以收到回调吗?

我读过Apple的" 纸板编程指南",但它没有回答我的特定问题.

我正在尝试编写一个Cocoa应用程序(用于OS X,而不是iOS),它将跟踪写入普通粘贴板的所有内容(因此,无论何时任何应用程序复制和粘贴,但不是,例如,拖放,也使用NSPasteboard).我可以(几乎)通过基本轮询后台线程上的常规粘贴板并检查changeCount来完成此操作.当然,这样做会让我觉得内心很脏.

我的问题是,有没有办法让粘贴板服务器在对普通粘贴板进行更改时通过某种回调通知我?我在NSPasteboard类引用中找不到任何内容,但我希望它潜伏在其他地方.

我可以想象实现这一点的另一种方法是,如果有一种方法可以将一般的粘贴板实现替换为NSPasteboard的子类,我可以定义自己来发出回调.也许这样的事情可能吗?

如果公共的App Store合法API可以实现这一点,我会更加喜欢,但如果需要使用私有API,我也会这样做.

谢谢!

macos cocoa nspasteboard

41
推荐指数
4
解决办法
7873
查看次数

继承的方法是否依赖于Android中的Dex方法限制?

Dalvik对单个.dex文件中可以拥有的方法数量有着众所周知的限制(约65,536个).我的问题是,继承(但未覆盖)的方法是否会计入此限制.

为了使事情具体化,假设我有:

public class Foo {
  public int foo() {
    return 0;
  }
}

public class A extends Foo { }
public class B extends Foo { }
public class C extends Foo { }
Run Code Online (Sandbox Code Playgroud)

出于65,536方法限制的目的,这是否算作添加一个方法,或添加4?(或者,我想,为了得到合乎逻辑的结论,这算作1种方法还是52种方法,考虑到这也java.lang.Object带来了12种方法).

作为背景,我有一些非常微不足道的生成类具有一些共性,我也遇到了方法限制,所以我想知道是否值得尝试将其中的一些抽象为类等级为了买一些时间.

java android dalvik dex

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

为什么忽略了地图URL的`sll`查询参数?

根据各种 参考资料,Google Maps有一个查询参数sll,其中包含以下内容:

应从中执行业务搜索的纬度,经度.您可以使用它来执行偏离中心的总线性搜索.谷歌使用它,因此"链接到此页面"可以记录在执行商业搜索后已移动中心的地图.请求路线时,会 map.getBounds().getSouthWest().toUrlValue()返回maps.google.com使用的相同值.

所以,例如,如果(43.464258, -80.52041)碰巧在安大略省的滑铁卢, (42.24370, -82.98320)恰好在安大略省的温莎(数百公里之外),那么我对上述文件的解释将是以下查询:

https://maps.google.ca/maps?saddr=43.464258,-80.52041&daddr=mcdonalds&sll=42.24370,-82.98320
Run Code Online (Sandbox Code Playgroud)

会做"麦当劳"的搜索滑铁卢,一些麦当劳在温莎.

不幸的是,这不是发生的事情(点击自己看!).它结束了做从一个搜索saddr点,到最近的麦当劳到这一点.价值sll根本没有考虑到它.

但是这里变得奇怪!如果我忽略sll参数完全,那么地图做了完全出乎意料:它选择在多伦多的一些随机麦当劳(一个城市,是无论从滑铁卢多公里外温莎).我需要添加一些sll参数(对于任何值)以使地图在滑铁卢中返回结果(即使我要求的是温莎的结果).

我是否误解了有关此参数的各种文档来源?这是地图上的错误吗?而且,最重要的是,是否有任何工作方式来做我正在尝试做的事情,即使它根本不涉及sll参数?

android google-maps geocoding geolocation

15
推荐指数
1
解决办法
1884
查看次数

上传到Blobstore会产生Java堆OutOfMemoryError

我正在为我的Google App Engine应用程序做一个非常简单的上传表单.在客户端GWT代码我有类似的东西:

final FormPanel uploadForm = new FormPanel();
uploadForm.setEncoding(FormPanel.ENCODING_MULTIPART);
uploadForm.setMethod(FormPanel.METHOD_POST);

uploadBtn.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            blobstoreUploadURLService.getBlobstoreUploadURL("/banzai/process-pdf", new AsyncCallback<String>() {

                @Override
                public void onFailure(Throwable caught) {
                    // TODO Auto-generated method stub
                    System.err.println("FAILURE DURING UPLOAD SERVICE");
                }

                @Override
                public void onSuccess(String result) {
                    uploadForm.setAction(result);
                    uploadForm.submit();
                }

            });
        }
    });
Run Code Online (Sandbox Code Playgroud)

它使用a new FileUpload()来选择文件.当我在本地或部署的实例上测试它时,我在日志中收到以下错误:

WARNING: Error for /_ah/upload/agdrYnNrYWFychsLEhVfX0Jsb2JVcGxvYWRTZXNzaW9uX18YAww java.lang.OutOfMemoryError: Java heap space
  at java.util.Arrays.copyOf(Arrays.java:2786)
  at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
  at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
  at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
  at javax.mail.internet.MimeMultipart.getCount(MimeMultipart.java:109)
  at com.google.appengine.api.blobstore.dev.UploadBlobServlet.handleUpload(UploadBlobServlet.java:135)
  at com.google.appengine.api.blobstore.dev.UploadBlobServlet.access$000(UploadBlobServlet.java:72)
  at com.google.appengine.api.blobstore.dev.UploadBlobServlet$1.run(UploadBlobServlet.java:100) …
Run Code Online (Sandbox Code Playgroud)

java gwt google-app-engine http

14
推荐指数
2
解决办法
3340
查看次数

如果我在命令行上键入Ctrl-C,Java中的finally块是否仍会执行?

我正在cmd.exeWindows中运行我的Java应用程序.如果我通过按Ctrl-C强行停止进程,并且当时的代码在try块中运行,那么该finally块是否仍会被执行?

在我的测试中似乎是,它被执行了.

java signals finally

14
推荐指数
2
解决办法
5657
查看次数

为什么RecognitionListener在JellyBean中停止工作?

对于使用Android 语音识别API的每个人来说,曾经有一个方便的RecognitionListener,你可以注册,将各种事件推送到你的回调.特别是,有以下onBufferReceived(byte[])方法:

public abstract void onBufferReceived (byte[] buffer)

从那时起:API等级8收到更多声音.此功能的目的是允许向用户提供有关捕获的音频的反馈.无法保证将调用此方法.

参数 buffer 缓冲区包含一系列表示单通道音频流的大端16位整数.采样率取决于实现.

虽然该方法明确指出无法保证它将被调用,但在ICS和之前它将被有效地被调用100%的时间:通常足够,至少,通过连接以这种方式接收的所有字节,你可以重建整个音频流并播放它.

然而,出于某种原因,在Jellybean SDK中,这神奇地停止了工作.没有关于弃用的通知,代码仍在编译,但onBufferReceived现在从未调用过.从技术上讲,这并没有破坏他们的API(因为它说"无法保证"该方法将被调用),但显然这对于​​许多依赖于这种行为的事情来说是一个突破性的变化.

有没有人知道为什么禁用这个功能,以及是否有办法在Jellybean上复制它的行为?

澄清:我意识到整个RecognizerIntent事情是一个具有多个实现的界面(包括一些可在Play商店中获得),并且他们每个人都可以选择如何处理RecognitionListener.我特指的是绝大多数Jellybean手机使用的默认Google实施方式.

android voice-recognition

14
推荐指数
1
解决办法
2501
查看次数