我想弄清楚如何将一个数字(大于 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 之间的数字,我不确定如何得出答案。
两个半相关的问题:
1)我已经看到<input>,并<textarea>包含一些默认的文本框,如"请在此输入搜索词",并单击包装盒上的那一刻,文本消失.这是如何实现的?这是一个Javascript的东西吗?
2)默认文本可以是一种颜色,无论你输入什么(覆盖或附加),都可以使用不同的颜色?
假设您有开始和结束时间.
此外,您还会获得一系列作业,按其开始和结束时间进行描述.这些作业可能重叠(即,可以同时运行多个作业).我需要找到一种方法来确定空闲时间和未运行任何工作的时间.
当然,如果任何时候只能运行一个作业,我可以减去每个作业的运行时间,但重叠部分让我难过.
假设我有一个 repo 的 fork,我的 repo 有三个分支:
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(尽管我无法想象这将如何工作)?
我使用PassportJS一起openid-client和cookie-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)
我的下一步是获取并存储一个新的访问令牌。附带的部分信息tokenset是expires_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 …
我知道如何使用Perl的Getopt :: Long,但我不知道如何配置它来接受任何未明确定义的"--key = value"对并将其粘贴在哈希中.换句话说,我不知道用户可能想要什么选项,所以我无法定义所有选项,但我希望能够解析所有这些选项.
建议?提前谢谢.
我有一个类似于以下内容的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'),但也似乎做任何事情.
根据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。有没有变通办法可以使其在所有浏览器中正常工作?还是有什么其他方法可以用来保持滚动性,即使将鼠标光标放在粘性元素上也可以?