小编Sig*_*ied的帖子

创建一个与已删除分支同名的分支是危险的吗?

我一直在研究分支机构的功能; 称它为'foo'.我现在已经完成并将其合并到master中并希望在本地和远程删除它.但是在将来的某个时候,我可能会再次开始研究这个功能,并且很想创建一个名为"foo"的新分支.

我不认为这对我来说是一个问题,但是如果其他人有我自己当前foo分支的副本,然后他们试图在创建新的foo分支后拉动它们会被搞砸了吗?

git

30
推荐指数
1
解决办法
7087
查看次数

d3选择器为直系孩子

我显然可以这样做:

d3.selectAll('div#some-div>ul')
Run Code Online (Sandbox Code Playgroud)

但是如果我使用DOM节点或现有的D3选择怎么办:

d3.select(this).selectAll('ul')
Run Code Online (Sandbox Code Playgroud)

将获得所有后代的UL.因此,如果

var div = d3.select('div') 
Run Code Online (Sandbox Code Playgroud)

给我这个节点:

<div>
  <ul>
    <li>foo
      <ul><li>bar</li></ul>
    </li>
  <ul>
</div>
Run Code Online (Sandbox Code Playgroud)

然后

var uls = div.selectAll('ul') 
Run Code Online (Sandbox Code Playgroud)

会得到两个UL.我想我可以区分出一个顶级的:

uls.filter(function() { return this.parentNode === div.node() }
Run Code Online (Sandbox Code Playgroud)

所以,我已经回答了我自己的问题.也许对某人有用.或许有人可以推荐一个不那么难看的解决方案.

nrabinowitz的答案下面的答案更好,并返回与上面相同的结果.这是一个比较它们修改小提琴(但不使用console.log,这对我来说在jsfiddle中很奇怪)

d3.js

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

在redux中有没有OOP的地方?

我已经使用了面向对象的编程实践已有25年了,并试图在过去的5年中转向函数式编程,但是当我尝试做一些复杂的事情时,我的脑子总是转向OOP,特别是现在ES6支持体面的OOP语法,这是我构建东西的自然方式.

我现在正在学习Redux并且我理解(参见如何将方法放在Redux状态的对象上?)将类实例放入reducers中是不行的; 并且在普通减速器状态之上计算的推荐方法是使用选择器(例如,通过重新选择).而且,当然,阵营建议过遗传组合物(https://facebook.github.io/react/docs/composition-vs-inheritance.html,阵营终极版接力类).

但React/Redux生态系统中是否存在具有方法和继承的类对象的任何位置?

我想,为了回答我自己的问题,OOP类鼓励在同一个地方添加数据属性和操作,这对于可读性很好,但不适合纯函数和不可变数据.

如果我打算使用OOP,我是否需要放弃让我的实例持续并保持状态任何时间的想法?就像,每次我想使用一个,我会从商店数据中实例化它,使用我想要的任何方法,然后扔掉它?这可能会消除使用OOP类的很多动力.但如果我保留实例,我会头疼让他们与商店保持同步.

那么,当我试图使用方法并且在我试图使用继承时总是使用合成时,总是使用选择器的答案是什么?具体来说,我的意思是存储和操作Redux存储中保存的数据以用于React组件.如果是这样,它应该放在哪里?连接到选择器?像我建议的那样立即丢弃吗?


为了清楚起见,添加我的用例:我的数据基本上是一个巨大的图形:许多对象具有许多属性和对象之间的大量关系.它只读,但很复杂.我的对象被称为"概念".

在做(可能是愚蠢的)迁移到Redux的决定之前,我使用类来构造和表示概念,概念集和概念之间的关系.我的类包括用于获取概念集的异步api逻辑,有关每个概念的信息,以及与每个概念相关的其他概念的信息.如果用户选择向下钻取,则类将递归地获取并实例化新的概念集.Redux文档推荐了嵌套数据的平面,规范化结构(http://redux.js.org/docs/recipes/reducers/NormalizingStateShape.html),这对于存储来说可能是明智的,但我的OOP模型很适合遍历部分图和东西.我很难使用可能涉及嵌套的选择器和不可变状态,可能包含循环,或者需要对更多数据进行异步调用.

我成功地使用https://redux-observable.js.org/作为api的东西.

也许@Sulthan的答案是正确的:我应该随意在我的Redux应用程序中使用OOP技术.但它似乎仍然很奇怪.我不能保留我的对象,因为如果存储更改(例如,更多数据被提取),我的对象可能会变得陈旧.如果我的对象是嵌套的,但我的存储是规范化的,那么当我需要它时,我会实例化它们(来自选择器),并确保不要让它们保持在...

oop reactjs redux reselect redux-observable

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

如何将ES6代理变回普通对象(PO​​JO)?

我正在使用一个将内容转换为ES6代理对象的库,而另一个我认为令人窒息的库是因为我将其中的一个传递给了我(我的代码是荒唐的,我知道),但我不知道如何取消代理对象。

但是我只是傻瓜。代理可以做任何事情!(在下面回答我的问题...)

javascript ecmascript-6 es6-proxy

4
推荐指数
5
解决办法
1069
查看次数

postgresql,命名分组集?

有没有办法命名分组集?对于每个分组集(根据https://www.postgresql.org/docs/devel/static/queries-table-expressions.html使用汇总或立方体明确定义或生成),我想以某种方式在结果列。这是我正在尝试做的丑陋的即时演示,名称只是分组列的列表:

select *, array_to_string(array_remove(array[case when "A" is null then null else 'A' end,
                                             case when "B" is null then null else 'B' end,
                                             case when "C" is null then null else 'C' end
                                            ],null),',') as grouping_set
from (values  ('a','b','c'),
              ('aa','bb','cc'),
              ('aaa',null,'ccc')) as foo("A","B","C")
group by rollup(1,2,3);


  A  | B  |  C  | grouping_set
-----+----+-----+--------------
 a   | b  | c   | A,B,C
 a   | b  |     | A,B
 a   |    |     | A
 aa  | bb | cc  | …
Run Code Online (Sandbox Code Playgroud)

sql postgresql postgresql-9.5 grouping-sets

3
推荐指数
2
解决办法
2368
查看次数

ggplot2 堆叠条,将 NA 放在顶部

这里的答案有很多关于在堆积条形图中订购条形部分的重要信息。在尝试了各种替代方案并获得了我想要的大部分订单之后,NA 不断出现在堆栈的底部,这是我不喜欢的。

ggplot(df, aes(x=time, fill=forcats::fct_rev(factor(able, levels=rev(likely))))) + 
  geom_bar() + 
  theme(axis.text.x = element_text(angle = 315, hjust = 0), 
        plot.margin = margin(10, 40, 10, 10))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

x 轴上的 NA 位于末尾,这很棒。总的来说,将 NA 放在最后可能很好。但是对于堆叠的条形图,我认为开始是底部,结束是顶部(因为底部的东西更容易比较。)

(Marimekko 图表可能会更好,但我在尝试让 ggmosaic 和其他各种东西工作一段时间后放弃了。)

编辑:我发现我修改了一些代码来制作 Marimekko 图表(想给予信任,但忘记了我在哪里找到它。)它确实将 NA 放在顶部。

在此处输入图片说明

df %>%
group_by(satisfied, time) %>%
summarise(n = n()) %>%
mutate(x.width = sum(n)) %>%

ggplot(aes(x=satisfied, y=n)) +
geom_col(aes(width=x.width, fill=time),
         colour = "white", size=2, position=position_fill(reverse = T)) +
geom_text(aes(label=n),
           position=position_fill(vjust = 0.5)) +
facet_grid(~ satisfied, space = 'free', scales='free', switch='x') +
#scale_x_discrete(name="a") …
Run Code Online (Sandbox Code Playgroud)

r bar-chart ggplot2 stacked-chart

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

redux:设置初始状态以及撰写中间件

创建 store 时设置初始状态(覆盖 reducer 自己的默认初始状态)的正常方法是向 createStore 提供第二个参数(如何在 redux 中设置初始状态)。但不幸的是,我拼凑了一堆我不太理解的东西(请原谅这个混合的比喻),我不知道把我想要的初始状态放在哪里:

const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
const store = createStore(
  rootReducer,
  composeEnhancers(
    applyMiddleware(...middleware)
  )
);
Run Code Online (Sandbox Code Playgroud)

我希望没有人要求查看我的 combineReducers 和中间件构造代码,因为那更令人尴尬。

redux redux-middleware

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