小编Ate*_*ral的帖子

Mongoose子文档与嵌套模式

我很好奇在我的主模式中使用子文档与更深层的优缺点:

var subDoc = new Schema({
  name: String
});

var mainDoc = new Schema({
  names: [subDoc]
});
Run Code Online (Sandbox Code Playgroud)

要么

var mainDoc = new Schema({
  names: [{
    name: String
 }]
});
Run Code Online (Sandbox Code Playgroud)

我现在到处都在使用subdocs,但我主要想知道性能或查询我可能会遇到的问题.

javascript mongoose mongodb node.js

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

如何在JavaScript中获取字符串的最后一部分?

我的网址将如下所示:

http://www.example.com/category/action

我怎样才能得到"行动"这个词.url的最后一部分(在最后一个正斜杠"/"之后)每次都会有所不同.那么无论是"行动"还是"冒险"等,我怎样才能在最后一次收盘前的斜线后得到这个词?

javascript

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

通过调用prototype.constructor.apply来实例化JavaScript对象

让我从一个具体的例子开始,我正在尝试做什么.

我在表单中有一系列年,月,日,小时,分钟,秒和毫秒组件[ 2008, 10, 8, 00, 16, 34, 254 ].我想使用以下标准构造函数实例化Date对象:

new Date(year, month, date [, hour, minute, second, millisecond ])
Run Code Online (Sandbox Code Playgroud)

如何将我的数组传递给此构造函数以获取新的Date实例?[ 更新:我的问题实际上超出了这个具体的例子.我想要内置JavaScript类的一般解决方案,如Date,Array,RegExp等,其构造函数超出我的范围.]

我正在尝试做类似以下的事情:

var comps = [ 2008, 10, 8, 00, 16, 34, 254 ];
var d = Date.prototype.constructor.apply(this, comps);
Run Code Online (Sandbox Code Playgroud)

我可能new在某处需要一个" ".上面只是返回当前时间,好像我已经调用了" (new Date()).toString()".我也承认我可能完全与上述方向错误:)

注意:请不要eval(),也不要逐个访问数组项.我很确定我应该可以按原样使用数组.


更新:进一步的实验

由于还没有人能够提出一个有效的答案,我已经做了更多的游戏.这是一个新发现.

我可以用自己的班级做到这一点:

function Foo(a, b) {
    this.a = a;
    this.b = b;

    this.toString = function () {
        return this.a + this.b;
    };
}

var …
Run Code Online (Sandbox Code Playgroud)

javascript reflection

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

使用PC切换多个灯泡最简单,最实用的方法是什么?

这个问题主要与电子相关,但它也有编程方面.

关于这个问题的一些背景

我们办公室的墙上有一盏红绿灯.当人们进入办公室时,他们可以立即从交通信号灯中判断昨晚的自动构建和测试是否顺利进行:绿色表示所有测试均通过,黄色表示某些测试失败,红色表示某些构建失败.

现在,交通信号灯上悬挂着三根电缆上的三个开关,有人每天早上都需要手动切换这些电缆.我正在寻找一种通过PC自动完成此过程的简便方法.

关于我的一些背景

我可以写软件.我有一些焊接经验.我知道数字设计理论,但我从未构建过物理设备.我的手上没有太多时间.

这个问题

如何以最少的努力(和投资)从PC控制三个110V灯泡(或任何设备)?

一些松懈的约束

  • 我不关心编写软件来控制串口/ USB端口的努力.
  • 话虽如此,如果我不必编写任何软件并只使用现有工具,那就太好了.
  • 我不想做任何焊接!我可以使用其中一个爱好工具包,将组件推入插槽等.或许它可能来自Toys"R"Us.
  • 我愿意购买像Arduino板这样的现有设备.
  • 如果我能用只是躺着的零件来完成它,那将是很好的.例如,我有一个旧的2400Bd调制解调器,我可以拆开(但是,可能会接着进行一些焊接).

更新

答案中提到的类似项目:

usb continuous-integration electronics serial-port

34
推荐指数
5
解决办法
3254
查看次数

如果密钥不存在,为什么std :: map operator []会创建一个对象?

我很确定我已经在某个地方看到了这个问题(comp.lang.c ++?Google似乎也没有在那里找到它)但是这里的快速搜索似乎没有找到它所以这里是:

如果密钥不存在,为什么std :: map operator []会创建一个对象?我不知道,但对我而言,如果你与大多数其他运算符[](如std :: vector)进行比较,这似乎是违反直觉的,如果你使用它,你必须确保索引存在.我想知道在std :: map中实现这种行为的理由是什么.就像我说的那样,当使用无效密钥访问时,更像行动中的索引和崩溃(我猜是未定义的行为)会不会更直观?

看到答案后提炼我的问题:

好到目前为止,我得到了很多答案,说基本上它便宜,所以为什么不是或类似的东西.我完全同意这一点,但为什么不使用专用函数(我认为其中一条评论说在java中没有operator []并且函数被称为put)?我的观点是为什么不映射operator []像vector一样工作?如果我在向量上的超出范围索引上使用operator []我不希望它插入一个元素,即使它很便宜,因为这可能意味着我的代码中的错误.我的观点是为什么地图不一样.我的意思是,对我来说,在地图上使用operator []意味着:我知道这个密钥已经存在(无论出于什么原因,我只是插入它,我在某处有冗余,无论如何).我认为这样会更直观.

那说使用operator []执行当前行为的优点是什么(仅限于此,我同意具有当前行为的函数应该在那里,而不是operator [])?也许它以这种方式提供更清晰的代码?我不知道.

另一个答案是,它已经存在,所以为什么不保留它然后,可能当他们(stl之前的那些)选择实现它,他们发现它提供了一个优势或什么?所以我的问题基本上是:为什么选择以这种方式实现它,这意味着与其他运算符[]有点缺乏一致性.它给了什么好处?

谢谢

c++ stdmap design-rationale

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

创建没有窗口的应用程序

如何编写可以在不打开窗口或控制台的情况下运行的C/C++应用程序?

c c++ winapi

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

具有外部JS依赖关系的Maven项目中的RequireJS编译

我有一个用Maven构建的Web项目,我正在尝试找出使用RequireJS编译器编译JavaScript文件的最佳方法(这个问题也适用于任何编译器/缩小器).

我有一个有效的设置,但它需要改进:

我打包了第三方JavaScript库,它们作为依赖项被下载,然后添加了WAR Overlay插件.

我有一个Exec插件任务,在目标目录中运行RequireJS编译器.我目前exec:exec在程序包目标运行后手动运行(因此WAR内容放在目标目录中).

我想要的是使JS编译成为main(Java)编译的一部分.在编译后发生的WAR覆盖阶段,JS编译器本身(Require JS)作为依赖项下载.所以,我需要下载和解压缩Require JS文件,我需要在Java编译之前/期间/之后使用这些文件运行JS编译.

我相信可以有几种方法来实现这一目标.我正在寻找最优雅的解决方案.


更新:现有的POM代码段

我有JavaScript依赖项,我已压缩并添加到我们的存储库管理器:

    <dependency>
        <groupId>org.requirejs</groupId>
        <artifactId>requirejs</artifactId>
        <version>0.22.0</version>
        <classifier>repackaged</classifier>
        <type>zip</type>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>com.jqueryui</groupId>
        <artifactId>jquery-ui</artifactId>
        <version>1.8.7</version>
        <classifier>repackaged</classifier>
        <type>zip</type>
        <scope>runtime</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

请注意,RequireJS本身(编译其余库所需的)也作为外部依赖项加载.所以首先,我需要在开始使用RequireJS编译之前下载并解压缩此依赖项.

使用WAR Overlay插件将这些依赖项添加到WAR:

        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <overlays>
                    <overlay>
                        <groupId>org.requirejs</groupId>
                        <artifactId>requirejs</artifactId>
                        <classifier>repackaged</classifier>
                        <type>zip</type>
                        <targetPath>lib</targetPath>
                        <includes>
                            <include>requirejs/require.js</include>
                            <include>requirejs/require/*</include>
                            <include>requirejs/build/**</include>
                        </includes>
                    </overlay>
                    <overlay>
                        <groupId>com.jqueryui</groupId>
                        <artifactId>jquery-ui</artifactId>
                        <classifier>repackaged</classifier>
                        <type>zip</type>
                        <targetPath>lib</targetPath>
                    </overlay>
                </overlays>
            </configuration>
        </plugin>
Run Code Online (Sandbox Code Playgroud)

尽管我不需要requirejs/build/**在WAR中结束,但我将它作为覆盖的一部分包含在内以获得解压缩的RequireJS构建脚本,仅仅因为我没有想出更好的方法.

然后我有一个执行编译的Exec插件任务.但请注意,此任务尚未添加到正常的编译工作流程中:我必须在WAR打包完成mvn exec:exec 手动调用它:

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                </execution>
            </executions>
            <configuration> …
Run Code Online (Sandbox Code Playgroud)

javascript dependencies maven requirejs

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

如何打破一个功能

如果我有如下功能:

void func () {
    //...

    if (condition) {
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我使用break时它会给我一个错误.有没有其他方法可以使用if条件退出函数并正常完成代码编译?

c++ return function break

19
推荐指数
3
解决办法
8万
查看次数

当可能必须删除模块以节省内存时,是否可以使用requirejs

我们在嵌入式环境中开发应用程序.它是一个高级计算环境,在busybox Linux系统之上有一个完整的Web浏览器.唯一的例外是系统具有有限的系统内存.

我们的应用程序是用JavaScript构建的,并在基于Webkit的webbrowser中运行,并且包含许多按顺序加载的javascript模块(效率不高).

某些模块提供了多个模块使用的通用功能.我们正在使用requirejs转换当前的javascript加载器,但我们必须先解决一个特定的需求.

使用requirejs加载模块时是否可以卸载模块?假设我们使用以下方法动态加载模块:

require(["somemodule.js"], function(m) { m.run(); } );
Run Code Online (Sandbox Code Playgroud)

这适用于加载和运行'somemodule'并且还解决'somemodule'的所有依赖关系,而requirejs框架将存储对'somemodule'的引用以用于将来的请求.

如果我们在某些时候需要回收内存,例如能够加载和运行无限数量的模块,我们必须在一段时间后开始删除其中的一些.这是否可以使用requirejs而不改变内部实现?

有没有人以前处理过这类问题?大多数单页JS应用程序在台式PC上的Web浏览器中运行,其中内存使用通常不是主要问题.

javascript memory-management module requirejs

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

加载像素后,我的div不存在

我有一个像素,当我加载它时,它说:

a call to document.write() from an asynchronously-loaded external script was ignored
Run Code Online (Sandbox Code Playgroud)

然后显示:

document.getElementById('gospixel') is null
Run Code Online (Sandbox Code Playgroud)

这是我的像素代码:

<script name="gospix" src="http://www.example.com/p/gospixel.js">
Run Code Online (Sandbox Code Playgroud)

并在该文件中:

gos_f=42;
gos_a1='a2';
gos_u=window.location.href;
gos_k='6gZYlfy7Y7Q';
gos_rt='3_s';
document.write(unescape("%3Cscript src='http://example.com/p/gosuna.js' type='text/javascript'%3E%3C/script%3E"));
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

javascript ignore pixel

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