小编Ale*_*v94的帖子

安装Watchman时找不到"Python.h"文件

我使用Linux Mint 17'Quiana',我想安装Watchman以便以后使用Ember.js.这是我的步骤:

$ git clone https://github.com/facebook/watchman.git
Run Code Online (Sandbox Code Playgroud)

然后

$ cd watchman
$ ./autogen.sh
$ ./configure.sh
Run Code Online (Sandbox Code Playgroud)

并且,当我运行make编译文件时,它返回以下错误:

pywatchman/bser.c:31:20: fatal error: Python.h: no such file or directory
#include <Python.h>
                ^
compilation terminated.
error: command 'i686-linux-gnu-gcc' failed with exit status 1
make[1]: *** [py-build] Error 1
make[1]: Leaving the directory `/home/alex/watchman'
make: *** [all] Error 2
Run Code Online (Sandbox Code Playgroud)

我试着跑

$ sudo apt-get install python3-dev
Run Code Online (Sandbox Code Playgroud)

但它似乎已经存在于我的系统中.我做错了什么?

python linux watchman

22
推荐指数
3
解决办法
9882
查看次数

在Python中使用多个线程计算阶乘

我使用Python 2.7,我有一个任务来编写一个使用多个线程来计算阶乘的函数。我尝试使用传统的递归方法来做到这一点,例如

def factorial(n):
    if n < 1:
        return 1
    else:
        return n * factorial(n - 1)
Run Code Online (Sandbox Code Playgroud)

但似乎这种方式不适合多线程。有什么方法可以使用多个线程来计算阶乘?

python algorithm multithreading

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

迭代对象键和值并返回一个新对象

我有一个对象数组,它们共享共同的属性名称,但具有不同的值。例如,它们是这样的:

let data = [
    {
      value1: "11:00",
      value2: 0.737462,
      value3: 1.345341,
      value4: 0.684655
    },
    {
      value1: "12:00",
      value2: 0.894368,
      value3: 1.55891,
      value4: 0.784655
    },
    {
      value1: "13:00",
      value2: 1.140516,
      value3: 1.938695,
      value4: 0.454655
    }
]
Run Code Online (Sandbox Code Playgroud)

我需要从这些对象中形成一个新的对象数组,类似于:

let datasets = [
    {
        label: "value1",
        data: ["11:00", "12:00", "13:00"]
    },
    {
        label: "value2",
        data: [0.737462,0.894368,1.140516,]
    }
    // and so on
]
Run Code Online (Sandbox Code Playgroud)

这样我的数据集中的每个对象都将包含原始对象的属性名称作为值label以及与该名称对应的属性数组。我尝试这样做:

let datasets = data.map((n) => {
    for (i in n) {
        return {
            label: i,
            data: data.map(obj …
Run Code Online (Sandbox Code Playgroud)

javascript arrays javascript-objects

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

运行 Gulp 任务时出现 Stdout maxBuffer 错误

我正在建立一个 Backbone 项目,我Gulp用来运行一些任务。我stdout maxBuffer error在使用Browserifyand运行我的任务时遇到了gulp-compressor。所以,在我的app.js我有以下内容:

var Backbone = require('backbone');
var _ = require('underscore');
var $ = require('jquery/dist/jquery');
Run Code Online (Sandbox Code Playgroud)

然后我编写了一个任务来将所需的库编译成一个文件,我将在我index.html喜欢的<script src="dist/bundle.min.js"></script>文件中使用它,并使用gulp-compressor. 这是任务:

var gulp = require('gulp'),
    browserify = require('gulp-browserify'),
    compress = require('gulp-compressor'),
    rename = require('gulp-rename');

gulp.task('browserify', function() {
  gulp.src('app/javascripts/app.js')
    .pipe(browserify({
      insertGlobals: true,
      debug: !gulp.env.production
    }))
    .pipe(compress())
    .pipe(rename('bundle.min.js'))
    .pipe(gulp.dest('dist'));
});
Run Code Online (Sandbox Code Playgroud)

但是每次我尝试运行脚本时它都会返回我

Error: Error: stdout maxBuffer exceeded    
Run Code Online (Sandbox Code Playgroud)

我怎么能解决这个问题?

node.js browserify gulp

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

在保存之前获取文件名

我有一个应该从远程 api 下载文件的请求。但是,我想要的是使用与从浏览器下载文件时保存的名称相同的名称保存该文件。例如,我有一个 URL https://myapi.com/files/4hjiguo4ho45946794526975429,当我单击此链接时,浏览器立即开始从该 URL 下载名称为 的文件myfile20180601.txt。如果我从 Node.js 发出请求,如何保存同名文件?这是我的代码:

axios({
    method: 'get',
    url: 'https://myapi.com/files/4hjiguo4ho45946794526975429',
    responseType: 'stream',
    headers: {
        Authorization: 'Basic KJVEB46287blablablatoken'
    }
})
 .then(res => res.data.pipe(fs.createWriteStream(`${/* filename */}.txt`)))
 .catch(err => console.error(err));
Run Code Online (Sandbox Code Playgroud)

node.js axios

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