我想为我的一个函数禁用 PowerShell 的“通用参数”。我一直在通过编写如下函数来研究 p4.exe(Perforce 命令行实用程序)的一组扩展:
function p4(
[parameter(valuefromremainingarguments=1)]
[string[]]$cmdline)
{
# ...do some fun stuff with $cmdline...
p4.exe $cmdline # for illustration only - actual implementation uses .net objects
}
Run Code Online (Sandbox Code Playgroud)
关键是能够像我通常在命令行上做的那样使用 p4,除了有时会神奇地重新处理一些参数(添加新命令或调用不同的工具或其他什么),并且它总是感觉好像我只是使用普通的 p4 命令行。
这工作得很好,直到我开始使用像“-o”这样的参数。
p4 -p 1666 user -o scobi
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我从 PowerShell 收到错误消息:
p4 : Parameter cannot be processed because the parameter name 'o' is ambiguous. Possible matches include: -OutVariable -OutBuffer.
Run Code Online (Sandbox Code Playgroud)
我找到的唯一方法是引用我的参数:
p4 -p 1666 user '-o' scobi
p4 '-p 1666 user -o scobi'
Run Code Online (Sandbox Code Playgroud)
真恶心,这妨碍了我让这个函数成为 p4.exe 的透明超集的目标。
是否有我可以附加到我的函数的魔术属性,使其告诉外壳“我不支持通用参数”?或者还有其他方法可以解决这个问题吗?
我在 global.asax 中有以下代码:
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
if (Request.Cookies["AUTH"] != null)
{
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(Request.Cookies["AUTH"].Value);
HttpContext.Current.User = new MyPrincipal(ticket.Name);
HttpCookie cookie = Request.Cookies["AUTH"];
cookie.Expires = DateTime.Now.AddDays(30);
Response.Cookies.Add(cookie);
}
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,但是当我检查 Request.Cookies 集合时,AUTH cookie 有 2 个条目,具有不同的值。怎么来的?
这是登录页面中认证过程的代码:
if (Account.Authenticate(login.Text, pass.Text))
{
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(login.Text, true, 43200);
HttpCookie cookie = new HttpCookie("AUTH");
cookie.Expires = DateTime.Now.AddDays(30);
cookie.HttpOnly = true;
cookie.Value = FormsAuthentication.Encrypt(ticket);
Response.Cookies.Add(cookie);
Response.Redirect(Page.Request.UrlReferrer.ToString());
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试规范化我正在构建的数据库。一方面是我有许多不同的测试,每个测试都可以有许多不同的标签。你会如何处理这件事?
您是否有一个带有标签的表格,然后对每次测试的标签数量进行限制?
我是数据库的新手,更不用说规范化的整个想法了,所以如果这是一个非常简单的问题,请原谅我。
我在编译pygtk网站上列出的PyGTK使用的基本且非常简单的例子时遇到了问题.
这是此站点的第一个示例:http: //www.pygtk.org/pygtk2tutorial/ch-GettingStarted.html
我的代码看起来像这样:
#!/usr/bin/env python
# example gtk.py
import pygtk
pygtk.require('2.0')
import gtk
class Base:
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.show()
def main(self):
gtk.main()
print __name__
if __name__ == "__main__":
base = Base()
base.main()
Run Code Online (Sandbox Code Playgroud)
并在调用python gtk.py后,我收到以下错误:
gtk main Traceback(最近一次调用last):文件"gtk.py",第19行,在base = Base()文件"gtk.py",第11行,在init self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) AttributeError:'module'对象没有属性'Window'
我在某个地方发现了一个信息,它可以通过从源代码安装PyGTK来修复它.我做到了,但没有改变.消息仍然相同.
我正在使用ubuntu 10.10
对于什么可能出错,您有什么想法吗?谢谢你的帮助!
麦克风
我正在学习Scala,我想知道使用Scala的函数编程功能表达这种命令式模式的最佳方式.
def f(l: List[Int]): Boolean = {
for (e <- l) {
if (test(e))
return true
}
}
return false
}
Run Code Online (Sandbox Code Playgroud)
我能想到的最好的是:
l map { e => test(e) } contains true
Run Code Online (Sandbox Code Playgroud)
但是效率较低,因为它在每个元素上调用test(),而命令式版本在第一个满足test()的元素上停止.是否有更惯用的函数式编程技术可以用于同样的效果?在Scala中,命令式版本似乎很尴尬.
我正在阅读timeit模块的代码,我注意到了这一段:
gcold = gc.isenabled()
gc.disable()
timing = self.inner(it, self.timer)
if gcold:
gc.enable()
Run Code Online (Sandbox Code Playgroud)
这只是存储垃圾收集的状态(打开或关闭),然后将其关闭.该函数inner执行正在计时的语句.然后它将垃圾收集器恢复到旧状态.
所以我很好奇这是什么意思.如果被测试的代码在垃圾收集器中运行,那么不应该在测试中反映出来吗?我错过了什么?
我正在使用 QTabWidget,我想知道是否可以使用不同的图标来关闭选项卡上的按钮?我认为 style 和 setCornerWidget 可能不适用于这种情况。
谢谢!
我以前在我的基本控制器上创建了一个方法:
public bool IsJsonRequest()
{
var acceptTypes = Request.AcceptTypes;
return acceptTypes != null &&
acceptTypes.Any(a => a.Equals("application/json",
StringComparison.OrdinalIgnoreCase));
}
Run Code Online (Sandbox Code Playgroud)
然后我偶然发现了AjaxRequestExtensions.IsAjaxRequest().它的文档非常模糊:
如果指定的HTTP请求是AJAX请求,则为true;否则为false.否则,错误.
这让我想到了,它使得它成为AJAX的HTTP请求是什么?它是否比检查请求者接受的内容类型还要多,或者编码不是"AJAX"的要求?
(请注意,在我的情况下,我的操作只能从我网站上的JS页面调用,而JSON是唯一必需的编码.)
我用Google搜索了这个问题,但我找不到答案.
我有一个由PHP生成的页面,它生成一个JSON字符串,我使用javascript/jQuery/AJAX来检索它.
如果用户直接通过PHP打开此后端页面但是如果通过AJAX检索它仍然可以正常工作,我希望显示一条消息.
这在PHP中是否可行,我将要做什么呢?
我正在寻找一种标准方法来处理asp.net mvc 2.0或3.0中的错误