有没有人知道这是否可能?节点检查器的大部分示例似乎都适合调试调用的网页.我希望能够调试jasmine-node测试.
我已经看到这个问题涉及其他平台/语言 - 任何想法?我想做点什么:
if (detectDebug())
{
require('tty').setRawMode(true);
var stdin = process.openStdin();
stdin.on('keypress', function (chunk, key) {
DoWork();
}
}
else
{
DoWork();
}
Run Code Online (Sandbox Code Playgroud)
我希望能够在调试时切换键盘输入作为脚本的开始,这样我就可以有时间启动chrome来监听我的node-inspector端口.
***快速更新 - 我猜我实际上可以使用"process.argv"来检测是否传入了--debug.这是最佳/正确的方法吗?
今天有人用蓝鸟提出了一个有趣的案例,处理多项承诺的最佳方法是什么,我们对于停止特定的履行或拒绝不感兴趣,而是对检查最终结果感兴趣.一个例子:
var p1 = new Promise(function(f,r){
setTimeout(function(){
console.log("p1");
f("yay");
}, 100);
});
var p2 = new Promise(function(f,r){
setTimeout(function(){
console.log("p2");
r(new Error("boo"));
}, 200);
})
var p3 = new Promise(function(f,r){
setTimeout(function(){
console.log("p3");
r(new Error("yay"));
}, 300);
});
var p4 = new Promise(function(f,r){
setTimeout(function(){
console.log("p4");
f("yay");
}, 400);
});
//Promise.all([p1,p2, p3, p4]).then(function(p){
// console.log("Results:",p);
//}).error(function(e){
// console.log("Error:",e);
//});
Promise.map([p1,p2, p3, p4],function(p){
console.log("results:",p);
}, {concurrency:10}).error(function(e){
console.log("Error:",e);
});
Run Code Online (Sandbox Code Playgroud)
在这里,如果我们运行地图或所有被拒绝的承诺将导致处理程序不报告结果.
例如,上面实现的运行Promise.map的结果是:
debugger listening on port 65222
p1
results: yay
p2
Error: [Error: boo]
p3
p4 …Run Code Online (Sandbox Code Playgroud) 如果您的Node.js代码中充满了console.log语句,您是否会引发性能问题?是否值得调试/生产切换这个开/关?我意识到日志记录对于一般情况来说很重要 - 但我一般都很好奇控制台输出是否会受到性能影响?
在chrome中的客户端脚本中,如果控制台处于打开状态,它肯定会降低性能.
处理此方案的最佳方法是什么.我处于受控环境中,我不想崩溃.
var Promise = require('bluebird');
function getPromise(){
return new Promise(function(done, reject){
setTimeout(function(){
throw new Error("AJAJAJA");
}, 500);
});
}
var p = getPromise();
p.then(function(){
console.log("Yay");
}).error(function(e){
console.log("Rejected",e);
}).catch(Error, function(e){
console.log("Error",e);
}).catch(function(e){
console.log("Unknown", e);
});
Run Code Online (Sandbox Code Playgroud)
从setTimeout中抛出时,我们总是得到:
$ node bluebird.js
c:\blp\rplus\bbcode\scratchboard\bluebird.js:6
throw new Error("AJAJAJA");
^
Error: AJAJAJA
at null._onTimeout (c:\blp\rplus\bbcode\scratchboard\bluebird.js:6:23)
at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
Run Code Online (Sandbox Code Playgroud)
如果抛出发生在setTimeout之前,那么bluebirds catch会把它拿起来:
var Promise = require('bluebird');
function getPromise(){
return new Promise(function(done, reject){
throw new Error("Oh no!");
setTimeout(function(){
console.log("hihihihi")
}, 500);
});
}
var p = getPromise();
p.then(function(){ …Run Code Online (Sandbox Code Playgroud) 是否有任何工具可以帮助程序员真正想要类型安全和更严格的c#或java等javascript语言规则?
例如,某些东西说分析了源文件并找到了未声明的变量或定义类型对象的js文件,比如int或string?
我在面试条件下迅速写了这篇文章,我想把它发布到社区,看看是否有更好/更快/更清洁的方式去做.怎么可以这个优化?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Stack
{
class StackElement<T>
{
public T Data { get; set; }
public StackElement<T> Below { get; set; }
public StackElement(T data)
{
Data = data;
}
}
public class Stack<T>
{
private StackElement<T> top;
public void Push(T item)
{
StackElement<T> temp;
if (top == null)
{
top = new StackElement<T>(item);
}
else
{
temp = top;
top = new StackElement<T>(item);
top.Below = temp;
}
}
public T Pop()
{ …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,它将成为订阅服务的前端.我想在应用程序中嵌入一个通道不可知的信使(gchat,msn,yahoo,facebook等)(这样做有很多关键业务驱动因素).我已经检查了libpurple,它似乎有我需要的一切,但我相信如果我在我的部署包中包含libpurple(甚至作为一个dll),我将不得不GPL我的父应用程序.
我相信,这不会是一个选择(虽然它会很好) - libpurple的许可证是否有更少的限制许可?
我在C#中写了一个hashmap作为自学练习.我想将链接实现为碰撞处理技术.起初我以为我只是使用GetHashCode作为我的哈希算法,但我很快发现使用GetHashCode返回的数字并不总是可行的(如果你想索引和数组,那么int的大小会导致内存不足.数字和数字可以是负数:().所以,我提出了一种缩小数字的kludgey方法(参见MyGetHashCode).
有没有人对此实现(哈希函数和一般情况)有任何指针/提示/批评?提前致谢!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace HashMap
{
class Program
{
public class MyKVP<T, K>
{
public T Key { get; set; }
public K Value { get; set; }
public MyKVP(T key, K value)
{
Key = key;
Value = value;
}
}
public class MyHashMap<T, K> : IEnumerable<MyKVP<T,K>>
where T:IComparable
{
private const int map_size = 5000;
private List<MyKVP<T,K>>[] storage;
public MyHashMap()
{
storage = new List<MyKVP<T,K>>[map_size];
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{ …Run Code Online (Sandbox Code Playgroud) 在下面的jsperf中:http://jsperf.com/defined-function-vs-in-loop-function/3
你会注意到这段代码:
for (var i = 0; i < loops; i++) {
function func(a, b) {
return a + b;
};
func(i, i);
}
Run Code Online (Sandbox Code Playgroud)
执行此代码:
function declaredFn(a, b) {
return a + b;
};
for (i = 0; i < loops; i++) {
declaredFni, i);
}
Run Code Online (Sandbox Code Playgroud)
但是这段代码:
for (i = 0; i < loops; i++) {
var func = function(a, b) {
return a + b;
};
func(i, i);
}
Run Code Online (Sandbox Code Playgroud)
比这段代码慢得多:
var expfunc = function(a, b) {
return …Run Code Online (Sandbox Code Playgroud) 如果图像为1024x1250且画布元素为600x800,我可以将图像绘制到画布中心,使得画布本质上是较大图像的较小视图端口.然后,我想允许该中心点移动,从而产生视口正在查看图像的不同部分的错觉.
现在我已经完成了这种方式,我重新绘制了我想要看到画布的图像部分,但我觉得这不是最佳的.有没有办法将整个图像渲染到画布然后以某种方式"转换"我当前的中心点,以便这种视图转换发生在幕后,希望在某些原生图层中?
我很好奇它是用目标C写的还是可能微软考虑更严肃地对待单声道?任何.NET都是Office 2011 for mac?
javascript ×5
node.js ×5
c# ×3
bluebird ×2
debugging ×2
performance ×2
promise ×2
asynchronous ×1
console ×1
hashmap ×1
html5-canvas ×1
jasmine ×1
libpurple ×1
logging ×1
macos ×1
ms-office ×1
optimization ×1
stack ×1