小编acc*_*ate的帖子

四舍五入到最接近的 10 次方

我想弄清楚如何将一个数字(大于 0)四舍五入到最接近的 10 次方。

例子:

roundUp(23.4) = 100
roundUp(2.34) = 10
roundUp(.234) = 1
roundUp(0.0234) = 0.1
roundUp(0.00234) = 0.01
Run Code Online (Sandbox Code Playgroud)

对于大于 1 的数字,我相信这是有效的:

10^(ceil(log10(x)))
Run Code Online (Sandbox Code Playgroud)

但是对于 0 到 1 之间的数字,我不确定如何得出答案。

math logarithm rounding

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

HTML/CSS输入/ textarea,默认文本和颜色

两个半相关的问题:

1)我已经看到<input>,并<textarea>包含一些默认的文本框,如"请在此输入搜索词",并单击包装盒上的那一刻,文本消失.这是如何实现的?这是一个Javascript的东西吗?

2)默认文本可以是一种颜色,无论你输入什么(覆盖或附加),都可以使用不同的颜色?

css textarea

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

给定开始/结束时间数组的总空闲时间的算法

假设您有开始和结束时间.

此外,您还会获得一系列作业,按其开始和结束时间进行描述.这些作业可能重叠(即,可以同时运行多个作业).我需要找到一种方法来确定空闲时间和未运行任何工作的时间.

当然,如果任何时候只能运行一个作业,我可以减去每个作业的运行时间,但重叠部分让我难过.

algorithm

5
推荐指数
2
解决办法
1705
查看次数

涉及分支分支的 Git 拉取请求

假设我有一个 repo 的 fork,我的 repo 有三个分支:

  • 掌握
  • 分支_1
  • 分支_1_a

branch_1已关闭upstream/master,但branch_1_a已关闭branch_1(即,它是通过创建的git checkout -b branch_1_a branch_1

如何引入请求工作在这种情况下,如果说我要创建在变化的拉力要求branch_1,也为在变化的拉力要求branch_1_a。我是否首先必须创建一个 PR 才能合并branch_1_a到其中branch_1?还是我创建 PR branch_1,将其合并到upstream/master,然后创建 PR branch_1_a?或者我可以同时为每个人设置一个 PR 以进入 master(尽管我无法想象这将如何工作)?

git branching-and-merging pull-request

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

使用 Passport 检索和存储 access_token

我使用PassportJS一起openid-clientcookie-session我的Express服务器进行身份验证。我正在使用openid-client“Passport 使用”作为起点,并且我目前能够成功进行身份验证。由于我需要通过我的服务器代理的 API 的访问令牌,我选择使用以下代码将访问令牌保存在我的用户会话中:

passport.use(
  'oidc',
  new Strategy(
    { client, params, passReqToCallback, sessionKey, usePKCE },
    (req, tokenset, userinfo, done) => {
      logger.info('Retrieved tokenset & userinfo');
      // Attach tokens to the stored userinfo.
      userinfo.tokenset = tokenset;
      return done(null, userinfo);
    }
  )
);
Run Code Online (Sandbox Code Playgroud)

我的下一步是获取并存储一个新的访问令牌。附带的部分信息tokensetexpires_at密钥,并且设置为一小时后过期。所以当然,如果它即将到期或已经到期,我想获得一个新令牌。

文档说要使用:

client.refresh(refreshToken) // => Promise
  .then(function (tokenSet) {
    console.log('refreshed and validated tokens %j', tokenSet);
    console.log('refreshed id_token claims %j', tokenSet.claims);
});
Run Code Online (Sandbox Code Playgroud)

好的,我明白了,我也有一些代码可以工作。但我不知道如何将它保存回我的用户会话。如果我通过我的服务器进行后续 API 调用,我仍然会在req.session.passport.user.tokenset.access_token …

openid express passport.js

5
推荐指数
0
解决办法
786
查看次数

Perl的Getopt :: Long解析参数我没有提前定义吗?

我知道如何使用Perl的Getopt :: Long,但我不知道如何配置它来接受任何未明确定义的"--key = value"对并将其粘贴在哈希中.换句话说,我不知道用户可能想要什么选项,所以我无法定义所有选项,但我希望能够解析所有这些选项.

建议?提前谢谢.

perl getopt-long

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

EmberJS - 在输入时测试输入操作

我有一个类似于以下内容的EmberJS(2.5.0)组件:

{{input type="text" value=searchValue enter='handleSearch'}}
Run Code Online (Sandbox Code Playgroud)

基本上,在输入字段上按Enter键应该触发'handleSearch'动作.在我的组件中,到目前为止我有这个:

searchValue: null,
actions: {
  handleSearch() {
    var searchValue = this.get('searchValue');
    var submitSearch = this.get('submitSearch');
    console.log('Search term entered: ', searchValue);
    if (submitSearch) {
      submitSearch(searchValue);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

该组件通过以下方式调用:

{{my-component submitSearch=(action 'externalAction')}}
Run Code Online (Sandbox Code Playgroud)

这一切都运行良好,但我实际上测试它有困难.

这是我的集成测试(从指南中伪复制):

test('search input', function(assert) {
  this.set('externalAction', (actual) => {
    console.log('in external action');
    assert.equal(actual, 'hithere');
  });
  this.render(hbs`{{universal-header-search submitSearch=(action externalAction)}}`);
  this.$('input').val('hithere');
  this.$('input').change();
});
Run Code Online (Sandbox Code Playgroud)

问题是,我的handleSearch动作处理程序永远不会被触发.那么如何让我的input字段在集成测试中触发处理程序?我也试过this.$('input').submit()this.$('input').trigger('change'),但也似乎做任何事情.

integration-testing ember.js

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

Safari位置:粘性在overflow:auto元素中不起作用

根据CanIUse的说法,Safari和元素position:sticky内部存在一个已知问题overflow:auto

父母将溢出设置为自动将阻止位置:sticky在Safari中工作

但是,这是我需要的确切用例。我有一个可滚动的div,它分为两列。即使滚动整个div,右列也应该是粘性的,并且永远不要动。我position:sticky在右列上使用的原因是,我希望用户仍然能够使用光标在右列上来滚动左列。这是我发现可行的唯一解决方案。

Firefox / Chrome的工作示例如下:http : //cssdeck.com/labs/zfiuz4pc 滚动时橙色区域保持固定,但在Safari中不是。

上面的示例对我的问题有一些不必要的包装,但是我想尽可能地复制要在其中运行此代码的环境。其基本要点是:

<div class="modal-content">
  <div class="left-content">
  </div>
  <div class="sticky-element">
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

和CSS:

.modal-content {
  display: flex;
  overflow: auto;
  flex-flow: row nowrap;
}

.left-content {
  flex: 0 0 300px;
}

.sticky-element {
  position: sticky;
  top: 0;
  right: 0;
  width: 200px;
}
Run Code Online (Sandbox Code Playgroud)

再次,这适用于FF / Chrome,但不适用于Safari。有没有变通办法可以使其在所有浏览器中正常工作?还是有什么其他方法可以用来保持滚动性,即使将鼠标光标放在粘性元素上也可以?

css safari overflow sticky

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