小编Jor*_*dan的帖子

使用index.js从'/ folder'导入javascript

我注意到一些案例,我看到过以下内容:

// /reducers/reducer1.js
export default function reducer1(state = {}, action){
  // etc...
}
  
// /reducers/reducer2.js
export default function reducer2(state = {}, action){
  // etc...
}

// /reducers/index.js
import { combineReducers } from 'redux';
import reducer1 from './reducer1';
import reducer2 from './reducer2';

export default combineReducers({
  reducer1,
  reducer2
})
  
// /store.js
import masterReducer from './reducers';

export default function makeStore(){
  // etc...
}
Run Code Online (Sandbox Code Playgroud)

注意我们调用的最后一个"文件" import masterReducer from './reducers'- 有些人似乎认为这应该default export从index.js文件中导入.

这实际上是规范的一部分吗?- 我的解释/问题是,这是许多人使用WebPack v1将import语句转换为CommonJS风格requires语句的结果?或者这将在WebPack v2中打破"官方" import/ …

javascript ecmascript-6 webpack

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

用于通知方法调用者该方法抛出的异常类型类型的属性

我不打算实现Java"throws"关键字.有关throws关键字的优点及其未在C#中实现的原因的讨论,请参见http://www.artima.com/intv/handcuffsP.html.

但是,如果有办法创建如下所示的属性,我很好奇:

[ThrowsException( exceptionType = NullReferenceException )] 
[ThrowsException( exceptionType = AuthenticationException )]
public void Login( Credentials credz ) 
{
    // ... etc...
}
Run Code Online (Sandbox Code Playgroud)

这样 - 当调用一个用一个或多个ThrowsException属性修饰的方法时,所述方法抛出的异常类型(至少是由ThrowsException属性显式声明的异常)将在方法的文档中可见

这与Java"throws"关键字不同,因为它不需要调用者处理这些异常.这样做可能会引入重大更改,例如,在不处理版本更改引入的新异常的客户端应用程序中.

虽然可以使用:

/// <exception cref="member">description</exception>
Run Code Online (Sandbox Code Playgroud)

我使用属性的意图是,如果异常的名称已更改或异常不再存在,则项目不会编译.因此,如何记录引发异常,不是同一个问题.


更新:2013-05-23

我已经想出了一种通过使用属性而不使用插件来解决问题的方法.我将在本周末尝试解决这个问题,如果能按预期工作,我将很乐意发布解决方案.如果有人打我发布解决方案,我很乐意接受他们的回答.

因为直到星期一我都无法解决这个问题,如果你能打败我,我会提供赏金 - 一个可以接受的答案是:

  • (不包括使用visual studio插件或任何第三方工具
  • &&提供了一种在XML文档中包含异常的方法
  • &&确保在编译期间强制执行类型安全性)
  • || 证明不可能满足前面三个要求,以便解决这个问题中提出的问题

我认为XML文档不能从ThrowsException属性反映异常,直到项目构建完成之后.

看到一个基于Resharper的解决方案(因为它在我工作的大多数开发工厂中都很常见)会很有趣,但是如果有一个解决方案仍然与第三方工具无关,那么它将不被接受.类似地,只能在Visual Studio中使用的解决方案可以通过依赖于Resharper的解决方案来接受,但如果有一个解决方案可以在其他IDE中工作,例如MonoDevelop(支持更多框架 - 甚至更好),则不会接受它.

c# exception custom-attributes

11
推荐指数
2
解决办法
3134
查看次数

d3.js使用nice()时如何获得scale的域的最小值

我有一个散点图,我试图绘制一个应该直接出现在x轴上的参考点,但我正在创建y轴,如下所示:

   // give ourselves some space
    yMin = yMin * 0.9;
    yMax = yMax * 1.1;

    // set up y
    var yValue = function (d) {
            return d.price;
        },
        yScale = d3.scale.linear()
            .domain([yMin, yMax])
            .range([height, 0])
            .nice(),
        yAxis = d3.svg.axis()
            .scale(yScale)
            .orient("left");
Run Code Online (Sandbox Code Playgroud)

问题是我想直接在x轴上绘制参考点.如果我不使用.nice(),我可以很容易地绘制参考点,如下所示:

        var reference = svg.append('g').attr("class", "grid-reference");
        reference.append("circle").attr("id", "some-reference-value")
            .attr("class", "dot")
            .attr("r", 9)
            .attr("cx", xScale(someReferenceValue))
            .attr("cy", yScale(yMin))
            .style("fill", "grey")
            .style("opacity", 1);
Run Code Online (Sandbox Code Playgroud)

但是在使用.nice()时我似乎无法弄清楚如何做到这一点.有没有其他方法可以解决这个问题,比如以某种方式得到x轴线的y坐标?

我开始挖掘d3代码,看看我如何计算好的值,我理解代码,但再次计算值似乎很浪费,更不用说重复代码的不必要的维护 - 特别是考虑到我也有参考点我会需要沿y轴绘制,我使用对数刻度表示我的x轴(对数nice()函数不同于线性nice()函数,因此这意味着额外的重复代码和不必要的维护).

想法?

javascript d3.js

11
推荐指数
1
解决办法
9138
查看次数

Node.js HTTP GET"ECONNRESET"读取时出错

我已经阅读了SO和GitHub上有关此错误的所有相关问题,但它们似乎都没有解决这种情况.

当我运行以下代码时:

response = await axios.get('http://localhost:8082/panda, {
  httpAgent: new http.Agent({ keepAlive: true, keepAliveMsecs: 10000 })
});
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

{ Error: socket hang up
    at createHangUpError (_http_client.js:345:15)
    at Socket.socketOnEnd (_http_client.js:437:23)
    at emitNone (events.js:110:20)
    at Socket.emit (events.js:207:7)
    at endReadableNT (_stream_readable.js:1059:12)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9) code: 'ECONNRESET' }
{ Error: read ECONNRESET
    at _errnoException (util.js:1019:11)
    at TCP.onread (net.js:608:25)
  code: 'ECONNRESET',
  errno: 'ECONNRESET',
  syscall: 'read',
  etc...
Run Code Online (Sandbox Code Playgroud)

除了onread调用之外没有堆栈跟踪所以我不清楚如何获得除了ECONNRESET传递给onreadnet.js中的方法的错误代码(-54)之外的任何其他信息

每个请求都会出现此问题 - 它不是间歇性的.

一些观察:

  • 当从chrome或邮递员提出相同的请求时,请求不会失败
  • 尝试使用相同的标头从Chrome重现成功的请求失败
  • 设置接受标头使用'gzip'等等没有帮助 - 我已经尝试了所有的建议,包括一些奇怪的建议,如设置内容长度和添加一个主体到请求,尽管这是一个GET请求
    • 错误总是出现在net.js中,但同时发生在请求和axios库中 …

javascript java spring node.js axios

10
推荐指数
1
解决办法
6989
查看次数

Roslyn /查找引用 - 无法正确加载Workspace

我正在尝试编写一些代码来查找任何给定方法的所有方法调用,因为我正在寻找创建一个开源UML序列图表工具.但是,我遇到了麻烦,越过前几行代码:/

API看起来已经发生了巨大的变化,我似乎无法通过查看代码来推断出正确的用法.

当我做:

    var workspace = new CustomWorkspace();
    string solutionPath = @"C:\Workspace\RoslynTest\RoslynTest.sln";
    var solution = workspace.CurrentSolution;
Run Code Online (Sandbox Code Playgroud)

我发现workspace.CurrentSolution有0个项目.我认为这将等同于之前Workspace.LoadSolution( string solutionFile )据称包含解决方案中的任何项目的内容,但我没有找到这条路径的任何成功.

我非常困惑0.o

如果有人可以提供一些关于我如何使用FindReferences API来识别特定方法的所有调用的额外指导,那将非常感谢!

或者,我最好采取静态分析方法吗?我想支持lambdas,iterator方法和async之类的东西.

================================================== ==================

编辑 -

以下是基于已接受答案的完整示例:

using System.Linq;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.MSBuild;
using Microsoft.CodeAnalysis.FindSymbols;
using System.Diagnostics;

namespace RoslynTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string solutionPath = @"C:\Workspace\RoslynTest\RoslynTest.sln";
            var workspace = MSBuildWorkspace.Create();
            var solution = workspace.OpenSolutionAsync(solutionPath).Result;
            var project = solution.Projects.Where(p => p.Name == "RoslynTest").First();
            var compilation = project.GetCompilationAsync().Result;
            var programClass …
Run Code Online (Sandbox Code Playgroud)

c# static-analysis mono.cecil roslyn

7
推荐指数
1
解决办法
4296
查看次数

React cloneElement not setting key

我正在构建一个动态生成密钥的表控件(我理解这可能不是一个好主意 - 我想密钥应该与它所代表的数据唯一关联,否则React可能只为我们生成唯一的ID?),但无论哪种方式似乎钥匙没有设置,我不知道为什么.表中的行是使用可在此处找到的函数生成的.基本上我有一个辅助组件,它使用一个可选组件来转换所有子元素 - 这里是其中一个转换函数(来自TableBody组件):

const transformRows = (keyPrefix) => (children, passthroughProps) => (React.Children.map(children, (c, i) => {
    return React.cloneElement(c, {
        key: `${keyPrefix}-${i}`,
        style: rowStyle,
        className: rowClassName,
        columnDefinitions: columnDefinitions,
        rowData: tableData[i],
        includeVerticalScrollbar,
        ...passthroughProps
    });
}));
Run Code Online (Sandbox Code Playgroud)

奇怪的是,当我单步执行代码时,似乎正在分配密钥,但随后我在浏览器中收到一条警告,该警告会在堆栈跟踪中Each child in an array or iterator should have a unique "key" prop追溯到此处.

有任何想法吗?

javascript reactjs

7
推荐指数
2
解决办法
4150
查看次数

如何通过扩展方法,静态类中的方法以及使用Roslyn的ref/out参数的方法来访问调用

我正在创建一个用于创建.NET UML Sequence Diagrams的开源项目,该项目利用了一个名为js-sequence-diagrams的javascript库.我不确定Roslyn是否适合这项工作,但我认为我会试一试,所以我总结了一些概念验证代码,它试图获取所有方法及其调用,然后以一种形式输出这些调用.可以用js-sequence-diagrams来解释.

代码生成一些输出,但它不捕获所有内容.我似乎无法通过扩展方法捕获调用,静态类中的静态方法的调用.

我确实看到了带out参数的方法调用,但没有以任何形式扩展BaseMethodDeclarationSyntax

这是代码(请记住,这是概念代码的证明,所以我没有完全遵循最佳实践,但我不是在这里请求代码审查...另外,我习惯使用任务所以我在搞乱等待,但我不完全确定我正在使用它)

https://gist.github.com/SoundLogic/11193841

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection.Emit;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Formatting;
using Microsoft.CodeAnalysis.MSBuild;
using Microsoft.CodeAnalysis.FindSymbols;
using System.Collections.Immutable;

namespace Diagrams
{
    class Program
    {
        static void Main(string[] args)
        {
            string solutionName = "Diagrams";
            string solutionExtension = ".sln";
            string solutionFileName = solutionName + solutionExtension;
            string rootPath = @"C:\Workspace\";
            string solutionPath = rootPath + solutionName + @"\" + solutionFileName;

            MSBuildWorkspace workspace = MSBuildWorkspace.Create(); …
Run Code Online (Sandbox Code Playgroud)

.net c# roslyn

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

反应 - 访问DOM而不破坏封装

在没有打破封装的情况下,有没有一种方法可以执行类似下面的操作?

import React, { Component, PropTypes } from 'react';

class Dashboard extends Component {
    constructor(props, context) {
        super(props, context);

        this.setRef = ::this.setRef;
    }
    componentDidMount() {
        const node = ReactDOM.findDOMNode(this.someRef);
        const newHeight = window.innerHeight - node.offsetTop - 30;
        node.style.maxHeight = `${newHeight}px`;
    }

    render() {
        return (
            <div id="some-element-id" ref={this.setRef}>
            </div>
        );
    }

    setRef(ref) {
        this.someRef= ref;
    }
}
Run Code Online (Sandbox Code Playgroud)

ReactDOM.findDOMNode 似乎是建议的解决方法,但这仍然打破了封装,文档在这个程度上有一个很大的红旗.

javascript reactjs

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

使用flex项目作为flex容器

我想使用带有列布局的flexbox,但我希望将顶部n - 1弹性项目固定到顶部,将nth弹性项目固定到主要弹性容器区域的底部.

我通过使用nthflex项目来解决这个问题也是一个新的flexbox/flex容器使用justify-content: flex-end,但我找不到任何这样做的例子 - 所以这是一个正确/可接受的解决方案,根据标准,如果没有,如何我会用flexbox来解决这个问题吗?

这是一个简单的例子:

.flex-container {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-direction: column;
  flex-direction: column;
  width: 300px;
  height: 240px;
  background-color: Silver;
}
.flex-container-bottom {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-direction: column;
  flex-direction: column;
  width: 300px;
  height: 240px;
  background-color: orange;
  -webkit-justify-content: flex-end;
  -ms-flex-pack: end;
  justify-content: flex-end;
}
.flex-item {
  background-color: DeepSkyBlue;
  width: 100px;
  height: 100px;
  margin: 5px;
}
.flex-item-bottom {
  background-color: red;
  width: 100%;
  height: 50px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="flex-container">
  <div class="flex-item">flex …
Run Code Online (Sandbox Code Playgroud)

html css flexbox

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

使用Bing Maps REST控件查找附近的实体

我正在尝试使用Bing Maps REST API来查询给定搜索半径内给定名称的所有实体的地址.最终目标是做类似星巴克在这里做的事情:商店定位器,但我使用了Fiddler,看起来他们正在使用6.3 API:/

如果有办法,这似乎很难记录.如果您上传自己的数据,有一些如何执行此操作的示例,但如果您正在搜索应该已经在地图上的本地商家,则不会这样做:示例.这是我到目前为止所尝试的......它正在返回俄勒冈州的星巴克:

var query = 'starbucks';
_map.getCredentials(function (credentials) {
    $.getJSON('http://dev.virtualearth.net/REST/V1/Locations/' + query + '?key=' + credentials + '&lat=' + position.coords.latitude + '&long=' + position.coords.longitude + '&limit=25&jsonp=?&s=1',
    function (result) {
        if (result.resourceSets[0].address != 'undefined') {
            var address = result.resourceSets[0].address;
            alert(address);
        }
        else {
            $("#results").html("Oops! It appears one or more of the addresses you entered are incorrect. :( ");
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

这是位置查询之前的代码,以防您想知道我在位置查询中使用的位置数据是什么 - 它主要来自用户通过地理定位API的位置:

var _map;

$(document).ready(function () {
    if (Modernizr.geolocation) {
        $(".geofallback").hide(); …
Run Code Online (Sandbox Code Playgroud)

asp.net ajax jquery geolocation bing-maps

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

php反射获取属性而不获取基类的属性

所以我正在使用一个扩展基本设置类的设置类,它类似于"全局设置".有几个服务,每个服务都有自己的设置类,可以扩展抽象基础设置类.抽象基本设置类对应于服务之间共享的设置.首先,我将通过下面的示例进行说明,然后我将定义问题:

例:

abstract class BaseSettings {
    protected $settingA;
    protected $settingB;
}

class MyServiceSettings extends BaseSettings {
    private $settingC;
    public $settingD;
}
Run Code Online (Sandbox Code Playgroud)

问题:

如果我像这样创建一个ReflectionClass实例..

$reflect = new ReflectionClass($this);
Run Code Online (Sandbox Code Playgroud)

..来自MyServiceSettings类或BaseSettings类(因为很明显你不能有一个抽象类的实例),$reflect->getProperties()总会返回MyServiceSettings和BaseSettings的属性(我想这是合适的,因为我们真的在工作单一的具体课程)

现在我确信我可以创建一个扩展抽象BaseClass的空类来确定哪些属性去哪里(或者只是去掉抽象并创建一个BaseClass实例),但这看起来相当混乱,所以我想知道是否或许,有一种更优雅的方法来确定哪些属性属于父类,哪些属于子类?

如果你很好奇为什么我甚至这样做 - 我将设置序列化为.json文件,以便我添加一个恢复功能,以便可以继续上次成功完成的最后一次原子操作.为什么我必须这样做 - 限制环境.

php reflection

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