小编Sim*_*mon的帖子

mongodb - 带有nodejs的上限集合

我正在尝试使用Node.js(使用本机MongoDB驱动程序)在MongoDB中设置和更新一些上限集合.我的目标是,在运行app.js时,将文档插入到上限集合中,并更新上限集合中的现有文档.这两个都在运行setInterval(),所以每隔几秒钟.

我的问题:

  1. 如果集合尚不存在,我想创建一个集合,但如果它确实存在,我想要将文档插入其中.检查这个的正确方法是什么?
  2. 对于上限集合,我是否应该在插入任何内容之前先显式创建它们?通常情况下,我相信您只需先将事物插入集合中,而无需先显式创建它们,但在这种情况下,我需要确保它们有上限.一旦存在上限集合,我知道如何在其中插入新文档,问题是我需要一些方法来处理第一次使用的应用程序(在新服务器上),其中集合尚不存在,我想要使用节点进行此创建,而不必跳转到mongo cli.
  3. 这里的诀窍是集合需要上限,所以我可以做类似的事情:db.createCollection("collectionName", { capped : true, size : 100000, max : 5000 } ).这将为我创建上限集合,但每次调用它时都会调用createCollection()而不是更新或插入 - 如果我调用createCollection(),一旦集合已经存在,它是否会完全覆盖现有集合?
  4. 另一种方法是使用以下方法将集合转换为上限集合:db.runCommand({"convertToCapped": "collectionName", size: 100000, max : 5000 });.这个问题是节点看不到runCommand()有效的函数而且它有错误.是否有其他东西我打算要求它让这个工作?它适用于mongo cli但不在节点内
  5. 您使用什么类型的查询来查找集合中的第一个文档?同样,在mongo cli中我可以使用db.collections.find()一些查询,但在节点内它表明它find()不是有效的函数
  6. 我如何使用collection.update()向现有文档添加一些新字段?让我们说文档是一些简单的对象,{key1: "value", key2: "value"}但我有一个包含的对象{key3: "value"}.当前文档中不存在键3,如何将其添加到当前存在的内容中?这与上面的#4有些相关,因为我不确定要传递什么,因为查询参数find()似乎不能很好地与节点一起使用.

javascript native mongodb node.js capped-collections

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

Python MNE - 从数组中读取脑电图数据

我有以 3D numpy 数组(纪元 * 通道 * 时间点)形式出现的 EEG 数据。时间点是一个包含每个采样时间点的 256 个元素数组(总共 1 秒,频率为 256Hz)。epoch 是一个实验性的试验。

我正在尝试将 numpy 数组导入 Python-MNE ( http://martinos.org/mne/stable/mne-python.html ) 理解的表单中,但我遇到了一些麻烦

首先,我不确定是否应该将这些原始数据作为 RawArray 或 EpochsArray 导入。我用这个尝试了后者:

ch_names = list containing my 64 eeg channel names
allData = 3d numpy array as described above

info = mne.create_info(ch_names, 256, ch_types='eeg')

event_id = 1

#I got this from a tutorial but really unsure what it does and I think this may be the problem
events = np.array([200, event_id])  #I got …
Run Code Online (Sandbox Code Playgroud)

python signal-processing numpy mne-python

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

Android删除SQL数据库

我有一个奇怪的问题,当我卸载应用程序时,我的SQL数据库不会自行删除

我不是在任何外部存储目录中创建数据库,并且确认数据库位于其默认位置: /data/data/com.example.app/databases/

卸载应用程序后,我希望擦除该位置的所有数据,但是当我从android studio再次运行应用程序时,新安装仍然可以看到所有旧数据

我已经尝试使用adb手动删除.db数据库目录中的文件,但是当我再次运行应用程序时,仍然可以看到旧数据

我也尝试进入应用程序设置并清除数据和缓存,但这似乎没有帮助

在我的代码中,我对数据库做任何"奇怪"事情的唯一地方是我在按钮点击时将数据库文件复制到新位置:

String pathToExternalStorage = Environment.getExternalStorageDirectory().toString();
File exportDir = new File(pathToExternalStorage, "/SensorData");
File subjectDataDir = new File(exportDir, "/subjects");

File data = Environment.getDataDirectory();
String currentDBPath = "//data//com.example.app//databases//" + DBHelper.DATABASE_NAME;
File currentDB = new File(data, currentDBPath);
File destDB = new File(exportDir, DBHelper.DATABASE_NAME);

FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(destDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
Run Code Online (Sandbox Code Playgroud)

然后在新创建的文件上运行mediascanner,以便我可以立即获得MTP访问权限

我怀疑这些过程中的任何一个都可能导致这种情况发生吗?

我当前的问题是如何在没有root访问权限的情况下从手机中手动删除数据库?

更大的问题是什么可能导致卸载过程不删除数据库文件?新安装的应用程序版本(卸载后)如何仍然可以看到旧的数据库信息?

我不知道如何开始搞清楚这一点......

编辑:

这变得越来越陌生.这似乎只发生在Windows上.这是我尝试过的过程:

  1. 从手机中删除/卸载应用程序
  2. 在Windows上从android studio运行应用程序.问题:数据库仍然存在,应用程序看到所有旧数据(即使我卸载了应用程序)
  3. 卸载应用
  4. 在我的macbook上从android studio运行应用程序.没问题!数据库是新鲜的,没有找到现有数据
  5. 再次卸载应用程序
  6. 在我的Windows机器上再次测试.现在,数据库返回,应用程序看到旧的​​旧数据库信息(从第2步开始!).此时卸载并没有摆脱它

所以我现在真的很茫然.为什么在Mac上运行会好吗?为什么在Mac上运行并清理数据库后,再次带上旧的Windows数据库呢?这不是所有操作系统都独立吗?

database sqlite android android-sqlite android-external-storage

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

Android线程可运行性能

我想知道两种不同的启动可运行方法的性能和 cpu/ram 要求

我有一些代码每 10 毫秒收集一次传感器数据,并将这些值插入到后台线程上的数据库中(使用单线程执行器)。Executor服务创建如下:

executor = Executors.newSingleThreadExecutor();

一种方法是......

public void onSensorChanged(SensorEvent event) {
    //get sensor values

    //insert into database
    executor.execute(new Runnable(){
        //database insert code here
    });
}
Run Code Online (Sandbox Code Playgroud)

我在教程中经常看到这种方法,但因为我每 10 毫秒执行一次,所以感觉资源密集型,因为每次检测到传感器值变化时我都会创建一个新对象。这个新对象是否每 10 毫秒就被覆盖一次?或者随着新对象的创建,它是否会占用越来越多的 RAM?

此后我重构了我的代码,使其看起来更像这样:

executor = Executors.newSingleThreadExecutor();
myRunnable = new MyRunnable();

class MyRunnable implements Runnable {
    public void run() {
        //database insert code here
    }
}

public void onSensorChanged(SensorEvent event) {
    //get sensor values

    //insert into database
    executor.execute(myRunnable);
}
Run Code Online (Sandbox Code Playgroud)

我的想法是,我只实例化一个对象一次,而不是每次传感器发生变化时都实例化一次。我认为这比以前的方法具有更低的 RAM 使用率,这是正确的吗?有没有更有效/更好的方法来完成这项任务?

java multithreading android executorservice runnable

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

R regex删除Unicode撇号

可以说我在R中有以下字符串:

text <- "[Peanut M&M\u0092s]"

我一直在尝试使用正则表达式通过搜索和删除来消除撇号\u0092

replaced <- gsub("\\\\u0092", "", text )

但是,以上方法似乎无效,并且结果与原始结果相同。进行此删除的正确方法是什么?

此外,如果我想删除打开和关闭[],那么一次完成所有任务还是在单独的一行中执行所有操作是否更有效率?

regex unicode r gsub

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

Mongodb:检查任何文档中的值相等

我的网站上有一个表单,用户可以在该表单中输入一个数字subNum.当用户提交表单时,我想检查他们输入的值是否已作为任何现有文档中的值存在.这都是在javascript/meteor中完成的

所有表单数据都放入这样的对象:

participantObject = {
  subNum: parseInt(number)
}
Run Code Online (Sandbox Code Playgroud)

然后,此对象作为文档插入到Participants集合中

单击提交按钮时,我需要检查他们输入的数字是否已经输入(即作为subNum任何文档中的值存在).如果是这样,请阻止表单提交并显示错误

我正在尝试这样的检查:

var existingSubs = Participants.find(
  {subNum: {$eq: participantObject.subNum}}
).count();

console.log(existingSubs);
Run Code Online (Sandbox Code Playgroud)

我希望上面会找到我所有的文件,其中subNum等于输入的值(participantObject.subNum),并且控制台记录匹配文件的数量

问题是在控制台日志中我看到了 Unrecognized operator: $eq

我是否错误地使用了相等运算符?

有没有更有效的方法来执行这样的检查?

javascript mongodb meteor

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

ggplot轮廓抖动数据点

我正在尝试创建一个散点图,其中点是抖动的(geom_jitter),但我还想在每个点周围创建一个黑色轮廓.目前我正在通过添加2个geom_jitters来实现它,一个用于填充,一个用于轮廓:

beta <- paste("beta == ", "0.15")

ggplot(aes(x=xVar, y = yVar), data = data) + 
    geom_jitter(size=3, alpha=0.6, colour=my.cols[2]) + 
    theme_bw() + 
    geom_abline(intercept = 0.0, slope = 0.145950, size=1) + 
    geom_vline(xintercept = 0, linetype = "dashed") + 
    annotate("text", x = 2.5, y = 0.2, label=beta, parse=TRUE, size=5)+
    xlim(-1.5,4) + 
    ylim(-2,2)+
    geom_jitter(shape = 1,size = 3,colour = "black")
Run Code Online (Sandbox Code Playgroud)

但是,这导致类似这样的事情:

在此输入图像描述

由于抖动随机偏移数据,因此2个geom_jitters彼此不一致.如何确保轮廓与填充点位于同一位置?

我已经看到了相关的线程(例如,是否有可能以相同的方式抖动两个ggplot geom?),但它们已经很老了,并且不确定是否有任何新内容添加到ggplot中可以解决这个问题

上面的代码可以使用,而不是使用geom_jitter,我使用常规geom_point,但我有太多的重叠点,这是有用的

编辑:

发布的答案中的解决方案有效.但是,对于我正在使用其他变量进行分类并使用它来绘制不同颜色的其他一些图形,它不太合作:

ggplot(aes(x=xVar, y = yVar, color=group), data = data) + …
Run Code Online (Sandbox Code Playgroud)

r scatter-plot ggplot2

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

Bash 批量重命名文件

我在同一个目录中有一堆文件,名称如下:

IMG_20160824_132614.jpg

IMG_20160824_132658.jpg

IMG_20160824_132738.jpg

中间部分是日期,最后部分是照片拍摄时间。因此,如果我按名称对这些文件进行排序,结果将与按修改的日期/时间排序相同

我想使用 bash 将这些文件批量重命名为以下形式:

1-x-3.jpg

其中x代表文件在顺序排序中的位置(按名称/修改时间排序)

因此,上面的 3 个示例将重命名为:

1-1-3.jpg

1-2-3.jpg

1-3-3.jpg

是否有可以实现此目的的 bash 命令?还是需要脚本?

bash rename file-rename batch-rename

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

Python梯度下降 - 成本不断增加

我正在尝试在 python 中实现梯度下降,我的损失/成本随着每次迭代而不断增加。

我已经看到一些人发布了关于这个的帖子,并在这里看到了一个答案:使用 python 和 numpy 的梯度下降

我相信我的实现是相似的,但看不出我做错了什么来获得爆炸性的成本价值:

Iteration: 1 | Cost: 697361.660000
Iteration: 2 | Cost: 42325117406694536.000000
Iteration: 3 | Cost: 2582619233752172973298548736.000000
Iteration: 4 | Cost: 157587870187822131053636619678439702528.000000
Iteration: 5 | Cost: 9615794890267613993157742129590663647488278265856.000000
Run Code Online (Sandbox Code Playgroud)

我正在网上找到的数据集(洛杉矶心脏数据)上对此进行测试:http : //www.umass.edu/statdata/statdata/stat-corr.html

导入代码:

dataset = np.genfromtxt('heart.csv', delimiter=",")

x = dataset[:]
x = np.insert(x,0,1,axis=1)  # Add 1's for bias
y = dataset[:,6]
y = np.reshape(y, (y.shape[0],1))
Run Code Online (Sandbox Code Playgroud)

梯度下降:

def gradientDescent(weights, X, Y, iterations = 1000, alpha = 0.01):
    theta = weights
    m = Y.shape[0]
    cost_history …
Run Code Online (Sandbox Code Playgroud)

python regression numpy machine-learning gradient-descent

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

Python Matlab引擎安装

我一直在尝试为python安装matlab引擎,所以我可以在我的python脚本中调用matlab函数.

我使用的指南就是这个:http://uk.mathworks.com/help/matlab/matlab_external/install-the-matlab-engine-for-python.html

它说setup.py文件位于matlabroot\extern\engines\python中,但是,我的extern文件夹不包含引擎文件夹(仅示例,include,lib)

我在找错了地方吗?还是有另一种方法来安装它?我使用matlab 2012b和python 2.7,如果这有所作为

python matlab

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