我正在尝试做的是版本检查.我想确保代码保持在最低版本之上.所以我需要一种方法来知道当前分支是否包含指定的提交.
我的班级有一个词典,例如:
class MyClass(object):
def __init__(self):
self.data = {'a': 'v1', 'b': 'v2'}
Run Code Online (Sandbox Code Playgroud)
然后我想使用dict的密钥和MyClass实例来访问dict,例如:
ob = MyClass()
v = ob.a # Here I expect ob.a returns 'v1'
Run Code Online (Sandbox Code Playgroud)
我知道这应该由__getattr__实现,但我是Python的新手,我不知道如何实现它.
我从xcode 4.4开始我的项目,我用界面构建器创建了几个视图控制器(带有xib文件).几天前,我将xcode升级到4.5版.今天,我突然发现我可以在界面构建器中修改视图大小.这是xcode 4.5的预期功能还是xcode 4.5的错误?
我刚看了下面的代码:
class Dir
def self.create_uniq &b ### Here, & should mean b is a block
u = 0
loop do
begin
fn = b[u] ### But, what does b[u] mean? And b is not called.
FileUtils.mkdir fn
return fn
rescue Errno::EEXIST
u += 1
end
end
io
end
end
Run Code Online (Sandbox Code Playgroud)
我把我的困惑作为评论在代码中.
我想实现这样的日志函数:
def mylog(str)
puts __FILE__, ":"__LINENO__, ":", str # Here how to get __FILE__ and __LINENO__ is my question.
end
Run Code Online (Sandbox Code Playgroud)
我打电话的时候mylog:
mylog 'hello' # say I call this in my.rb line 10
Run Code Online (Sandbox Code Playgroud)
我期待输出:
my.rb:10:hello
Run Code Online (Sandbox Code Playgroud)
请帮助正确实现mylog功能.
我的python程序使用httplib2.Http来发出http请求.一旦我需要生成一个请求,我创建一个httplib2.Http对象,以便我的程序经常创建/销毁httplib2.Http对象.
我发现由于达到最大打开文件数,我的程序很容易崩溃.检查/ proc // fd,打开套接字fds太多了.这个问题使我不得不深入研究httplib2源代码.
然后我发现,在httplib2.Http._conn_request方法中,有这样的代码:
else:
content = ""
if method == "HEAD":
conn.close()
else:
content = response.read()
response = Response(response)
if method != "HEAD":
content = _decompressContent(response, content)
break
Run Code Online (Sandbox Code Playgroud)
这表明套接字仅在http方法为HEAD时关闭.也许httplib2想要以某种方式重用套接字.但是Http类没有close()方法.这意味着当我发出Http请求时,套接字将不会关闭,直到我的进程终止.
然后我修改了代码:
else:
content = ""
if method == "HEAD":
conn.close()
else:
content = response.read()
response = Response(response)
if method != "HEAD":
content = _decompressContent(response, content)
conn.close() # I ADD THIS CLOSE
break
Run Code Online (Sandbox Code Playgroud)
在那之后,我的计划运作良好.
但我仍然很好奇,如果这是httplib2的错误,因为httplib2是一个非常古老而常见的lib.
我从Unterstanding eventlet.wsgi.server中获取了示例代码.
from eventlet import wsgi
import eventlet
from eventlet.green import time
import threading
def hello_world(env, start_response):
print "got request", eventlet.greenthread.getcurrent(), threading.currentThread()
time.sleep(10)
start_response('200 OK', [('Content-Type', 'text/plain')])
return ['Hello, World!\n']
wsgi.server(eventlet.listen(('', 8090)), hello_world)
Run Code Online (Sandbox Code Playgroud)
当我通过不同的客户端IP地址访问Web服务器时,我可以看到它们是并行处理的.随着打印输入hello_world,我还可以在两个不同的greenthreads中处理它们,但是在相同的OS线程中.
我是Python的新手.我很好奇,如果每个greenthread与底层操作系统线程绑定?
当Java成员需要是线程安全的时,我们会喜欢以下内容:
public synchronized void func() {
...
}
Run Code Online (Sandbox Code Playgroud)
此语法相当于:
public void func() {
synchronized(this) {
....
}
}
Run Code Online (Sandbox Code Playgroud)
也就是说,它实际上this用于锁定.
我的问题是,如果我用synchronized一个static方法,如下所示:
class AA {
private AA() {}
public static synchronized AA getInstance() {
static AA obj = new AA();
return obj;
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,该synchronized方法的锁是什么?
要在操作栏上放置右对齐的微调器,我必须使用具有相对布局的自定义视图.但是当我在操作栏上放置自定义视图后,我发现应用程序标题消失了,必须通过在操作栏上放置自定义视图来影响它.
是否可以在操作栏上显示标题和自定义视图?否则我也必须将标题放在客户视图中,但我不希望这样做.