如果我在Windows上执行以下python代码:
import subprocess
subprocess.Popen( [ 'python', 'foo' ], shell = True ).communicate()
Run Code Online (Sandbox Code Playgroud)
我按预期将错误写入stdout:
python: can't open file 'foo': [Errno 2] No such file or directory
Run Code Online (Sandbox Code Playgroud)
但是如果我在linux上执行相同的代码(ubuntu,OSX - any),我开始使用交互式python REPL而不是这个文本!像这样:
user@debian:~/Documents$ python test.py
Python 2.7.3 (default, Jab 2 2013, 16:53:07)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information
>>>
Run Code Online (Sandbox Code Playgroud)
为何如此奇怪的行为?使用参数('foo')执行python解释器必须在所有平台上进入评估模式,而不是进入REPL模式.
有关用';'分隔的命令的任何信息吗?在一个查询中 - 它们是原子还是非原子?我对流行数据库的实际版本感兴趣:MySQL,MSSQL,SQLite等?例如,如果100个客户端将在查询后发送垃圾邮件:
"insert into test ( name ) values ( '1' ); insert into test ( name ) values ( '2' )"
Run Code Online (Sandbox Code Playgroud)
数据库是否包含序列"1","2","1","2"等的项目,或者每个命令可以除以";" 从100个客户到每个人的比赛,导致'1','1','2','1','2','2','2'等?
在C#中,为了将信号连接到插槽(委托给方法),我所做的就是:
first.signal += second.slot
Run Code Online (Sandbox Code Playgroud)
但在Qt中它是:
connect( & first, SIGNAL( signal( int, int, QString ) ), & second, SLOT( slot( int, int, QSTring ) ) );
Run Code Online (Sandbox Code Playgroud)
而且这个被计算得很短,通常它们会产生2-3行.当然我完全理解Qt只模拟.h文件,而对于.cpp,它们必然会受到标准语法的限制,但是有什么技巧/方法可以使信号插槽连接更短一些吗?我知道通过给插槽提供特殊名称来自动将信号连接到插槽,但这仅适用于.ui文件中的信号.任何提示?
我可以安装PyDev for Eclipse,并且没有任何供应商预配置,可以使用相当不错的Python IDE.但令人惊讶的是,我找不到类似于Ruby的独立IDE插件!同样支持PyDev的公司,Aptana,提供了一种名为"RadRails"的东西,但我找不到单独安装它的方法 - 仅作为"Aptana Studio 3 Addin插件",而这个"工作室"不仅包括Ruby - 还包括PyDev ,PHP和许多预配置专注于Web开发.
我错过了什么?为什么我可以安装PyDev并为python安装调试器/完成,但对于Ruby来说,这会导致Eclipse膨胀"Web透视图","Web框架集成"等等?
我正在尝试在Ruby 1.9中使用内置的XMLRPC.不幸的是,XMLRPC没有记录在ruby-docs.org上,所以我试图根据google发现的例子构建一个测试代码:
# Server.rb
require "xmlrpc/server"
server = XMLRPC::Server.new( 1234 )
server.add_handler( "test" ) { |msg| return "responce for #{msg}" }
server.serve()
# Client.rb
require "xmlrpc/client"
server = XMLRPC::Client.new( "localhost", "/", 1234 )
server.call( "test", 42 ) == "responce for 42"
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不适用于Windows和OSX.Server.rb失败的神秘错误:
C:/Ruby193/lib/ruby/1.9.1/xmlrpc/client.rb:414:in `call': Uncaught exception unexpected return in method test (XMLRPC::FaultException)
from client.rb:6:in `<main>'
Run Code Online (Sandbox Code Playgroud)
也许有人知道我的错误是什么?
在python中,字符串可以是unicode(utf-16和utf-8)和单字节,具有不同的编码(cp1251,cp1252等).是否可以检查编码字符串是什么?例如,
time.strftime( "%b" )
Run Code Online (Sandbox Code Playgroud)
将返回一个文本名称为月份的字符串.在MacOS下,返回的字符串将是utf-16,在Windows下使用英语本地,它将是带有ascii编码的单字节,而在具有非英语语言环境的Windows下,它将通过语言环境的代码页进行编码,例如cp1251.我该如何处理这些字符串?
在C++中,如果方法参数标识符未使用,则可以跳过它:
void foo( int, int ) {}
Run Code Online (Sandbox Code Playgroud)
这在接口实现的情况下非常有用,其中大量方法具有空体.是否有可能在C#中做类似的事情?直接测试给出错误:
public void OnAddInsUpdate( ref Array ) {} // Error, need identifier :(
Run Code Online (Sandbox Code Playgroud) 在chrome API for extensions中,许多方法都采用"回调"参数.但是对于大多数方法,在调用回调时没有记录.例如,chrome.tabs.remove接受回调:
If you specify the callback parameter, it should specify a function that looks like this:
function() {...};
Run Code Online (Sandbox Code Playgroud)
这是我的所有文档.鉴于此文档,我如何确定在删除所有选项卡后,或者在删除每个选项卡后是否只调用一次回调?根据答案,我需要编写不同的代码.也许这是关于chrome API中回调的一些"常规"文档部分,比如"如果没有指定,则"在操作完成后总是调用一次回调".或者没有人使用这个API,没有人关心文档?
我有一个测试网页,如果我点击输入字段中的某个键,它会发出警告:
<!doctype html>
<html>
<head>
<script type="text/javascript" src="jquery-1.9.1.min.js"></script>
<script>
$( document ).ready( function() {
$( '#foo' ).keydown( function() { alert( "debug" ); } );
});
</script>
</head>
<body>
<input id='foo' type='type'/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我有这个chrome扩展,修改输入文本并触发keydown事件:
$( document ).ready( function() {
window.setTimeout( function() {
$( '#foo' ).val( "foo" );
$( '#foo' ).keydown();
}, 2000 );
});
Run Code Online (Sandbox Code Playgroud)
如果我安装扩展,2秒后(如预期的那样)文本被修改 - 但是没有显示警报,所以我可以建议keydown事件不会从扩展沙箱传递到页面javascript处理程序.是否有可能以某种方式修改我的代码,因此扩展可以模拟页面上的javascript可以看到的keydown?我通过chrome扩展自动化第三方网站,其中一个输入需要keyup检测价值变化(我自动化的页面写得很糟糕 - 但我没有任何控制其他源代码).
使用最新的Ubuntu默认shell(bash兼容)我可以创建一个单行函数并调用它:
$ foo() { echo bar; }; foo
bar
Run Code Online (Sandbox Code Playgroud)
但是如果我使用相同的命令创建一个字符串并通过它执行它$,则不会调用函数.shell函数语法的哪个部分我不明白?
$ FOO='foo() { echo bar; }; foo'
$ echo $FOO
foo() { echo bar; }; foo
$ $FOO
-bash: foo(): command not found
Run Code Online (Sandbox Code Playgroud)