小编fdm*_*ion的帖子

Python:在没有类的情况下使用“__getattr__”?

示例代码文件:

MyCode.py

def DoSomething(data):
    # data is a string
    # find a function in the same scope as this one that has the name contained
    # in "data"
    try:
        func = getattr(self,data) # this is wrong
    except AttributeError:
        print "Couldn't find function %s." % data
        return

    # execute the function
    func()

def AFunction():
    print "You found a function!"

def Add():
    print "1 + 1 = %d." % ( (1+1) )

def test():
    # unit test
    DoSomething("AFunction")

--------

test.py

import MyCode …
Run Code Online (Sandbox Code Playgroud)

python attributes

4
推荐指数
1
解决办法
3155
查看次数

当 IDisposable 对象超出范围时,C# 是否会自动“处理”它们?

我正在编写一个 ASP.NET Web API。作为其中的一部分,我发现在测试期间需要实现一个类IDisposable以确保释放托管资源。

所以,我IDisposable在我的类中实现,并将释放资源所需的代码放在Dispose()方法中。

我的代码中有很多地方(数百个)在其中实例化了这个对象,并在同一行中调用了新实例上的方法。我只需要实例来调用单个方法。

下面是一个例子:

// MyObject, a class that needs to be disposed of.
public class MyObject : IDisposable
{
    private AnObjectThatMustBeDisposed localObject;

    public MyObject() 
    {
        localObject = SomeLibrary.SomeProject.AnObjectThatMustBeDisposed.Create();
    }

    public void doOperationOne()
    {
        localObject.DoSomething(1);
    }

    public string getOperationTwo()
    {
        return localObject.DoSomething(2);
    }

    public string getOperationThree()
    {
        return localObject.DoSomething(3);
    }

    public bool getOperationFour(string input)
    {
        return localObject.DoSomethingSpecial(4,input.ToLower());
    }

    ...

    public void getOperationOneHundred(DateTime input)
    {
        localObject.DoSomethingElse(100,input);
    }

    public void Dispose()
    {
        localObject.CloseResources(); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net dispose

4
推荐指数
1
解决办法
5252
查看次数

从C#中0到1之间的随机字节数组中获取随机双(浮点)值?

假设我有一个真正随机的字节数组(例如从熵源捕获).

byte[] myTrulyRandomBytes = MyEntropyHardwareEngine.GetBytes(8);
Run Code Online (Sandbox Code Playgroud)

现在,我想获得一个随机的双精度浮点值,但值介于0和正1之间(就像Random.NextDouble()函数执行一样).

简单地将8个随机字节的数组传递给BitConverter.ToDouble()可能产生奇怪的结果,但最重要的是,结果几乎不会小于1.

我对位操作很好,但浮点数的格式对我来说一直都很神秘.我尝试了许多位组合来应用随机性,并且总是最终发现数字要么刚刚超过1,要么非常接近0,要么非常大.

有人可以解释哪些位应该在a double中随机,以使其在0和1范围内随机?

c# random

4
推荐指数
2
解决办法
350
查看次数

Python中timedelta对象的百分比?

我正在研究高级计时和时间统计应用程序.我正在使用Python timedelta对象来表示应用程序中的时间跨度.

我想弄清楚的是,是否有办法表示timedelta对象的任意部分.

timedelta提供的运算符只允许使用整数.你可以将一个timedelta乘以一个整数,你可以将它除以一个整数,但你不能用浮点数.

我希望能够做两件事:

1:给定一个timedelta对象,找出它的任意百分比.换句话说,浮点数乘以或除以的能力:

from datetime import timedelta
import math
td = timedelta(1)
newTd = td * 0.01 # 1% of the time delta specified in td
newTd = td * 1.04 # 104% of the time delta given in td
newTd = td * math.pi # the timedelta multiplied by pi (lol) 
Run Code Online (Sandbox Code Playgroud)

2:给定两个timedelta对象,计算一个timedelta给出的时间跨度相对于另一个时间delta作为float的百分比:

from datetime import timedelta
td1 = timedelta(1)
td2 = timedelta(2)
td1 / td2 # should give me 0.5
td2 = timedelta(days=4, minutes=50)
td1 …
Run Code Online (Sandbox Code Playgroud)

python datetime timedelta

3
推荐指数
1
解决办法
1235
查看次数

Python 2:在新显式列表定义中插入现有列表

这可能是不可能的,但如果是的话,我写的一些代码会很方便:

ListOne = ['jumps', 'over', 'the']
ListTwo = ['The', 'quick', 'brown', 'fox', ListOne, 'lazy', 'dog!']
Run Code Online (Sandbox Code Playgroud)

如果我这样做,我最终会将ListOne作为ListTwo中的一个列表.

但相反,我想将ListOne扩展为ListTwo,但我不想做以下事情:

ListOne = ['jumps', 'over', 'the']
ListTwo = ['The', 'quick', 'brown', 'fox']
ListTwo.extend(ListOne)
ListTwo.extend(['lazy', 'dog!']
Run Code Online (Sandbox Code Playgroud)

这将有效,但它不像上面的代码那样可读.

这可能吗?

python list

3
推荐指数
1
解决办法
373
查看次数

C#:修改Owin响应流会导致AccessViolationException

我试图在特定情况下使用一些自定义Owin中间件来修改(在这种情况下,完全替换)响应流.

每当我做一个呼叫触发我的中间件,以取代反应,一切工作正常.只有当我打电话给我的中间件没有进行更改时才会出现此问题.此外,我只能够取得错误发生时所API调用没有被替换为返回手动创建HttpResponseMessage对象.

例如,调用此API:

public class testController : ApiController
{
    public HttpResponseMessage Get()
    {
         return Request.CreateResponse(HttpStatusCode.OK,new { message = "It worked." });
    }
}
Run Code Online (Sandbox Code Playgroud)

工作正常,但这个类:

public class testController : ApiController
{
    public HttpResponseMessage Get()
    {
        HttpResponseMessage m = Request.CreateResponse();
        m.StatusCode = HttpStatusCode.OK;
        m.Content = new StringContent("It worked.", System.Text.Encoding.UTF8, "text/plain");
        return m;
    }
}
Run Code Online (Sandbox Code Playgroud)

导致错误发生.(在这两种情况下,http://localhost:<port>/test都被称为.)

该错误导致以下任一情况:

  • 导致iisexpress.exe(或在实际IIS中运行时为w3wp.exe)因访问冲突而崩溃.
  • 引发AccessViolationExceptionVisual Studio捕获但无法执行任何操作,因为它发生在外部代码中.当Visual Studio确实捕获异常时,我看到:

    An unhandled exception of type 'System.AccessViolationException' occurred in System.Web.dll
    
    Additional information: Attempted to read …
    Run Code Online (Sandbox Code Playgroud)

c# owin owin-middleware

3
推荐指数
1
解决办法
1700
查看次数

LINQ:根据 groupby 获取嵌套数组?

假设我有这个简单的对象定义:

public class Item
{
    public int section { get; set; }
    public string item { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我在单深度数组中有一些数据。这是 JSON,它将通过 Json.NET 转换为 C# 对象:

[
  {
    "section": 0,
    "item": "Hello!"
  },
  { 
    "section": 1,
    "item": "First Steps"
  },
  {
    "section": 1,
    "item": "How to Ask for Help"
  },
  {
    "section": 2,
    "item": "Your First Program"
  },
  {
    "section": 2,
    "item": "The Code"
  },
  {
    "section": 2,
    "item": "How It Works"
  },
  {
    "section": 3,
    "item": "Where To Go …
Run Code Online (Sandbox Code Playgroud)

c# linq nested

3
推荐指数
1
解决办法
935
查看次数

Python + LigHTTPd + CGI:如何配置为执行整个子路径的单个脚本

我正在编写一组打算在Web上使用的Python脚本。目前,我有一些使用的测试脚本可以正常工作import cgi

我基本上想要FastCGI / WSGI的行为。在这种情况下,我可以将特定URL下的所有请求传递给脚本。例如,假设用户访问URL http://www.example.com/script/run/1?param=true。对于/script我想要的给定脚本,例如/opt/mypython/webscript.py使用的任何请求import cgi,都可以运行并接收URL和GET参数。在这种情况下,我希望从脚本中能够看到包含一个参数/run/1和GET参数字典。

出于安全考虑,理想情况下,我们希望脚本位于文档根目录之外。

我还希望能够x-sendfile从脚本中使用标头。我知道FastCGI模块支持此功能,但不确定标准CGI是否支持。

我愿意迁移到FastCGI,但我不想重构任何代码。另外,我想在开发过程中使用标准的CGI,因为我调查的唯一FastCGI实现(波动)将导致脚本被缓存,因此在每次更改代码时都必须完全重新启动整个Web服务器。另外,flup要求您使用CGI接口进行一些不同的工作,这将意味着重写一些主要的代码。

flup确实提供了一些不错的便利;它的environ变量提供了一个PATH_INFO参数,用于指定如上所述的子路径。但是同样,标准的CGI模块并不能提供所有这些便利,因此flup需要重新编写代码,并且在开发过程中频繁更改代码的效率非常低。

因此,理想的解决方案是既使用标准CGI,又使用FastCGI来完成此任务,而无需重新编写代码。因此,在开发过程中,我可以使用标准的CGI及其伴随的性能下降(事实是python解释器必须每次启动),然后在代码准备好用于生产时轻松地将其迁移到基于FastCGI的后端,以便可以以最高性能运行。

我正在使用lighttpd的当前版本。如果可能的话,我需要做什么来配置lighttpd?

python cgi lighttpd

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

Swift:定义一个变量然后有条件地设置它?

这可能是一个非常简单的问题......

这里我有一些Swift代码:

var url: NSURL
if (someValue > 1) {
    var fullUrl = self.baseUrl + "?id=" + (someValue as! String);
    var url = NSURL(string: fullUrl);
}
else {
    var url = NSURL(string: self.baseUrl);
}
let req = NSURLRequest(URL: url);
webView.loadRequest(req);
Run Code Online (Sandbox Code Playgroud)

如您所见,我需要有条件地初始化url变量.但是,我在几乎所有其他强类型语言中使用的方法 - 初始化变量然后在if语句中赋值给它 - 似乎不是Swiftly的做法.

上面的代码将拒绝编译错误"变量'url'用于初始化"错误.(当然,从这个程序流程中,你可以看到它url总是被初始化,但是Swift显然没有理所当然.)

不在if块外定义变量会导致未知标识符错误 - 似乎if块内定义的变量仅限于该块内的范围.

如果没有定义一个空的NSURL对象,有没有更好的方法呢?

我最好喜欢使用let它,因为NSURL对象一旦创建就永远不会改变 - 并且Swift倾向于建议let尽可能使用它.但是,let在这种情况下你会如何使用?(我试过了 - 发生了相同类型的错误.Swift不高兴我实际上并没有声明对象本身与let语句在同一行,但letif块内使用会导致范围问题.)

swift

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

ASP.NET Web API - 在路由方法之前为所有请求调用的方法?

我正在用 C# 编写 ASP.NET Web API 2。我想要的是一个包罗万象的方法,它将针对传入我的 Web API 的每个请求执行。

如果该方法返回 null,则应继续原来的路由,寻找正确的方法。但是,如果该方法返回 HTTPResponseMessage,则服务器应返回该响应,而不继续进行正常路由。

用例是处理可能影响整个 API 的各种场景的能力。例如:禁止单个 IP 地址、阻止(或白名单)某些用户代理、处理 API 调用计数(例如,某人只能向任何人发出 X 请求)API 方法发出 X 个请求)。

我现在能想到的唯一方法就是在我为 API 编写的每个新方法中逐字包含一个方法调用。例如,

[HttpGet]
public HttpResponseMessage myNewMethod()
{
    // I want to avoid having to do this in every single method.
    var check = methodThatEitherReturnsResponseOrNull(Request);
    if (check != null) return (HttpResponseMessage)check;

    // The method returned null so we go ahead with normal processing.
    ...
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以在路由中实现这一点吗?

asp.net asp.net-web-api

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