小编art*_*kay的帖子

Mergesort - 自上而下快于自上而下吗?

我一直在阅读Sedgewick和Wayne的"Algorithms,4th Ed",并且我一直在实现JavaScript中讨论的算法.

我最近采用了书中提供的mergesort示例来比较自上而下和自下而上的方法......但我发现自下而上的运行速度更快(我认为).在我的博客上查看我的分析.- http://www.akawebdesign.com/2012/04/13/javascript-mergesort-top-down-vs-bottom-up/

我还没有找到任何讨论说一个mergesort方法应该比另一个快.我的实施(或分析)是否存在缺陷?

注意:我的分析测量算法的迭代循环,而不是严格的数组比较/移动.也许这有缺陷或无关紧要?

编辑:我的分析实际上没有时间速度,所以我关于它运行"更快"的声明有点误导.我通过递归方法(自上而下)和for循环(自下而上)跟踪"迭代" - 并且自下而上似乎使用更少的迭代.

javascript language-agnostic sorting algorithm mergesort

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

在Atom Electron中使用Express

我有一个运行Express的应用程序,我正在尝试使用电子分发它.

在调试中运行电子:

/path/to/electron/Electron.app/Contents/MacOS/Electron path-to-my-app
Run Code Online (Sandbox Code Playgroud)

我的应用运行完美.Express启动它的服务器,一切正常 - 主窗口正确打开使用mainWindow.loadUrl('http://localhost:3000/');

当我按照分发教程(之前链接)时,我将我的应用程序资源复制到:

/path/to/electron/Electron.app/Contents/Resources/app
Run Code Online (Sandbox Code Playgroud)

但是现在当我运行Electron.app时,我会Cannot GET /在主窗口看到......但我不明白为什么.

有任何想法吗?

我唯一的想法是process.cwd()没有正确帮助我在这里定义文档根目录:

//configure Express to default web requests to /workspace/ folder
expressApp.use(express.static(process.cwd() + '/workspace'));
Run Code Online (Sandbox Code Playgroud)

但如果是这样的话,我不知道如何绕过它.

javascript node.js express electron

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

带有C#后端的电子GUI

用例

我有一个使用WinForms在C#中开发的现有项目以及GUI的自定义控件.我们对使用HTML/CSS/JS编写GUI的方法感到惊讶,我们正在寻找使用上述语言为桌面应用程序编写GUI的最佳方法.我们只需要支持Windows设备.

我担心:

使用电子边缘的建议不需要很长时间.虽然我并不担心让一切正常,但我担心:

  1. 调试我的C#代码(我仍然希望能够从VS启动我的整个应用程序并调试它看起来我已经习惯了).我读到我需要附加到node.js应用程序,以便之后调试我的C#代码.由于整个程序语言是用C#编写的,听起来很痛苦?
  2. 只要我有优势就会让它作为一个进程运行.我可以将电子应用程序视为一个自己的线程,当我的C#代码卡在某处时它仍会运行吗?

我的选择:

我仍然乐观,我想用HTML/CSS/JS编写我的桌面GUI.我考虑的不是使用电子边缘就是编写一个自己的电子应用程序,它使用命名管道与我的C#后端进行通信.我想知道是否有更大的障碍,为什么我不想这样做并使用电子边缘呢?

我的问题:

我想得到上面提到的两个问题的反馈,我也希望得到关于我创建GUI作为自己的电子过程的选项的输入,以便当有人运行我的应用程序时我有两个进程(GUI +后端).

javascript c# ipc node.js electron

10
推荐指数
2
解决办法
3191
查看次数

最小化HTTP连接与并行下载

多年来,Web开发人员一直遵循最小化HTTP连接的逻辑,因为浏览器不会阻塞代码的下载/执行.例如,雅虎长期以来一直在吹捧他们的最佳实践,并告诉我们将CSS/JavaScript /图像资源组合到单个文件中 - 从而减少HTTP请求的总数并压缩总资源大小.

但是在增加网页速度方面存在其他"最佳实践" - 特别是最大化并行HTTP下载数量(来自Google).这种方法告诉我们,通过在多个主机名之间传播HTTP连接,浏览器可以同时执行更多操作.

因此,随着现代Web应用程序变得非常庞大(例如仅3MB +的JavaScript),必须提出这样的问题:

我的应用程序在单个文件中使用3MB + JavaScript加载会更快吗?或者,如果多个较小的文件分布在主机名中,它会加载得更快吗?

为了简单起见,我们还应该假设遵循其他"最佳实践",因此这个问题最好存在于真空中.

我还没有看到关于这个主题的任何实证数据,但我想必须有一个点,这些方法的表现有所不同 - 所以知道哪个甜点存在将是理想的.

javascript performance

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

从另一台计算机连接到Windows localhost(IIS)

我有一台为其localhost运行IIS7的Windows Vista笔记本电脑.在这台机器上,我可以成功导航到:

  • "HTTP:// localhost" 的
  • "http://127.0.0.1"
  • "HTTP:// mycpuname"

但是,我无法从同一网络上的另一台计算机访问此localhost网站.理想情况下,我可以访问"http:// mycpuname"(这样我就可以对连接进行硬编码),但此时我可能会考虑机器的IP地址(http://192.000.000.xyz )

我在这里和互联网上的其他地方看过类似的问题...但是这些帖子似乎都没有为我解决这个问题.

我尝试过的事情: - 向Windows防火墙添加例外以允许TCP端口80和8080 - 完全禁用Windows防火墙 - 在此帖子中运行"netsh"命令

此外,我通过命令提示符运行"ipconfig"来查看Windows笔记本电脑上的IP地址.奇怪的是,尝试从Windows笔记本电脑访问"http://192.000.000.xyz"似乎不起作用......

我也尝试重新启动IIS并重新启动我的机器.

救命?

networking iis-7 windows-vista

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

使用 JavaScript RegEx 匹配字节顺序标记 (BOM)

有没有一种简单的方法可以使用 JavaScript 正则表达式来匹配 BOM?我想构建一个在 Node.js 中执行此操作的实用程序,但以下内容似乎与任何内容都不匹配:

fixBomFiles : function(offendingFiles) {
    var i = 0,
        file, js;

    for (i=0; i < offendingFiles.length; i++) {
        file = offendingFiles[i];
        js = this.parent.fs.readFileSync(file, 'utf8');

        js = js.replace(/\uFEFF/g, '');

        this.parent.fs.writeFileSync(file, js, 'utf8');
    }
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我猜我的正则表达式不好,或者我不应该使用 UTF-8 编码进行读/写。

javascript regex node.js

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

单元测试AngularJS模块控制器

我正在看TODO MVC AngularJS示例,我看到应用程序被定义为一个模块.

var todomvc = angular.module('todomvc', []);
Run Code Online (Sandbox Code Playgroud)

在控制器内部,我看到它们被定义为:

todomvc.controller('TodoCtrl', function TodoCtrl($scope, $location, todoStorage, filterFilter) {
    //...
});
Run Code Online (Sandbox Code Playgroud)

我的问题涉及单元测试......如何为该类编写单元测试?

我尝试过这样的事情:

describe('TodoCtrl', function () {
    var controller;

    beforeEach(function () {
        controller = todomvc.TodoCtrl;
    });

    afterEach(function() {
        controller = null;
    });

    describe('addTodo() method', function() {
        console.log(controller)
        it('should do something', function () {
            expect(typeof controller.addTodo).toBe(true); //should fail
        });

    });
});
Run Code Online (Sandbox Code Playgroud)

...但是"控制器"最终变为空或未定义.

我是否需要修改TODO MVC应用程序,以便传递给todomvc.controller()的函数不是匿名的?

任何方向都会受到赞赏,因为我对Angular很新.

javascript jasmine angularjs

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

使用“npm publish”失败

我维护 NPM 包 LintRoller: - https://npmjs.org/package/lintroller

最近我尝试推送一个新版本,但出现以下错误:

npm ERR! publish Failed PUT response undefined  
npm ERR! Error: login error  
npm ERR!     at RegClient.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:82:22) 
npm ERR!     at CouchLogin.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-registry-client/node_modules/couch-login/couch-login.js:177:14) n## Heading ##pm ERR!     at CouchLogin.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-registry-client/node_modules/couch-login/couch-login.js:159:46) 
npm ERR!     at Request.self.callback (/usr/local/lib/node_modules/npm/node_modules/request/request.js:129:22) 
npm ERR!     at Request.EventEmitter.emit (events.js:98:17)  
npm ERR!  at Request.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/request/request.js:873:14) 
npm ERR!     at Request.EventEmitter.emit (events.js:117:20)  
npm ERR! at IncomingMessage.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/request/request.js:824:12) 
npm ERR!     at IncomingMessage.EventEmitter.emit (events.js:117:20)  
npm ERR!     at _stream_readable.js:920:16  
npm ERR! If you need help, you may report this …
Run Code Online (Sandbox Code Playgroud)

node.js npm

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

console.log()没有出现在我的终端(nwjs)

在我的nwjs应用程序中,我从HTML文件加载_launch.js文件:

<html>
<body>
<script type="text/javascript" src="_launch.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在我的_launch.js文件中,我启动了快速服务器和socketIO所需的Node进程.

var express = require('express'),
    app = express(),
    server = require('http').Server(app),
    io = require('socket.io')(server),
    gui = require('nw.gui'),

    __curDir = process.cwd(),

    //keep the logic for the IO connections separate
    ioServer = require(__curDir + '/server.js');

//configure Express to default web requests to /workspace/ folder
app.use(express.static(__curDir + '/workspace'));

ioServer.init(io, console);

server.listen(3000, function () {
    console.log('HTTP server listening on *:3000');
    window.location = 'http://localhost:3000/MyApp/';
});
Run Code Online (Sandbox Code Playgroud)

该应用程序启动很好,我的快递/ socketIO连接都完美的工作.

但是当我的终端中出现server.listen()回调中的console.log()时,我尝试从server.js文件(之前需要)记录的任何消息都不会出现在任何地方.

有什么想法吗? …

javascript node.js node-webkit nw.js

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

React Material-ui:使工具栏上的项目居中

我正在尝试在页面上实现一个工具栏,其中包含三个ToolbarGroup组件:

            <Toolbar>
                <ToolbarGroup firstChild={true} float="left">
                    {prevButton}
                </ToolbarGroup>

                <ToolbarGroup>
                    {releaseBtn}
                </ToolbarGroup>

                <ToolbarGroup lastChild={true} float="right">
                    {nextButton}
                </ToolbarGroup>
            </Toolbar>
Run Code Online (Sandbox Code Playgroud)

一般的想法是prevButton应该一直渲染到工具栏的左侧(确实如此),nextButton应该一直渲染到右侧(确实如此)......并且releaseBtn应该以工具栏为中心(当前没有发生)。

根据material-ui文档,似乎没有一些简单的设置centered={true}——我怎样才能做到这一点?

我尝试过手动将中间的样式设置ToolbarGroupmargin: 0px auto,但这似乎没有帮助。

javascript reactjs material-ui

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