小编use*_*300的帖子

你如何在node.js中同步读取文件或流?

请不要讲述我应该如何异步地做所有事情.有时我想以简单明了的方式做事,所以我可以继续其他工作.

由于某种原因,以下代码不起作用.它匹配我在最近的SO问题上找到的代码.节点改变或破坏了什么?

var fs = require('fs');
var rs = fs.createReadStream('myfilename');  // for example
                                             // but I might also want to read from
                                             // stdio, an HTTP request, etc...
var buffer = rs.read();     // simple for SCCCE example, normally you'd repeat in a loop...
console.log(buffer.toString());
Run Code Online (Sandbox Code Playgroud)

读取后,缓冲区为空.

我看到调试器中的rs

events  
   has end and open functions, nothing else
_readableState
  buffer = Array[0]
  emittedReadable = false
  flowing = false   <<< this appears to be correct
  lots of other false/nulls/undefined
fd = null   <<< …
Run Code Online (Sandbox Code Playgroud)

javascript node.js

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

配置节点npm package.json,以便"npm test"适用于unix和windows

我开发了一个node.js npm模块,在Windows下开发.今天我写了一些Mocha测试.经过多次挣扎,似乎npm test为了工作,package.json不得不看起来像这样:(可能有其他选择???)

"scripts": { "test": "node node_modules/mocha/bin/mocha" }
Run Code Online (Sandbox Code Playgroud)

而不是所有基于Unix的书中的内容,

"scripts": { "test": "./node_modules/.bin/mocha" }
Run Code Online (Sandbox Code Playgroud)

如何将package.json设置为在Windows和Unix上运行?我假设Travis-CI运行Unix,所以,如果我将构建链接到那个,它将会破坏Windows版本.

我找到了一个两年前的帖子,有人要求提供一个功能.那个线程似乎消失了.这个问题似乎很接近,但这并不是我想要的,坦率地说,我无法理解答案.:-(任何人都可以澄清一下吗?

暂时,我要去

"scripts": {
      "test": "node node_modules/mocha/bin/mocha",
      "testOnUnixUseThis"    : "./node_modules/.bin/mocha (I think)",
      "testOnWindowsUseThis" : "node node_modules/mocha/bin/mocha"
  },
Run Code Online (Sandbox Code Playgroud)

不幸的是,你不能去npm test testOnWindowsUseThisnpm testOnWindowsUseThis.它并没有解决Travis-CI问题.但至少下载该模块的人可以(希望)看到发生了什么.

有更好的想法吗?我是唯一仍在Windows下开发的人吗??? :-)

unix windows node.js npm

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

URLConnection setRequestProperty vs addRequestProperty

让我说我正在谈论HTTP到Web服务器,我会接受HTML或文本,但更喜欢HTML.换句话说,标题应该说(我想!)

接受:text/html,text/*

我正在使用Java,所以我有一个URLConnection.我应该使用:

myUrlConnction.setRequestProperty("Accept", "text/html");
myUrlConnction.addRequestProperty("Accept", "text/*");
Run Code Online (Sandbox Code Playgroud)

要么

myUrlConnction.setRequestProperty("Accept", "text/html, text/*");
Run Code Online (Sandbox Code Playgroud)

或者他们是等同的???

一般来说,我看到的大多数第三方代码似乎并不担心这些标题的排序或多个值,所以我想知道它是如何最终起作用的.

java http urlconnection http-headers

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

为什么Android的AsyncTask没有实现Future?

在Java中,我已经习惯了Futures.现在我正在研究Android,并且AsyncTask实现了几乎所有相同的方法并涵盖了类似的生命周期.但是,如果我想要保持一致并在我的代码中使用Future,我必须将AsyncTask包装在一个愚蠢的包装器中,因为它实际上并没有实现Future.

他们需要添加的是一种isDone()方法,看起来很简单,然后添加implements Future<Result>.(稍后补充:请参阅下面的答案,了解它会有多么微不足道).

任何Android专家都知道一些很好的理由/模糊的错误可能会导致为什么没有这样做?

java android future android-asynctask

12
推荐指数
3
解决办法
6323
查看次数

MongoDB批量插入已存在许多文档的位置

我有一个较小的(~100)小数据文件(每个可能有10个字段)插入到MongoDB中.但是它们中的许多(可能全部,但通常是80%左右)已经存在于DB中.这些文件代表了未来几个月即将发生的事件,我每隔几天就会更新一次数据库.因此大多数事件已经在那里.

任何人都知道(或想猜)是否更有效:

  1. 进行批量更新但是使用continueOnError = true,例如

db.collection.insert(myArray, {continueOnError: true}, callback)

  1. 单独插入,首先检查_ID是否存在?

  2. 首先做一个大的删除(类似db.collection.delete({_id: $in : [array of all the IDs in my new documents] }),然后批量插入?

我可能会做#1,因为那是最简单的,我不认为100个文件都那么大所以它可能无关紧要,但如果有10,000个文件?我正在使用node.js驱动程序在JavaScript中执行此操作.我的背景是在Java中,异常是耗时的,这是我要问的主要原因 - "continueOnError"选项是否耗时?

补充:我不认为"upsert"是有道理的.这是为了更新单个文档.就我而言,代表即将发生的事件的单个文档没有改变.(好吧,也许是,这是另一个问题)

发生的事情是会添加一些新文件.

bulkinsert mongodb node.js

8
推荐指数
1
解决办法
9545
查看次数

HTML5 Canvas和Android Canvas之间的相似之处

对我来说,新年的决心是学习HTML5 Canvas和Android Canvas API.(我做了很多Swing科学图形的东西,需要分支出来)它们在概念和执行方面有多相似?它们是否足够相似,同时尝试同时学习它们是否有意义?或者它们真的不同,我应该一次关注一个以避免混淆?

html5 android android-canvas html5-canvas

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

无法获得基本的Jackson Mixin工作

我正在尝试使用Jackson 2.0 mixins序列化一个没有注释的类.

简化的源代码如下.请注意,我没有使用getter/setter,但似乎我仍然可以根据一些相当粗略的文档使用mixins .

public class NoAnnotation {
   private Date created;
   private String name;
   private int id;
   private List<URL> urls = new ArrayList();

   // make one with some data in it for the test
   static NoAnnotation make() {
      NoAnnotation na= new NoAnnotation();
      na.created = new Date();
      na.name = "FooBear";
      na.id = 23456;

      try {
         na.urls.add(new URL("http://www.eclipse.org/eclipselink/moxy.php"));
         na.urls.add(new URL("http://jaxb.java.net"));
      } catch (MalformedURLException e) {
         throw new RuntimeException(e);
      }
      return na;
   }

   // my Mixin "Class"
   static class JacksonMixIn …
Run Code Online (Sandbox Code Playgroud)

java annotations jackson

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

抽象类中的Java varargs和泛型问题

我正在玩一些像编程一样的功能.并且遇到了一些非常深层嵌套的泛型问题.这是我的SCCE失败,涉及一个抽象类:

public abstract class FooGen<IN, OUT> {

    OUT fn2(IN in1, IN in2) {  // clever? try at a lazy way, just call the varargs version
      return fnN(in1, in2);
   }

   abstract OUT fnN(IN...ins); // subclasses implement this

   public static void main(String[] args) {

      FooGen<Number, Number> foogen = new FooGen<Number, Number>() {   
         @Override Number fnN(Number... numbers) { 
            return numbers[0];
         }
      };

      System.out.println(foogen.fn2(1.2, 3.4));           
   }
}
Run Code Online (Sandbox Code Playgroud)

这死了

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Number;
Run Code Online (Sandbox Code Playgroud)

但是,对于非抽象的 FooGen,它工作正常:

public class FooGen<IN, OUT> {

      OUT …
Run Code Online (Sandbox Code Playgroud)

java generics variadic-functions

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

对于 ServiceWorker cache.addAll(),URL 是如何工作的?

我看到很多这样的示例代码:(此 Mozilla Doc的稍微缩短版本)

this.addEventListener('install', function(event) {
  event.waitUntil(
    caches.open('v1').then(function(cache) {
      return cache.addAll([
        '/sw-test/',
        '/sw-test/index.html',
        '/sw-test/style.css',
        '/sw-test/gallery/',
        '/sw-test/gallery/bountyHunters.jpg',
      ]);
    })
  );
});
Run Code Online (Sandbox Code Playgroud)

我不明白为什么你要同时添加/sw-test/ /sw-test/index.html。似乎第一个文件夹 URL 应该自动加载下面的所有内容,或者,如果没有这样做,为什么它在那里?对于/sw-test/gallery/和 也是如此/sw-test/gallery/bountyHunters.jpg

文档说“Cache 接口的 addAll() 方法采用 URL 数组,检索它们,并将生成的响应对象添加到给定的缓存中”。这不是很有帮助。

我真正想做的是缓存几个文件夹中的所有 *.html 文件以及另一个文件夹中的所有图像文件(各种格式)。将它们一一列出是脆弱的(很快就会变得不同步),容易出现拼写错误,而且简直是愚蠢的。

稍后添加

进一步阅读后,似乎不存在通配符,这太愚蠢了。:-) 但是添加文件夹有什么意义呢/sw-test/

javascript caching service-worker

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

如何检索Lucene中"击中"的字段

也许我真的错过了什么.

我已经在Lucene索引了一堆键/值对(v4.1,如果重要的话).假设我有key1 = value1和key2 = value2,例如从属性文件中读取.

它们被索引为特定字段并被编入一个笼统的"ALL"字段,例如

new Field("key1", "value1", aFieldTypeMimickingKeywords);
new Field("key2", "value2", aFieldTypeMimickingKeywords);
new Field("ALL", "key1=value1", aFieldTypeMimickingKeywords);
new Field("ALL", "key2=value2", aFieldTypeMimickingKeywords);
// then get added to the Document of course...
Run Code Online (Sandbox Code Playgroud)

然后,我可以使用通配符搜索

new WildcardQuery(new Term("ALL", "*alue1"));
Run Code Online (Sandbox Code Playgroud)

它会找到命中.

但是,获得更多信息会更好,例如"什么是完整的价值(例如"key1 = value1")与该命中一起?".

最好的我可以找到它来获取Document,然后获取IndexableFields的列表,然后循环遍历所有这些并查看field.stringValue().contains("alue1").(我可以查看调试器中的数据结构,所有信息都在那里)

这似乎完全是疯了导致Lucene刚刚做了什么?命中信息不应该返回一些字段吗?

Lucene是否错过了看似"明显"的功能?谷歌和从API开始并没有透露任何直截了当的东西,但我觉得我必须在搜索错误的东西.

java lucene

4
推荐指数
1
解决办法
1467
查看次数