我正在尝试获取当前正在运行的函数的名称.根据我的阅读,这应该可以使用:
(arguments.callee.toString()).match(/function\s+(\[^\s\(]+)/)
Run Code Online (Sandbox Code Playgroud)
但是,当我在Firefox和Safari(Mac上的最新版本)中运行它时,不会返回该名称.
console.log(arguments.callee)返回函数的源,但不返回指定的名称.arguments.callee.name返回一个空字符串.
我的示例代码如下:
var testobj = {
testfunc: function(){
console.log( (arguments.callee.toString()).match(/function\s+(\[^\s\(]+)/) );
}
}
testobj.testfunc();
Run Code Online (Sandbox Code Playgroud) 我的联合创始人和我正在为我们的创业公司设置我们的服务器.我们使用git作为源代码控制,项目是django在Ubuntu上通过fcgi坐在nginx后面.由于我们刚刚开始,并且为了使我们两个人都能轻松部署,我想在服务器上安装一个简单的部署脚本,它将自动从git中提取最新的代码更改,然后部署它们.
我知道我可以手动编写一个bash或python脚本来执行此操作,但我希望首先找出是否有其他相对容易使用的软件解决方案,我可以绑定.在这个阶段,我们对连续部署没什么兴趣,但我想在那个领域可能会有一些对我们有用的软件包.
似乎pycairo在5月份分为2.x版本的py2cairo.py2cairo没有pip或easy_install安装选项.我抓住了最新的py2cairo tar,以及注册为依赖项的cairo 1.8.10软件包.当我尝试首先配置cairo时,它最终会出错,它需要pkg-config.但是,我也找不到pip或easy_install中的pkg-config安装选项.我完全失去了如何安装py2cairo.我在Mac Snow Leopard上这样做.
我正在寻找有关如何在以下情况下提高数据库性能的提示.
作为一个示例应用程序,我今天编写了一个相当简单的应用程序,它使用Twitter流API搜索某些关键字,然后我将结果存储在MongoDB中.该应用程序是用Node.js编写的.
我正在存储2个收藏品.一个存储关键字和一个推特ID的数组,它们引用了每个提到该关键字的推文.使用带有{upsert:true}的.update()将这些内容添加到数据库中,以便将新ID附加到'ids'数组.
此集合中的示例文档如下所示:
{"_ id":ObjectId("4e00645ef58a7ad3fc9fd9f9"),"ids":["id1","id2","id3"],"keyword":"#chocolate"}
更新代码:
keywords.update({keyword: key_word},{$push:{ids: id}},{upsert:true}, function(err){})
Run Code Online (Sandbox Code Playgroud)
第二个集合看起来像这样,只需使用.save()添加
{
"twt_id": "id1",
"tweet": { //big chunk of json that doesn't need to be shown }
}
Run Code Online (Sandbox Code Playgroud)
我现在已经在我的Macbook上运行它已经持续了大约2个小时.我存储了大量数据,可能每分钟存储数百个文档.现在Mongodb中的对象数量是120k +.
我注意到的是,自从我开始最新的测试运行以来,数据库进程的CPU使用率高达84%并且一直在逐渐上升.
我正在阅读设置索引,但由于我正在添加文档而不是针对它们运行查询,我不确定索引是否会有所帮助.我想到的一个想法是update()可能正在进行查找,因为我正在使用$ push并且索引可能对此有所帮助.
我应该怎么看待MongoDB不要吃掉越来越多的CPU?
我正在尝试找到最优雅的方式让我的node.js应用程序在发生某些事情时死亡.在我的特定情况下,我有一个配置文件,其中包含必须满足的某些require参数,然后才能启动并正确配置服务器.
我发现这样做的一种方法是:
var die = function(msg){
console.log(msg)
process.exit(1);
}
die('Test end');
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来处理这种情况?
编辑 花了几个小时来完成这个并使用@pst之后,事实证明这个问题完全不同了.
在代码中,您可以看到我使用了"+ new Date()"的时间戳快捷方式.这将返回时间戳,标准"new Date().getTime()"也是如此.
但是,+ new Date()在与数学运算(+, - ,/)一起使用时执行得非常非常糟糕.虽然'start'变量的typeof()表示'number',但是有些东西会让它变得很慢.使用标准getTime()方法时,在进行时序减法时不会有性能损失.
看一下详细解决这个问题的jsperf,http: //jsperf.com/new-date-timing .
关于@pst的非常详细的答案以及我为复制链接问题所做的努力,使用他的答案作为该问题的规范答案.
我将更改此问题的标题以准确反映@ pst的答案和我的原始意图,但会保留原始标题和问题以供将来参考.
新问题
javascript数组是否对随机排序和未排序数据的数组使用分支预测?
请参阅下面的@ pst答案.
原标题和问题如下
标题:数组迭代在同一数据上占用2倍的时间
我之前看过这个问题,为什么处理排序数组比未排序数组更快?,并想尝试在JavaScript中设置相同的测试.
这让我意想不到.在以下小提琴中链接的测试中,简单地使用相同的代码迭代相同的随机生成的数值数组会导致响应时间大不相同.
我在Chrome,Safari,Firefox和node.js中对此进行了测试.
在Chrome&node中,第一次迭代比第二次迭代更快.在Safari和Firefox中,第一次迭代比第二次迭代慢.
这是小提琴,http://jsfiddle.net/9QbWB/6/
在链接的小提琴中,我禁用了排序(认为最初是问题,但事实并非如此).对数据进行排序使循环更长.
我已经彻底完成了代码,以确保我删除了任何可能影响结果的内容.我觉得这是一群特别的科学家宣布FTL中微子,我在实验中找不到问题,数据是出乎意料的.
在下面包含的代码中,初始setTimeout,jQuery DOM可视化等一些内容用于在jsfiddle.net中直观地显示数据.核心功能是相同的.
//javascript test of https://stackoverflow.com/questions/11227809/why-is-processing-a-sorted-array-faster-than-an-unsorted-array
setTimeout(function(){
var unsorted_list = $('#unsorted'),
sorted_list = $('#sorted');
var length = 32768,
data = [];
for(var i=0; i<length; i++){
data[i] = Math.floor( Math.random()*256);
}
var test = function(){
var sum = 0,
start = +new Date();
for(var i=0; …Run Code Online (Sandbox Code Playgroud) 我试图在Firefox 3.6上测试预取.我正在使用:
<link rel="prefetch" href="hst_galaxy.jpg"/>
Run Code Online (Sandbox Code Playgroud)
我在Firebug的Net面板中没有看到任何请求.当我查看Apache 2日志时,我只看到了页面请求,之后没有任何内容.我也没有看到预期的X-moz: prefetch标题.我还使用Wireshark检查了数据包,并且没有发送预取头.我还使用了LiveHttpHeaders(FF扩展),并且不再发送预取头.
我查看了我的about:config选项,并启用了"network.prefetch-next".
我的测试设置在Mac OS 10.5.8上.我正在使用Apache的本地安装,并从sites目录中的测试HTML文件运行它.我尝试了3种不同的域名选项:
localhost.com和randomurl.com是我在/ etc/hosts文件中配置的域.可以访问测试页面.
我访问过此页面,表示X-Moz已检测到标题.http://browserspy.dk/prefetch.php
在Firefox中,它说是的.在Chrome/Safari中它说不,这是预期的.同样,我无法检测到X-Moz使用Wireshark或LiveHttpHeaders发送的标头.在查看该页面的来源时,我确实看到了正确的<link rel="prefetch">元素.
我真的不确定我错过了什么.我已经非常彻底地测试了这个,如果我没有从Firefox中检测到任何内容并且在Apache中没有记录任何内容,我就不会看到它是如何工作的.
有没有人可以分享一些启示?
我有2个绑定我正在调用路径和回调.
我要做的是返回第一个非空的.在javascript中它看起来像这样:
var final = path || callback || "";
Run Code Online (Sandbox Code Playgroud)
我怎么在clojure中这样做?
我正在看"某些"功能,但我无法弄清楚如何将compjure.string/blank检查结合起来.我目前将此作为测试,但不起作用.在这种情况下,我认为它应该返回零.
(some (clojure.string/blank?) ["1" "2" "3"])
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它应该返回2
(some (clojure.string/blank?) ["" "2" "3"])
Run Code Online (Sandbox Code Playgroud) 我想以编程方式创建一个新窗口.我有以下代码,它构建,但我的窗口没有显示.我可以看到它的唯一方法是将它作为子窗口添加到默认的"窗口".我怎样才能让'胜利'成为一个独立的窗口?
@IBOutlet var window: NSWindow
func applicationDidFinishLaunching(aNotification: NSNotification?) {
var win = NSWindow(contentRect: NSMakeRect(100, 100, 600, 200),
styleMask: NSResizableWindowMask,
backing: NSBackingStoreType.Buffered, defer: true)
window.addChildWindow(win, ordered:NSWindowOrderingMode.Above)
}
Run Code Online (Sandbox Code Playgroud) 我需要能够传递文件下载的URL,以及要保存到的文件的路径.
我认为它与CURL上的-O和-o有关,但我似乎无法弄明白.
例如,这就是我现在在bash脚本中使用的内容:
#!/bin/sh
getsrc(){
curl -O $1
}
getsrc http://www.apache.org/dist/ant/binaries/apache-ant-1.7.1-bin.tar.gz
Run Code Online (Sandbox Code Playgroud)
如何更改curl语句以便我可以这样做
getsrc http://www.apache.org/dist/ant/binaries/apache-ant-1.7.1-bin.tar.gz /usr/local
Run Code Online (Sandbox Code Playgroud)
并将文件保存到/ usr/local?
javascript ×2
node.js ×2
arrays ×1
bash ×1
cairo ×1
clojure ×1
curl ×1
deployment ×1
easy-install ×1
firefox ×1
firefox3.6 ×1
function ×1
gecko ×1
git ×1
http-headers ×1
kill-process ×1
mongodb ×1
performance ×1
pip ×1
prefetch ×1
pycairo ×1
python ×1
swift ×1