Tag: v8

node.js能够从URL读取吗?

我想要实现的是创build脚本,它将从URL读取,然后使用这些数据做一些操作。 在例子中。 这个脚本每5分钟运行一次,从某个地方加载页面,检查是否有改变,如果有什么改变(有一个小的特定的变化,我实际上会寻找,但没关系,因为这个想法保持同样),它会通过电子邮件发送给我一个警报。 问题是。 Node.js可以处理吗? 我可以用ruby创build这个脚本,或者甚至是shell脚本,每隔N分钟从服务器上的crontab运行; 但是我想尝试一下Node.js,这听起来像我有一个很好的“宠物项目”来尝试它。

Node.js原生插件中的枚举types

有没有可能创build一些enum在Node.js插件的C ++代码,然后公开这种types的JS代码? 我发现js中存在本地枚举types,但在v8引擎中没有关于它们的实现的信息。

如何禁用V8的优化编译器

我正在写一个常量string比较函数(对于node.js),并希望禁用V8的这个单一函数的优化编译器; 使用命令行标志是不可能的。 我知道使用with{} (或try / catch)块会立即禁用优化编译器,但是恐怕这个“function”(bug)将在未来的版本中得到修复。 有没有一个不可变的(和文件)的方式禁用V8的优化编译器? function示例: function constantTimeStringCompare( a, b ) { // By adding a `with` block here, we disable v8's optimizing compiler. // Using Object.create(null) ensures we don't have any object prototype properties getting in our way.our way. with ( Object.create( null ) ){ var valid = true, length = Math.max( […]

* v8 :: String :: Utf8Value(args – > ToString())不会返回node.js addon参数的string

我发现* v8 :: String :: Utf8Value(args [0] – > ToString())返回节点0.8.2上的正确string32位,并且不返回节点0.8.8上的正确string64-位。 有人明白为什么吗? 我的node.js插件看起来像这样: #define BUILDING_NODE_EXTENSION #include <node.h> #define MAX_OUTPUT_BUF 80 extern "C" char *do_sqlsig(char *in); using namespace v8; Handle<Value> Sqlsig(const Arguments& args) { HandleScope scope; char *c_arg, *ret; if (args.Length() < 1) { ThrowException(Exception::TypeError(String::New("Wrong number of arguments"))); return scope.Close(Undefined()); } c_arg = *v8::String::Utf8Value(args[0]->ToString()); ret = c_arg; […]

Node.js与HTTP响应正文unicode问题

使用本机“http”模块的HTTP请求的响应正文显示unicode字符的问号字符,而不是其实际值。 这是我正在运行的代码的基本代码片段。 var http = require('http'); var google = http.createClient(80, 'www.google.it'); var request = google.request('GET', '/', { 'host': 'www.google.it', } ); request.end(); request.on('response', function (response) { response.setEncoding('utf8'); response.on('data', function (chunk) { console.log(chunk); }); }); 在回应中有一个以“ Pubblicit ”开头的特定单词。 它的最后一个字母是一个奇怪的字符,显示为一个问号给我。 这个词应该是Pubblicità ,而不是Pubblicit? 。 我也尝试使用.toString()输出数据: console.log(chunk.toString()); 要么 console.log(chunk.toString('utf8')); 但是我得到了同样的结果。 任何想法?

关于这个/ @在Javascript / Coffeescript中的一个难题

我正在通过Trevor Burnham的CoffeeScript书,我遇到了一个关于this / @的奇怪的难题。 这个难题有几个部分(我可能只是很困惑),所以我会尽力使这个尽可能清楚。 我遇到的主要问题是,通过不同的REPL和解释器,运行相同的代码会得到各种不一致的结果。 我正在testing(1) coffee REPL和解释器,(2)Node的REPL和解释器,以及(3)V8的REPL和解释器。 这里是代码,首先是Coffeescript,然后是Javascript: // coffeescript setName = (name) -> @name = name setName 'Lulu' console.log name console.log @name // Javascript via the coffee compiler (function() { var setName; setName = function(name) { return this.name = name; }; setName('Lulu'); // console.log for node below – print for v8 // […]

有什么方法可以将元数据添加到JavaScript对象?

我想向任意的JavaScript对象添加元数据的键值对。 这个元数据不应该影响不知道元数据的代码,这就意味着例如 JSON.stringify(obj) === JSON.stringify(obj.WithMetaData('key', 'value')) 元数据感知的代码应该能够通过键检索数据,即 obj.WithMetaData('key', 'value').GetMetaData('key') === 'value' 有没有办法做到这一点 – 在node.js? 如果是这样,它是否适用于内置types,如String 和偶数 ? ( 编辑思考一下,我不关心像数字这样的真实原语 ,但是对于string实例来说,这样做会很好)。 一些背景:我想要做的是caching从一个对象与对象本身派生的值,以便 到元数据不知道的代码,元数据丰富的对象将看起来与原始对象W / O元相同 如果已经被caching,需要派生值的代码可以从元数据中取出 caching将被垃圾收集在对象旁边 另一种方法是将哈希表与高速caching存储在一起,但永远不知道对象何时被垃圾收集。 每个对象实例都必须手工处理,以防止caching泄漏。 (顺便说一句clojure有这个function: http : //clojure.org/metadata )

最简单的方法(单行)从v8函数获取默认参数?

自从我使用C ++以来,已经有很长的一段时间了,甚至更长的时间,因为我把自己的头围绕在硬的types上。 我只是寻找一个工作class轮从v8获得参数,或者当一个参数没有提供时的默认值。 v8::String::Utf8Value arg0(args[0]); v8::String::Utf8Value arg1(args[1]); v8::String::Utf8Value arg2(args[2]); const char *username = (args.Length() > 0) ? *arg0 : ""; const char *password = (args.Length() > 1) ? *arg1 : ""; const char *service = (args.Length() > 2) ? *arg2 : "login"; 输出: FUNC(); // {用户名:“”,密码:“”,服务:“login”} FUNC( '1'); // {用户名:“1”,密码:“”,服务:“login”} func('1','2'); // {用户名:“1”,密码:“2”,服务:“login”} func('a','b','c'); // […]

node.js数组实际上hashmaps?

令我惊讶的是,这段代码实际上在node.js中起作用: var arr = new Array(); // also works: var arr = []; arr[0] = 123; arr['abc'] = 456; arr; // node.js: [ 123, abc: 456 ], chrome: [123] 我一直认为一个数组按顺序存储它的对象,只能通过一个整数键来访问,就像C ++中的std :: vector一样。 然而,在这里它就像一个地图或一个对象。 除了混淆之外,相同的代码在chrome中也能像预期的那样工作,使用单个条目123返回数组。我认为node.js和chrome javascript使用相同的内部引擎V8。 这里发生了什么?

node.js v8垃圾收集似乎没有触发

我很困惑,因为我的应用程序正在泄漏内存。 这是一个tcp服务器,每分钟处理数十万个数据包。 我已经检查了代码,改进了它并分析了内存。 一切似乎没问题,在低stream量本地testing显示,gc正确释放内存。 但是,如果在stream量大的stream量服务器上,它不会。 所以我尝试使用的expose-gc选项,并添加强制gc到每一个断开连接,现在我发现内存不再泄漏,或者它甚至每一次泄漏? 所以,我的结论是gc没有激活。 我的服务器有3GB的内存,并在几个小时内的应用程序可以吃2.8GB的。 现在强制gc的应用程序不再泄漏。 它维持大约200MB的内存。 所以,我的问题是,为什么gc没有被触发?