该$.getJSON()文件规定:
如果指定的URL位于远程服务器上,则该请求将被视为JSONP.有关
jsonp更多详细信息,请参阅$ .ajax()中有关数据类型的讨论.
数据类型的$.ajax()文档jsonp说明(强调我的):
使用JSONP加载JSON块.会添加一个额外的"?callback =?" 到URL的末尾以指定回调.
所以,如果我$.getJSON()使用跨域URL 调用,那么额外的"回调=?" 参数应自动添加.(文档的其他部分支持这种解释.)
但是,我没有看到这种行为.如果我不添加"callback =?" 显式地,jQuery错误地生成XMLHttpRequest(由于我无法读取响应跨域,因此返回空数据).如果我明确地添加它,jQuery正确地发出<script>请求.
这是一个例子:
var URL = "http://www.geonames.org/postalCodeLookupJSON" +
"?postalcode=10504&country=US";
function alertResponse(data, status) {
alert("data: " + data + ", status: " + status);
}
$.getJSON(URL, alertResponse);
// alerts "data: null, status: success"
$.getJSON(URL + "&callback=?", alertResponse);
// alerts "data: [object Object], status: undefined"
Run Code Online (Sandbox Code Playgroud)
发生什么了?我误解了文档还是遗忘了什么?
不言而喻,这不是一个大问题,但我正在创建一个Web API,我故意将回调参数设置为"回调",希望能很好地适应jQuery的使用.
谢谢!
(编辑:如果你有兴趣,我会在jQuery论坛中交叉发布.)
我认为我遇到了一个基本的误解,就我在红宝石中如何处理线程而言,我希望得到一些见解.
我想拥有一个简单的制作人和消费者.首先,一个生产者线程从文件中提取线条并将它们粘贴到SizedQueue中; 当那些用完时,最后贴上一些令牌让消费者知道事情已经完成.
require 'thread'
numthreads = 2
filename = 'edition-2009-09-11.txt'
bq = SizedQueue.new(4)
producerthread = Thread.new(bq) do |queue|
File.open(filename) do |f|
f.each do |r|
queue << r
end
end
numthreads.times do
queue << :end_of_producer
end
end
Run Code Online (Sandbox Code Playgroud)
现在有几个消费者.为简单起见,我们让他们什么都不做.
consumerthreads = []
numthreads.times do
consumerthreads << Thread.new(bq) do |queue|
until (line = queue.pop) === :end_of_producer
# do stuff in here
end
end
end
producerthread.join
consumerthreads.each {|t| t.join}
puts "All done"
Run Code Online (Sandbox Code Playgroud)
我的理解是(a)一旦SizedQueue已满,生产者线程将阻塞并最终回到填充状态,并且(b)消费者线程将从SizedQueue中拉出,在它清空时阻塞,并最终完成.
但是在ruby1.9下(ruby 1.9.1p243(2009-07-16修订版24175)[i386-darwin9])我在连接上遇到死锁错误.这里发生了什么?我只是没有看到线程之间的任何交互,除了通过SizedQueue,它应该是线程安全的.
任何见解都会受到高度赞赏.
我知道一些差异,
我错过了还有其他的区别......如果是的话,他们是什么?
我想开始考虑如何扩展我为数据分析编写的算法,以便它们可以应用于任意大的数据集.我想知道有什么相关概念(线程,并发,不可变数据结构,递归)和工具(Hadoop/MapReduce,Terracota和Eucalyptus)才能实现这一点,以及这些概念和工具如何相互关联.我有R,Python和bash脚本以及C和Fortran编程的基本背景,尽管我也熟悉一些基本的函数编程概念.我是否需要改变我编程的方式,使用不同的语言(Clojure,Haskell等),或者简单地(或者不那么简单!)适应R/Hadoop(HRIPE)......或者为Python编写包装器启用多线程或Hadoop访问?我理解这可能涉及对额外硬件的要求,我想了解可能的要求/选项的基本概念.我为这个相当大而模糊的问题道歉,但只是想开始 - 提前感谢!
在安装项目中,可以接受".exe,.dll,.js,.vbs"等可执行文件,但无法.bat在自定义操作中运行文件.
问题是如何*.bat在安装过程中运行文件?
installation custom-action batch-file setup-project visual-studio-2008
有时我会编写很短的汇编函数
function SeniorBit(Value: LongWord): Integer;
asm
OR EAX,EAX
JZ @@Done
BSR EAX,EAX
INC EAX
@@Done:
end;
Run Code Online (Sandbox Code Playgroud)
这似乎是内联的最佳候选人:
function SeniorBit(Value: LongWord): Integer; inline;
Run Code Online (Sandbox Code Playgroud)
但是Delphi编译器不允许它.为什么?
更新:
感谢ldsandon,有一份关于QC的一份有着5.5年历史的公开报告.该报告包含一些提议(如扩展asm指令)以简化编译器的asm内联.我更倾向于在过程/函数级别上引入"裸"指令,该指令向编译器说它不必为过程创建堆栈帧,并且可选地应保留哪些寄存器(在eax,edx和ecx中).
如果使用BASM代码进行高效内联过程的一般任务很困难(并且可能是不必要的),那么一个好主意是为最重要的案例启用内联(如明确声明的寄存器使用的裸函数).
我正在编写NSIS安装程序,安装程序会根据需要在Windows 7/vista上"以管理员身份"升级.我需要在安装结束时运行已安装的程序,并且不希望使用与安装程序相同的权限启动它.
常规NSIS exec命令使用与安装程序相同的权限运行子进程.
有一个用于NSIS的UAC插件,但它上面的文档并不是很好,而且似乎是新的.我不想使用那个插件.
理想情况下,我正在寻找一个小的.exe我可以包括在没有UAC提升的情况下启动目标程序.这存在吗?
还有其他建议吗?
谢谢!
我正在寻找一个python模块,它将帮助我摆脱HTML标签,但保留文本值.之前我尝试过BeautifulSoup,我无法弄清楚如何完成这个简单的任务.我尝试搜索可以执行此操作的Python模块,但它们似乎都依赖于其他在AppEngine上运行不正常的库.
下面是Ruby的sanitize库中的示例代码,这就是我在Python中所追求的:
require 'rubygems'
require 'sanitize'
html = '<b><a href="http://foo.com/">foo</a></b><img src="http://foo.com/bar.jpg" />'
Sanitize.clean(html) # => 'foo'
Run Code Online (Sandbox Code Playgroud)
谢谢你的建议.
-e
我有这样的课
public unsafe class EigenSolver
{
public double* aPtr
{get; private set;}
public EigenSolver(double* ap)
{
aPtr = ap;
}
public EigenSolver(double[] aa)
{
// how to convert from aa double array to pointer?
}
public void Solve()
{
Interop.CallFortranCode(aPtr);
}
}
Run Code Online (Sandbox Code Playgroud)
你可以猜到,我需要从double数组转换为指针.怎么做?
注意:互操作功能 Interop.CallFortranCode(double* dPtr)是我无法改变的.
注意2:两个构造函数都是必需的,因为我的一些API用户希望传入指针,有些人希望传入数组.我不能强迫他们选择.