V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
V2EX  ›  keakon  ›  全部回复第 17 页 / 共 60 页
回复总数  1199
1 ... 13  14  15  16  17  18  19  20  21  22 ... 60  
2017 年 8 月 17 日
回复了 xinhangliu 创建的主题 Python 问几个关于 __getattr__() 的问题,求解答
1. 代码不可复用。
2. 常见,但由于效率较低,所以不到万不得已一般也不用。Ruby 的话倒是经常这么干。除此以外还可以用 descriptor 机制(__get__),代码量会多一些,但是 IDE 可以识别这些属性,避免出现警告。
3. url 是传给 Answer(self, url) 的,这是你要暴露出去的参数,干掉就没法初始化了。你实在不想给 getter 起名,可以 return lambda url: getattr(module, item.capitalize())(url, session=self._session)。
2017 年 8 月 15 日
回复了 autoxbc 创建的主题 程序员 V2EX 的 csrfToken 设计缺陷及修正
印象中 V2EX 应该是用 Tornado 实现的,默认的 csrfToken 是保存在 cookie 中的,服务端并不保存,而是检查 POST 的数据是否和 cookie 中一致。至于每个页面都更新 csrfToken,则不是 Tornado 干的。
2017 年 8 月 11 日
回复了 kran 创建的主题 Vim 如何让 vim 认为 PHP 变量中的$是变量的一部分?
autocmd FileType php setlocal iskeyword+=$
2017 年 8 月 10 日
回复了 wencan 创建的主题 Python 请教 lxml 分析 html 的问题
因为这是个错误的 html,font 是 inline 元素,center 是 block 元素,lxml 在构造时会把 center 移到 font 外部。
2017 年 8 月 7 日
回复了 SlipStupig 创建的主题 Python Python websocket-client 如何保持长连接呢?
create_connection 放循环外去啊…
2017 年 7 月 25 日
回复了 Livid 创建的主题 NGINX 关于 NGINX 的 upstream 配置的 fail_timeout=0 参数的意义
看了下源码,nginx 发现连接超时、读取超时、status code >= 300 就会尝试下一个 upstream,如果它成功就换它响应,如果它失败就自己返回失败。
所以对于动态服务器,确实应该禁用。
2017 年 7 月 19 日
回复了 SlipStupig 创建的主题 Python Python 内存泄露怎么能快速诊断?
其实大多数时候没啥好办法,因为一般你写不出能内存泄露的代码,这些问题基本都是第三方库导致的。粗暴的话就每隔一段时间或处理一定请求后自动重启进程,非要找找可以参考这篇 http://www.jianshu.com/p/2d06a1a01cc3
2017 年 7 月 5 日
回复了 jsonzz 创建的主题 Python 执行类方法前,如何获取方法入参并修改
你要做的就是修改 swimming 的实现,使用 override 不是最简单的么,看不出哪里复杂:
def swimming(self, action):
return C.swimming(self, self.add_punctuation(action)) # 或者 return super(C1, self).swimming(self.add_punctuation(action))

如果你有一堆方法需要修改参数,先写一个 decorator,用处是计算并传递新参数;然后再写个 metaclass,对满足要求的方法都应用上这个 decorator。
这个问题看着挺绕的,但是道理却很简单。

假如要用 native coroutine 来实现「 pause execution and force something to be sent down to the event loop 」,那么你写的代码大概如下:
async def native_coroutine(): # ...
async def f(): await native_coroutine()

再来看 native_coroutine 的函数体,你有如下选择:
1. await 一个 awaitable 对象:这会导致你需要再定义一个 native coroutine,递归回到前面的选择。
2. return 一个值:这会导致代码变成同步的,f 函数会立刻接收到 StopIteration 异常。
3. raise 一个异常:这会导致代码变成同步的,f 函数会立刻接收到异常。
4. yield 一个值:在 Python 3.5 或之前是语法错误;在 3.6 或之后它变成了 asynchronous generator (见 PEP 525 ),也不能用在 await 表达式里(它不是 awaitable,没有定义 __await__ 方法,会抛出 TypeError: object async_generator can't be used in 'await' expression )。

对于选择 1,你当然也可以自定义一个 awaitable:
class Awaitable(object):
----def __init__(self, count):
--------self.count = count
----def __await__(self):
--------yield from range(self.count)
这样你就不是用 generator based coroutine 来暂停执行了,但这也不是 native coroutine 了。

可见这完全是语言的限制,因为 yield 后面可以跟任意的值,yield from 可以接任意 generator 对象,而 await 却只能接 awaitable 对象。

所以纠结 native coroutine 为什么不能「暂停执行并强制性返回给事件循环」没多大意义,因为你实际在编写最底层调用的那句代码时,肯定要用 yield 或 yield from。但如果不是编写框架,你基本上只需要写到 await native_coroutine 这层的代码。
2016 年 5 月 23 日
回复了 hellogbk 创建的主题 macOS 你们的 MAC QQ 掉线吗?
节能器里把「唤醒以供网络访问」关了就行了,否则会不定期把另一台 mac 的 qq 踢下线
有个东西叫缓冲区溢出,没有做好检查的话,会一直往后写,导致栈被修改掉。而函数的返回地址也在栈里,就导致返回时跳到其他区域,就能执行攻击代码了。
你的索引可能不能用来优化这个查询,导致需要全表扫描。你 explain 一下就知道原因了。
2016 年 4 月 25 日
回复了 aiqier 创建的主题 Python 如何给 tornado 做一个 mock 类?
mock client 就行了,最简单的大概这样:

```
class MockedAsyncHTTPClient(AsyncHTTPClient):
_responses = []

@classmethod
def set_responses(cls, responses): # 需要是逆序的
cls._responses = responses

def fetch_impl(self, request, callback):
response = self._responses.pop()
response.request = request
callback(response)
```

如果能控制对象的生成过程,那就不需要写成类方法了。
2016 年 4 月 12 日
回复了 eightqueen 创建的主题 Python python 的 cgi 程序没法用 ab 来做性能测试
最简单的做法是在最后一行加上 client.close(),子进程中只是把它这个 socket 的拷贝给 close 了,但因为父进程中还存在,所以不会关闭。
2016 年 4 月 6 日
回复了 ivito 创建的主题 MySQL Mysql 有索引的情况下依然几乎扫描全表
没有 where 条件
2016 年 3 月 14 日
回复了 JJaicmkmy 创建的主题 机械键盘 WASD Keyboard 开箱体验
@leejanfin 我到手后很喜欢这磨砂质感的 PBT
2016 年 3 月 14 日
回复了 hardyfish 创建的主题 宽带症候群 DO 超级不稳定啊
主要是正在开两会,忍几天就好了。
2016 年 3 月 14 日
回复了 JJaicmkmy 创建的主题 机械键盘 WASD Keyboard 开箱体验
看了好多键盘,发现 PBT 键帽 + 侧刻 + 布局合理够用 + 外观好看的只有 Leopold FC750R …
WSAD 和 Filco 都是因为 ABS 键帽被我排除了…
2016 年 3 月 9 日
回复了 yeeyeung 创建的主题 然而并没有 吐槽知乎的邮件系统
知乎的邮箱应该是 @zhihu.com 的,用的是 Gmail ,官网给的地址是 [email protected] ,你发的那个 163 邮箱不知道是什么鬼,不过我也没确认过…
2016 年 3 月 9 日
回复了 tanteng 创建的主题 Redis 关于 Redis 队列的一道面试题
@hxsf 我觉得我已经说得够清楚了,你实际去做的话,就知道面试官为什么会这样问了…
1 ... 13  14  15  16  17  18  19  20  21  22 ... 60  
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3572 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 46ms · UTC 00:40 · PVG 08:40 · LAX 17:40 · JFK 20:40
♥ Do have faith in what you're doing.