小编leb*_*olo的帖子

如何在实体 - 属性 - 值设计中处理不同的数据类型(例如,每个数据类型有多列或多个表的单表)?

我想使用实体 - 属性 - 值(EAV)方法创建患者/样本元数据表.

:我应该如何处理的不同列类型的值(如字符串,数字,或外键的字典表)的基础上的属性

注意:我不是在问是否使用EAV方法.我查看了其他SO问题参考资料,并认为这是我用例的最佳方法(例如,我不想为每个属性创建一个单独的列或表- 可以数百个).但是,我会在一个全面的例子中重新考虑其他设计.

代表性数据

患者/样品(实体)可以有多个元数据属性(例如实验室位置,存活,肿瘤类型)每一个具有不同的类型(例如VARCHAR,NUMBER,FOREIGN_KEY*,分别地).

*FOREIGN_KEY表示该类型是一个外键ID( INTEGER)到的词典表的值(例如10种可能肿瘤类型的列表).因此,实验室位置可能VARCHAR因为我不关心这些值的标准化.但是肿瘤类型应该有一定程度的验证.

我的表格布局可能如下所示:

CREATE TABLE patients (
  patient_id INTEGER CONSTRAINT pk_patients PRIMARY KEY,
  patient_name VARCHAR2(50) NOT NULL
);

CREATE TABLE metadata_attributes (
  attribute_id INTEGER CONSTRAINT pk_metadata_attributes PRIMARY KEY,
  attribute_name VARCHAR2(50) NOT NULL,
  attribute_value_type VARCHAR(50) NOT NULL …
Run Code Online (Sandbox Code Playgroud)

database oracle plsql database-schema entity-attribute-value

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

节点流导致大量内存占用或泄漏

我正在使用节点v0.12.7并希望直接从数据库流到客户端(用于文件下载).但是,在使用流时,我注意到大量内存占用(以及可能的内存泄漏).

使用express,我创建了一个端点,只需将可读流管道到响应中,如下所示:

app.post('/query/stream', function(req, res) {

  res.setHeader('Content-Type', 'application/octet-stream');
  res.setHeader('Content-Disposition', 'attachment; filename="blah.txt"');

  //...retrieve stream from somewhere...
  // stream is a readable stream in object mode

  stream
    .pipe(json_to_csv_transform_stream) // I've removed this and see the same behavior
    .pipe(res);
});
Run Code Online (Sandbox Code Playgroud)

在生产中,可stream读取数据库中的数据.数据量非常大(1M +行).我用虚拟流交换了这个可读流(参见下面的代码)以简化调试并注意到相同的行为:我的内存使用量每次都会跳跃大约200M.有时垃圾收集会启动并且内存会下降一点,但它会线性上升,直到我的服务器内存不足.

我开始使用流的原因是不必将大量数据加载到内存中.这种行为有望吗?

我还注意到,在流式传输时,我的CPU使用率跳跃到100%并阻塞(这意味着其他请求无法处理).

我错误地使用了这个吗?

虚拟可读流代码

// Setup a custom readable
var Readable = require('stream').Readable;

function Counter(opt) {
  Readable.call(this, opt);
  this._max = 1000000; // Maximum number of records to generate
  this._index = 1;
}
require('util').inherits(Counter, Readable);

// Override internal …
Run Code Online (Sandbox Code Playgroud)

javascript memory-leaks stream httpresponse node.js

13
推荐指数
2
解决办法
4000
查看次数

我可以在 ag-Grid 中使用异步值设置器吗(TypeScript 错误)?

我正在使用带有 TypeScript 的 ag-Grid 并尝试在我的列定义中创建一个异步值设置器

const columnDefs: ColDef[] = [
  {
    headerName: 'Name',
    field: 'name',
    editable: true,
    valueSetter: async (params: ValueSetterParams): Promise<boolean> => {
      return await doSomething(params); // Will return the change boolean
    }
  },
  //...other columns
Run Code Online (Sandbox Code Playgroud)

但是 TypeScript 抱怨这个签名不被支持,因为colDef.d.ts定义文件有

valueSetter?: ((params: ValueSetterParams) => boolean) | string;
Run Code Online (Sandbox Code Playgroud)

但是,如果我只是// @ts-ignore用来忽略 TypeScript 错误,它似乎是在尊重await并且我的代码以正确的顺序执行。

这只是 TypeScript 定义文件的问题吗?还是 ag-Grid 不支持异步值设置器?

一些环境信息:

  • 农业网格 22.1.0
  • 打字稿 3.7.2
  • Aurelia(使用 WebPack、npm 等)
  • 网络风暴 2019.3.1

async-await typescript ag-grid

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

如何比较字符串和数字值(尊重负值,null总是持续)?

我正在尝试对值数组进行排序,这些值可以是数值或字符串值的混合(例如[10,"20",null,"1","bar","-2",-3,null,5,"foo"]).我怎样才能对这个数组进行排序

  • null 值总是放在最后(无论排序顺序如何,请参阅jsFiddle)
  • 负数正确排序(即它们小于正数并在它们之间正确排序)

?我用一个详细的数字和字符串示例(使用和选项)制作了一个jsFiddle,但是会将我的排序算法的数字版本粘贴到下面作为起点.localeComparenumeric

// Sorting order
var order = "asc"; // Try switching between "asc" and "dsc"

// Dummy arrays
var numericArr = [10,20,null,1,-2,-3,null,5];

// Sort arrays
$(".output1").append(numericArr.toString());
numericArr.sort(sortByDataNumeric);
$(".output2").append(numericArr.toString());

// Numeric sorting function
function sortByDataNumeric(a, b, _order) {

    // Replace internal parameters if not used
    if (_order == null) _order = order;

    // If values are null, place them at the end
    var dflt = (_order == "asc" ? Number.MAX_VALUE : …
Run Code Online (Sandbox Code Playgroud)

javascript sorting

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

重新调整大小时重绘SVG

我试图在d3内重新调整窗口大小的SVG图表,但没有使用viewBoxpreserveAspectRatio参数(我不喜欢他们如何处理文本).

我还试图在附加单个元素(不基于支持数据)时通过Bostock的建议坚持使用d3的数据绑定设计.

我有一些归结为这个(jsFiddle).但是,SVG元素的宽度/高度永远不会更新.

HTML

<div class="chart-container">
    <button class="user-option">Some User Options</button>
    <div class="svg-container"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

使用Javascript

$(window).on("resize", function () {
    draw();
});

function draw() {
    var container = d3.select('.chart-container');
    var drawWidth = Math.round(0.80 * container.node().clientWidth);
    var drawHeight = Math.round(drawWidth * (3 / 4)); // Fixing a 4/3 aspect ratio

    /*
     * Use an inner g element as the SVG canvas in order to set and forget margins.
     * See http://bl.ocks.org/mbostock/3019563
     */
    var margin = …
Run Code Online (Sandbox Code Playgroud)

javascript svg d3.js

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

如何通过Python继承避免重新定义默认参数

对于简单的继承,例如

class Base:
  def __init__(self, env: str = 'prod'):
    #...

class Derived(Base):
  def __init__(self, env: str = 'prod'):
    super().__init__(str)
Run Code Online (Sandbox Code Playgroud)

如何避免在两个类中重新定义默认构造函数参数?如果我实例化Derived()我确实想env默认为'prod',我只是不想在多个类中重新定义该值。如果我后来决定默认值应该是其他值(例如'dev'),那么我将不得不更改所有派生构造函数。

我在想类似的事情

class Base:
  def __init__(self, env: str = 'prod'):
    #...

class Derived(Base):
  def __init__(self, env: str = None):
    if env is None:
      super().__init__()
    else:
      super().__init__(env)
Run Code Online (Sandbox Code Playgroud)

或者也许将默认值定义为基类中的全局常量?这两种方法似乎都过于复杂。什么是 Pythonic 方式?

python inheritance constructor default-parameters python-3.x

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

R:找到语料库中最常见的单词组

有没有一种简单的方法不仅可以在 R 的文本语料库中找到最常见的术语,还可以找到表达式(例如多个单词、一组单词)?

使用 tm 包,我可以找到最常见的术语,如下所示:

tdm <- TermDocumentMatrix(corpus)
findFreqTerms(tdm, lowfreq=3, highfreq=Inf)
Run Code Online (Sandbox Code Playgroud)

我可以使用函数找到与最常见单词相关的单词findAssocs(),因此我可以手动对这些单词进行分组。但是我怎样才能找到这些词组在语料库中出现的次数呢?

谢谢

corpus tm word-frequency

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

使用 Vert.x 逐行读取文件(AsyncFile 和 RecordParser 帮助)

我正在尝试使用 Vert.x 从文件系统读取一个大文件并逐行处理它。从核心文档来看,我认为做到这一点的方法是通过 anAsyncFile和 a RecordParser。理想情况下,我想要Pump数据(以避免背压),但RecordParser不是WriteStream

AsyncFile asyncFile = vertx.fileSystem().openBlocking(/*path and options*/);

RecordParser recordParser = RecordParser.newDelimited("\n", bufferedLine -> {
  // Do something per line
});

Pump.pump(asyncFile, recordParser).start(); // Error - RecordParser cannot be converted to WriteStream
Run Code Online (Sandbox Code Playgroud)

所以我想我必须自己抽奶?我尝试过类似的东西:

RecordParser recordParser = RecordParser.newDelimited("\n", bufferedLine -> {
  // Do something per line
  // I can see this code get run
})
.exceptionHandler(cause -> {
  // Do I need this? What are the repercussions if …
Run Code Online (Sandbox Code Playgroud)

asynchronous inputstream vert.x

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

npm outdated 不尊重 package.json 的插入符号

使用具有以下内容的package.json文件

"devDependencies": {
    "grunt": "^0.4.5",
    "grunt-concurrent": "^1.0.0",
    "grunt-contrib-jshint": "^0.10.0",
    "grunt-contrib-watch": "^0.6.1",
    "grunt-dev-update": "^1.1.0",
    "grunt-jasmine-node-new": "^0.3.2",
    "grunt-node-inspector": "^0.1.5",
    "grunt-nodemon": "^0.4.0",
    "grunt-npm-install": "^0.1.0"
}
Run Code Online (Sandbox Code Playgroud)

我得到一个npm outdated看起来像的输出

npm 过时的输出

为什么通缉不是 0.11.0?不"grunt-contrib-jshint": "^0.10.0"意味着任何大于或等于 0.10.0 但小于 1.0.0 ( >= 0.10.0 && < 1.0.0) 的版本?使用作为参考。

我正在使用节点 v0.12.0 和 npm v2.5.1。

javascript node.js npm package.json

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