小编Ale*_*der的帖子

在几个模块中使用winston

我有几个模块 - 比如说server.js,module1.js,...,moduleN.js.

我想在server.js中定义日志文件:

winston.add(winston.transports.File, { filename: 'mylogfile.log' });
Run Code Online (Sandbox Code Playgroud)

然后在我的所有模块中使用它.

最好的方法是什么?我可以exports.winston=winston;在每个模块中然后在server.js中设置它,但有没有更好的解决方案?

先感谢您!

node.js winston

60
推荐指数
6
解决办法
3万
查看次数

如何将变量传递给ejs.compile

我的bottom_index.ejs看起来像这样:

<div>The bottom section</div>
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我声明了ejs:

ejs = require('ejs');
Run Code Online (Sandbox Code Playgroud)

然后编译函数:

var botom_index_ejs =
ejs.compile(fs.readFileSync(__dirname + "/../views/bottom_index.ejs", 'utf8'));
Run Code Online (Sandbox Code Playgroud)

然后调用它来渲染html:

botom_index_ejs()
Run Code Online (Sandbox Code Playgroud)

它工作正常!

现在我想将模板更改为:

<div><%= bottom_text %></div>
Run Code Online (Sandbox Code Playgroud)

并能够将参数(bottom_text)传递给bottom_index.ejs

我应该如何传递参数?

谢谢!

ejs node.js

10
推荐指数
1
解决办法
8466
查看次数

监控js错误

我有兴趣监视javascript错误并使用callstack记录错误.

我不想将所有东西都包装在try-catch块中.

根据这篇文章,http://blog.errorception.com/2011/12/call-stacks-in-ie.html 可以在window.onerror内部" 递归调用.caller来查找堆栈中的每个函数,以了解之前的函数堆栈 "

我试图获得callstack:

window.onerror = function(errorMsg, url, lineNumber)
{
    var stk = [], clr = arguments.callee.caller;
    while(clr)
    {
        stk.push("" + clr);
        clr = clr.caller;
    }
    // Logging stk
    send_callstack_to_log(stk);
}
Run Code Online (Sandbox Code Playgroud)

但即使callstack更长,也只有一步是可能的:

(function()
{
function inside() {it.will.be.exception;};
function middle() {inside()};
function outside() {middle()}
outside();
})();
Run Code Online (Sandbox Code Playgroud)

一步并不有趣,因为onerror参数给了我更多关于它的信息.

是的,我根据上面提到的文章用IE尝试过.

备注:我还尝试在"ERRORCAEPTION"上开设一个帐户来收集错误日志.我用IE测试它并且"ERRORCAEPTION"认识到错误来自IE,但我在日志中找不到任何callstack信息.

javascript

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

防止 Android Webview 更改字体大小(计算样式)

我有一个网页,由 Android 应用程序通过 Webview 组件显示。

它决定更改字体大小,因此 16px 的文本具有 font-size=14px(当我使用 weinre 检查元素时我可以看到它。它有 16px,但在计算样式中它有 14px)。

我不希望 Webview 决定什么更好。那么我该如何解决这个问题呢?

备注:在这种特定情况下,更改会导致文本不垂直对齐,因为更改后行高不会调整字体大小。这只是其中一种情况,我想阻止 Webview 更改 css 值。

css android

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

点击"下载"链接使用JQuery不下载文件

我有一个href和下载属性的链接:

  <a id="lnk" href="data:text/csv;charset=utf-8,1%2C2%2C3" download="my_file.csv">click to download</a>
Run Code Online (Sandbox Code Playgroud)

当我点击它(例如在Chrome中)时,会按照假设下载csv文件"my_file.csv".

现在我希望能够以编程方式引发此操作.所以使用JQuery我试图做:

$('#lnk').click();
Run Code Online (Sandbox Code Playgroud)

要么

$('#lnk').trigger("click");
Run Code Online (Sandbox Code Playgroud)

但是没有下载该文件.

这是代码:http: //jsbin.com/yereg/3/edit

我可以从链接复制链接地址,然后只使用window.open:

window.open('data:text/csv;charset=utf-8,1%2C2%2C3');
Run Code Online (Sandbox Code Playgroud)

但这样我就无法设置文件名(链接按download="my_file.csv"属性).如果有办法设置文件名,这个解决方案很好.

备注:在我的情况下,应支持Chrome和Firefox.我不关心其他浏览器.

html javascript jquery

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

使用selenium-webdriver/firefox(NodeJS)设置userAgent

我有一个使用'selenium-webdriver'运行浏览器的代码.它运行在Ubuntu上.

我必须覆盖userAgent,因此看起来来自浏览器的请求来自Windows(即User-Agent请求标题的值).

这是我的NodeJS代码:

var firefox = require('selenium-webdriver/firefox');

var profile = new firefox.Profile();
profile.setPreference('general.useragent.override', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36');

var options = new firefox.Options().setProfile(profile);
console.log(profile);
var driver = new firefox.Driver(options);

driver.get('http://whatsmyuseragent.com/');
Run Code Online (Sandbox Code Playgroud)

出现的userAgent是

Mozilla/5.0(X11; Ubuntu; Linux x86_64; rv:49.0)Gecko/20100101 Firefox/49.0

这是console.log(profile); 输出(如你所见 - 'general.useragent.override':'Mozilla/5.0(Windows NT 10.0; WOW64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/53.0.2785.143 Safari/537.36'出现在那里,但没有t影响浏览器设置):

Profile {
  preferences_: 
   { 'browser.dom.window.dump.enabled': true,
     'browser.laterrun.enabled': false,
     'browser.newtab.url': 'about:blank',
     'browser.newtabpage.enabled': false,
     'browser.startup.page': 0,
     'browser.startup.homepage': 'about:blank',
     'browser.startup.homepage_override.mstone': 'ignore',
     'browser.usedOnWindows10.introURL': 'about:blank',
     'dom.max_chrome_script_run_time': 30,
     'dom.max_script_run_time': 30,
     'dom.report_all_js_exceptions': …
Run Code Online (Sandbox Code Playgroud)

firefox selenium user-agent node.js selenium-webdriver

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

Python 的 pbkdf2_sha256.verify 的 NodeJS 实现

我必须将这个 Python 代码翻译为 NodeJS:

from passlib.hash import pbkdf2_sha256
pbkdf2_sha256.verify('12345678', '$pbkdf2-sha256$2000$8R7jHOOcs7YWImRM6V1LqQ$CIdNv8YlLlCZfeFJihZs7eQxBsauvVfV05v07Ca2Yzg')
>> True
Run Code Online (Sandbox Code Playgroud)

上面的代码是完整的代码,即没有其他参数/​​设置(只需pip install passlib在运行它来安装passlib包之前运行)。

我正在寻找validatePasswordNode 中函数的正确实现,它将通过这个积极的实现测试:

validatePassword('12345678', '$pbkdf2-sha256$2000$8R7jHOOcs7YWImRM6V1LqQ$CIdNv8YlLlCZfeFJihZs7eQxBsauvVfV05v07Ca2Yzg')
>> true
Run Code Online (Sandbox Code Playgroud)

这是passlib.hash.pbkdf2_sha256 及其默认参数值的文档。

我尝试使用上面的 Python 代码中的数据来遵循此处的答案,但该解决方案没有通过测试。

我希望获得有关此实现的一些帮助(最好使用内置 NodeJScrypto包)。

先感谢您。

python cryptography sha256 pbkdf2 node.js

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

使用Adwords API检索广告系列的所有附加链接

我必须使用Adword的API从Adwords中检索数据。

我成功检索了具有所有必要属性等的帐户,广告系列,广告组,广告和关键字。

我在检索站点链接时遇到问题。

我尝试对一个活动进行此操作,该活动是一个具有100个附加链接的有效活动(已选择6个)。

根据本文档,我使用CampaignAdExtensionService并选择CampaignAdExtensionService字段。这是我在ruby中的代码(假设campaign_id为12345678):

      campaign_srv = @api.service(:CampaignAdExtensionService, get_api_version())
      campaign_id = 12345678 # for example


      selector = {
          :fields => ['CampaignId', 'DestinationUrl', 'DisplayText'],
          :predicates => {:field => "CampaignId", :operator => "IN", :values => Array(campaign_id)},
          :paging => {:start_index => 0, :number_results => 5000}
      }

      page = campaign_srv.get(selector)
Run Code Online (Sandbox Code Playgroud)

运行此代码,我得到一个不包含任何附加链接的哈希对象:

page.to_json =“ {” total_num_entries“:1,” page_type“:” CampaignAdExtensionPage“,” entries“:[{” campaign_id“:12345678,” ad_extension“:{” id“:76543210,” ad_extension_type“:” LocationSyncExtension“ ,“ email”:“邮件* @ domain * .com”,“ icon_media_id”:1000,“ should_sync_url”:false,“ xsi_type”:“ LocationSyncExtension”},“ stats”:{“ network”:“ ALL”,“ stats_type“:” CampaignAdExtensionStats“}}]}”

如何检索广告系列的所有附加链接?

google-adwords

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

Chrome --enable-precise-memory-info 不起作用,并且 Performance.memory 仍然是分桶的

我必须以编程方式测试 Windows 上 Chrome 中某些页面的内存使用情况。

这是我的 Chrome 版本(60.0.3112.113 - 官方版本 - 64 位) 在此输入图像描述

按照Chromium 命令行开关文档,我使用--enable-precise-memory-info以下标志运行 Chrome:

在此输入图像描述

然后在打开的 Chrome 实例中我尝试检查值window.performance.memory.usedJSHeapSize

但看起来尽管有--enable-precise-memory-info标志,但此信息仍然被存储在桶中。

在此输入图像描述

即使在 Chrome 任务管理器 (Shift + Esc) 中,我也发现每次执行以下命令后,内存使用量都会增加约 1 Mb:

for(let i=0;i<100000;i++) {a.push('sdftgkljhghertyukytedtreut56ytirty7uikty' +i)}
Run Code Online (Sandbox Code Playgroud)

我只发现了一个关于这个问题的过时的讨论,即使这个问题存在,我也希望在网上找到更多的讨论。

如果我做错了什么——我的错误是什么?

如果不再支持此标志,那么新的正确方法是什么?

谢谢你!

javascript google-chrome chromium google-chrome-devtools

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

Ruby eval没有圆形

我有一个要使用ruby eval评估的清理字符串.该字符串可以包含任何简单的算术公式,如'44/5'.

问题是结果eval('44/5')将是8(而不是8.8).

它作为评估的一部分发生(因为1.0*eval('44/5')给出8.0).

我没有为eval找到任何额外的参数来管理它.

我甚至尝试将字符串前置或包装以将其转换为:

'0.0+44/5'
Run Code Online (Sandbox Code Playgroud)

要么

'1.0*(44/5)'
Run Code Online (Sandbox Code Playgroud)

但它仍然没有给我8.8.

eval('44.0/5') 给了我想要的结果,但我不想在字符串中插入任何东西(我准备好在必要时包装它).

不知道怎样才能解决问题?

ruby

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

jquery attr('checked',false)错误

使用jquery 版本1.8我可以通过以下方式选中和取消选中复选框$el.attr('checked', logic_value):

http://jsbin.com/oyIQuJo/1/edit

使用jquery 版本1.10.1(或2.0.2),它只更改一次以检查然后取消选中,我无法再次设置它:

http://jsbin.com/oyIQuJo/2/edit

http://jsbin.com/oyIQuJo/3/edit

这是一个已知的行为/错误?最好的方法是什么,这样我可以多次检查/取消选中它?

我可以做$el[0].checked = logic_value(http://jsbin.com/oyIQuJo/4/edit),但我真的不喜欢这个解决方案,因为如果它有多个元素,我应该遍历选择器的所有元素.

javascript jquery

0
推荐指数
1
解决办法
77
查看次数