小编mat*_*ele的帖子

如何在d3.js中制作小时和分钟的自定义轴格式化程序?

我有一个数据集,我用d3.js绘图.x轴表示时间(以分钟为单位).我想以一种hh:mm格式显示这个轴,我找不到在d3中干净利落的方法.

我的轴代码如下:

svg.append('g')
   .attr('class', 'x axis')
   .attr('transform', 'translate(0,' + height + ')')
   .call(d3.svg.axis()
     .scale(x)
     .orient('bottom'));
Run Code Online (Sandbox Code Playgroud)

这会在几分钟内生成看起来像标签[100, 115, 130, 140]等的标签.

我目前的解决方案是text在生成元素后选择元素,并使用函数覆盖它们:

   svg.selectAll('.x.axis text')
   .text(function(d) { 
       d = d.toFixed();
       var hours = Math.floor(d / 60);
       var minutes = pad((d % 60), 2);
       return hours + ":" + minutes;
   });
Run Code Online (Sandbox Code Playgroud)

这输出轴刻度等[1:40, 1:55, 2:10].

但这感觉很笨拙并且避免使用d3.format.有没有更好的方法来制作这些标签?

label d3.js

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

如何使用TDD解决难以回答的拼图?

最近我写了一个Ruby程序来确定"Scramble Squares"瓷砖拼图的解决方案:

我使用TDD来实现其中的大部分,导致测试看起来像这样:

it "has top, bottom, left, right" do
  c = Cards.new
  card = c.cards[0]
  card.top.should == :CT
  card.bottom.should == :WB
  card.left.should == :MT
  card.right.should == :BT
end
Run Code Online (Sandbox Code Playgroud)

这很适合于下级"辅助"的方法:识别瓦片的"侧",确定是否一个瓦片可以被有效地放置在栅格等

但是在编写实际算法来解决难题时遇到了问题.由于我不知道问题的有效可行解决方案,我不知道如何首先编写测试.

我最终编写了一个非常丑陋,未经测试的算法来解决它:

  def play_game
    working_states = []
    after_1 = step_1
    i = 0
    after_1.each do |state_1|
      step_2(state_1).each do |state_2|
        step_3(state_2).each do |state_3|
          step_4(state_3).each do |state_4|
            step_5(state_4).each do |state_5|
              step_6(state_5).each do |state_6|
                step_7(state_6).each do |state_7|
                  step_8(state_7).each do |state_8|
                    step_9(state_8).each do |state_9|
                      working_states << state_9[0]
                    end
                  end
                end
              end …
Run Code Online (Sandbox Code Playgroud)

puzzle tdd scramble

9
推荐指数
1
解决办法
698
查看次数

如何确定NPM的传递依赖性来自何处?

我正在尝试npm install一个软件包,但由于缺少传递依赖性而无法安装.

(我不认为细节很重要,但我们代理Nexus NPM注册表,它不支持范围模块.我们的依赖项之一依赖于尝试下载@bahmutov/parse-github-repo-url模块,我们得到404.)

在我npm-debug.log看来我们注册表中的404:

npm ls [package-name]

但我无法分辨哪个依赖试图将其拉下来.

通常我会运行,node_modules但这对于一个空node_modules文件夹的项目不起作用,这就是这里发生的事情.

我们正在使用npm3,它有一个平坦的依赖树,所以我不能打开部分水合的package.json文件夹,看看它的位置.

有没有办法检查npm install文件并确定计算的依赖关系树而不依赖于npm install成功?

npm

9
推荐指数
1
解决办法
1574
查看次数

是否应启用RequireThis检查Checkstyle?

其中一个内置的Checkstyle检查是RequireThis,只要你没有预先添加this.到本地字段或方法调用,它就会关闭.例如,

public final class ExampleClass {
    public String getMeSomething() { 
        return "Something"; 
    }

    public String getMeSomethingElse() {
        //will violate Checkstyle; should be this.getMeSomething()
        return getMeSomething() + " else"; 
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在努力解决这个检查是否合理的问题.在上面的例子中,ExampleClass是final,它应该保证getMeSomething应该调用"正确"的版本.此外,似乎有些情况下您可能希望子类覆盖默认行为,在这种情况下,要求"this"是错误的行为.

最后,似乎过于防御性的编码行为只会使源头变得混乱,并且更难以看到实际发生的事情.

所以在我向我的架构师建议这是一个不好的启用检查之前,我想知道是否有其他人启用了这项检查?你是否因为失踪而发现了一个严重的错误this

java checkstyle

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

如何解析,修改和重新生成TypeScript文件的AST(如jscodeshift)?

我的用例:我正在构建一个Yeoman生成器,该生成器可以修改TypeScript文件。类似于:

  • 添加import语句
  • 将组件导入AngularJS模块

Yeoman建议针对此任务使用AST解析器:

最可靠的方法是解析文件AST(抽象语法树)并对其进行编辑。

诸如jscodeshift之类的工具对于JavaScript文件而言相当简单,但它似乎不支持TypeScript。是否有任何类似的工具来解析和修改TypeScript文件的AST?

yeoman typescript jscodeshift

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

使用ngUpgrade测试Angular应用程序失败,显示"未知提供程序:ng2.InjectorProvider < - ng2.Injector"

我正在尝试使用ngUpgrade从ng1移动到ng2,并在升级期间保持我的Karma/Jasmine测试通过,但是我遇到了一个我无法弄清楚的错误.

我已将Service(Data)升级为ng2 @Injectable,并将upgradeAdapter.downgradeNg2Provider其注入我的ng1应用程序.它在生产代码中工作正常.

但是当我尝试在我的测试中注入它时,我得到了这个错误:

Error: [$injector:unpr] Unknown provider: ng2.InjectorProvider <- ng2.Injector <- Data
Run Code Online (Sandbox Code Playgroud)

任何人都有一个在ngUpgrade中间单元测试代码的工作示例?我的堆栈是基于Webpack的.我试过跟踪并转换systemjs指南,但没有任何运气.

karma.conf.js:

module.exports = function (config) {
  config.set({
    // base path used to resolve all patterns
    basePath: '',

    // frameworks to use
    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
    frameworks: ['jasmine'],

    // list of files/patterns to load in the browser
    files: [{ pattern: 'spec.bundle.js', watched: false }],

    // files to exclude
    exclude: [],

    plugins: [
      require('karma-phantomjs-launcher'),
      require('karma-jasmine'),
      require('karma-webpack')
    ], …
Run Code Online (Sandbox Code Playgroud)

ng-upgrade angular

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

如何使用自定义元素实现 Angular 的“盒子里的香蕉”双向绑定?

我正在尝试构建一个将由 Angular 应用程序使用的自定义元素。自定义元素将接受一个道具并可能对其进行操作。

我的理解是,我可以使用“盒子里的香蕉”来处理这种绑定,也就是<custom-element [(foo)]="bar">转换为<custom-element [foo]="bar" (fooChange)="bar = newBar">,等等。

我的角度模板:

<an-el [(clicked)]="isClicked"></an-el>
<p>Did you click a button? {{ isClicked }}</p>
Run Code Online (Sandbox Code Playgroud)

我的自定义元素调度一个事件:

this.dispatchEvent(new CustomEvent('clickedChange', { bubbles: true, detail: true }));

但它似乎将整个 CustomEvent 绑定到isClicked

Did you click a button? [object CustomEvent]
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

这是我的应用程序(在 Chrome 中运行):https : //stackblitz.com/edit/angular-nlguf4

custom-element angular

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

我可以在 Angular CLI 应用程序中将自定义中间件添加到开发服务器吗?

本质上,我想扩展 Angular CLI 的代理,以启用我们组织使用的一些自定义 Express 中间件来支持独特的身份验证模型。

Create React App通过公开 Express 应用程序实例并让您app.use()拥有自己的中间件来支持这一点。

我找不到 Angular CLI 来支持这一点的方法。不弹出这个可行吗?

angular-cli angular

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

我可以通过自定义元素使用Preact组件吗?

我想创建一个Preact组件,让人们使用它,即使他们没有构建Preact应用程序.

示例:我想<MyTooltip>在Preact中构建一个组件,将其捆绑(与Preact运行时一起),并让人们将其作为脚本标记加载,纯粹以声明方式使用它,可能如下:

<script src="https://unpkg.com/my-tooltip/my-tooltip-bundled.js">

<my-tooltip content="Tooltip content">Hover here</my-tooltip>
Run Code Online (Sandbox Code Playgroud)

有没有办法捆绑一个组件,使其包含Preact运行时,我的库代码和钩子<my-tooltip>元素?

换句话说,我可以将Preact组件作为自定义元素进行互操作,类似于ReactiveElements吗?

custom-element preact

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