小编Nik*_*kov的帖子

随机将元素放入N个桶中

我有一袋100个土豆。我需要将土豆分成 N 个桶。每个桶里必须有 15 到 60 个土豆。

显然,我需要一个逐步的解决方案才能将其变成代码。

迄今为止我所拥有的最好的方法:

最小桶数:100/60 = 1 (40) => 向上舍入 => 2
最大桶数:100/15 = 6 (10) => 向下舍入 => 6

因此,您最少可以有 2 个桶,最多可以有 6 个桶。现在我们选择一个随机数(因为我只需要一个解决方案,而不是全部)。

我们选择 3。
每桶土豆数:100/3 = 33 (1)
桶数:33, 33, 34。

现在这是棘手的部分。虽然这是原始问题的解决方案,但它对我不起作用,因为我需要数字比这更随机。在这个问题中,条件是 15-60,但这里我们只得到 33-34,这对于我的需要来说太均匀了。

这里的解决方案之一可能是开始从每个桶中添加和减去数字。可能会重复 10 次左右,但我认为一定有更好的方法来做到这一点。

有任何想法吗?

algorithm math

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

Node.js - 服务器关闭连接?

我在Node.js服务器上运行一个Web应用程序,我需要它一直在线,所以我一直在使用.但这是我经过一段时间后得到的:

Error: Connection lost: The server closed the connection.
    at Protocol.end (/home/me/private/app/node_modules/mysql/lib/protocol/Protocol.js:73:13)
    at Socket.onend (stream.js:79:10)
    at Socket.EventEmitter.emit (events.js:117:20)
    at _stream_readable.js:910:16
    at process._tickCallback (node.js:415:13)
error: Forever detected script exited with code: 8
error: Forever restarting script for 3 time
Run Code Online (Sandbox Code Playgroud)

我还有两台服务器连续运行了大约10天.我在所有服务器上都有一个"keepalive"循环,每5分钟左右进行一次"select 1"mysql查询,但似乎没有任何区别.

有任何想法吗?

编辑1

我的其他服务器给出了类似的错误,我认为这是"连接超时",所以我把这个功能:

function keepalive() {
    db.query('select 1', [], function(err, result) {
        if(err) return console.log(err);    
        console.log('Successful keepalive.');
    });
}
Run Code Online (Sandbox Code Playgroud)

它修复了我的另外两台服务器.但在我的主服务器上,我仍然得到上面的错误.

这是我如何启动我的主服务器:

var https = require('https');
https.createServer(options, onRequest).listen(8000, 'mydomain.com');
Run Code Online (Sandbox Code Playgroud)

我不确定你有兴趣看到什么代码.基本上,服务器是一个REST API,它需要一直保持高效.它每分钟大约需要2-5个,也许10个请求.

javascript mysql rest node.js

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

CloudFront 上的子域不起作用(不接受证书)

  • 在证书管理器中,我有一个有效的证书,其中包括 *.example.com 域。
  • 在 CloudFront 中,我有一个已启用 HTTP 到 HTTPS 重定向且 CNAME 字段为空的分配。
  • 当我编辑分发并在 CNAME 字段中输入 staging.example.com 并选择证书时,我收到以下错误:
com.amazonaws.services.cloudfront.model.InvalidViewerCertificateException: The certificate that is attached to your distribution doesn't cover the alternate domain name (CNAME) that you're trying to add. For more details, see: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html#alternate-domain-names-requirements (Service: AmazonCloudFront; Status Code: 400; Error Code: InvalidViewerCertificate; Request ID: 8406d8d5-65c3-11e9-afc0-65457a0a2bea)
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?顶级域的另一个发行版使用相同的证书可以正常工作。

amazon-web-services amazon-cloudfront

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

如何在 svelte 组件 <style> 中使用 tailwindcss @apply 指令

这有效:

<div class="list p-2" />
Run Code Online (Sandbox Code Playgroud)

这不起作用:

<style lang="postcss">
  @tailwind base;
  @tailwind components;
  @tailwind utilities;

  @layer components {
    .list {
      @apply p-2;
    }
  }
</style>
Run Code Online (Sandbox Code Playgroud)

我查看了 Svelte 的文档,但它解释了使用 SvelteKit 的过程,但我没有使用它。我怎样才能让它发挥作用?

webpack.config.js:

...
module: {
rules: [
  {
    test: /\.css$/i,
    use: ['style-loader', 'css-loader', 'postcss-loader'],
  },
Run Code Online (Sandbox Code Playgroud)

tailwind.config.js:

module.exports = {
  purge: [
    './*.html',
    './src/**/*.js',
    './src/**/*.svelte'
  ],
  darkMode: false, // or 'media' or 'class'
  theme: {
    extend: {},
  },
  variants: {
    extend: {},
  },
  plugins: [],
}
Run Code Online (Sandbox Code Playgroud)

postcss.config.js:

module.exports = {
  plugins: [
    ['tailwindcss'], …
Run Code Online (Sandbox Code Playgroud)

javascript webpack postcss svelte tailwind-css

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

使用JavaScript进行运动检测和简单分析?

让我们假设我有一个在画布上播放的视频,我想对该视频做一些基本分析,如边缘检测,运动检测和一般运动方向.我该如何处理这个问题?你能指出一些关于如何实现它们的简单算法和一般想法的正确方向吗?

我假设这些东西通常不用JS编码,所以我不希望任何开箱即用的东西.

有任何想法吗?

javascript opencv image-processing motion-detection

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

jQuery插件 - 内联CSS还是外部样式表?

我正在编写一个jquery插件,我在想是否应该移动.js文件中的所有CSS,只是为了让它更容易设置.

我应该这样做吗?这太糟糕了,表现明智吗?

javascript css jquery

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

Facebook通知 - 是否需要许可?

以下是我在文档中看到的内容:

Apps can send notifications to any existing user that has authorized the app. No special or extended permission is required.
Run Code Online (Sandbox Code Playgroud)

好的听起来不错.我正在使用JS SDK,这是我正在尝试做的事情:

FB.api('/me/notifications?access_token=' + window.accessToken + '&href=test&template=test', function(response) {
        console.log(response);
});
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:

"(#200) The "manage_notifications" permission is required in order to query the user's notifications."
Run Code Online (Sandbox Code Playgroud)

我尝试用我的应用程序的真实域名替换href参数.使用我的Facebook ID代替"/ me /"也没什么区别.救命!

我已经尝试添加manage_notifications权限(但仍然不起作用......),但我的问题是为什么它在文档中反过来说?

编辑:去PHP:

<?php 

include_once('sdk/facebook.php');

$user = $_POST['user'];
$message = $_POST['message'];

$config = array();
$config['appId'] = '609802022365238';
$config['secret'] = '71afdf0dcbb5f00739cfaf4aff4301e7';

$facebook = new Facebook($config);
$facebook->setAccessToken($config['appId'].'|'.$config['secret']);

$href = 'href';

$params = …
Run Code Online (Sandbox Code Playgroud)

facebook facebook-graph-api facebook-javascript-sdk

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

如何模拟组件方法?

我只是想找出在 store 操作后是否调用了组件方法,但出现此错误:

expect(jest.fn())[.not].toHaveBeenCalled()

jest.fn() value must be a mock function or spy.
Received:
  function: [Function bound mockConstructor]
Run Code Online (Sandbox Code Playgroud)

这是我的单元测试:

describe('MyComponent.spec.js', () => {
  let methods = {
    setLocation: jest.fn()
    // more methods...
  }

  it('calls setLocation on undo/redo', () => {
    let wrapper = mount(MyComponent, {
      store,
      localVue,
      methods
    })

    store.dispatch('doUndo')
    expect(wrapper.vm.setLocation).toHaveBeenCalled()
  })
})
Run Code Online (Sandbox Code Playgroud)

不确定这是否是一个好习惯,但我使用的是实际商店和本地 Vue 实例。

javascript vue.js jestjs vuejs2 vue-test-utils

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

从链接安装Firefox Addon,而不是下载.xpi

我刚刚制作了一个FF插件并制作了一个简单的网站.我想在访问者点击"下载"按钮时安装插件,而不是下载.它在本地工作,但不是在我上传网站时.我检查了mozilla存储库,他们只是链接到xpi文件.

我究竟做错了什么?

firefox-addon

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

MongoDB,Mongoose - 获取10k +文档时查询速度慢

我有一个包含10-12k文档的MongoDB数据库,在尝试获取所有文档时遇到的查询速度非常慢,如下所示:

Sales.find()
    .where('author').equals(author)
    .where('date').gt(startDate.unix()).lt(endDate.unix())
    .exec(function(err, results) {
        callback();
    });
Run Code Online (Sandbox Code Playgroud)

此查询提取大约10.5k文档,执行时需要1000-1300ms.我尝试删除"where"条件 - 它只会使它变慢(获取更多文档?).

问题来自Mongoose,MongoDB,JavaScript还是Node?我以前运行PHP/MySQL数据库,在类似条件下速度提高10-20倍,比如获取10k +行数据.我究竟做错了什么?

编辑

销售架构:

var salesSchema = new Schema({
    author: String,
    kind: String,
    productID: String,
    description: String,
    date: String,
    amount: String,
    transactionID: {
        type: String,
        unique : true
    }
});
Run Code Online (Sandbox Code Playgroud)

来自RoboMongo桌面客户端的查询结果:

db.getCollection('sales').find({}).explain()

executionTimeMillis: 46
nReturned: 10359
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js

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