Pulpcode

捕获,搅碎,拼接,吞咽

0%

如何提一个好问题

本文算是平时自己在网上请教别人的一些心得的总结,说白了,就是如何干净利落的获得答案。

不要问“大的”问题

这些问题被称为“月经贴”,经常有人来问,却始终没有好的答案。因为这些大而空的问题,不仅仅让你感到迷茫,你的问法更是让回答者感到迷茫。类似提问“如何学好编程”,“如何找到一个男朋友。”
这样问问题的方式,就是让人感觉提问者根本没有认真思考过这个问题。如果你自己都没有认真思考过,那么回答者自然也没有必要认真回答了。相反,从解决一个小问题的实际出发,这样的问题获得答案就容易也实用的多。

要问一个问题。

你看v2ex,知乎,等提问的网站,它们都会去引导用户提出一个问题,比如只能用一句话,比如必须以结尾,然后再用一些详细的内容去描述你的问题。也就是说,这个标题本身,既能概括问题本身,也能在一定程度上吸引用户的注意力。

要有问题的上下文

描述问题的上下文是指,为什么你会提出这样一个问题。比如你在编写代码的时候出现了问题,那么你的开发环境是什么样的,你的需求是什么,出现了什么样的异常。尤其让别人知道你为什么会提出这样一个问题很重要,因为可能回答者从源头就可以推翻你的思路,从另一个方向思考。

你为这个问题做了什么

你要让回答者看到,你为这个题目付出的努力和你所思考的思路,提问的时候,附带这些内容,能够让回答者有很多的发挥余地。而且可以看到你确实为这个问题做了很多的工作,而不是一个懒惰的伸手党。

其它

文笔层面没有特别的要求,只需要精炼的描述问题,最好不要有错别字,能一句话说清楚的,不要拖沓几句话。而且要具体,不要让别人根本不知道你在说什么。

多个问题可以用标题一一列举,这样方便别人一一回答。

具体的实例很重要,而不是些抽象的论述,让阅读你问题的人无从下手。比如马丁路德金会说,他有一个梦想,希望看见白人女孩和黑人男孩结婚。而不是说什么希望平等。

还有不要去贴吧和质量较低的地方提问,可以去知乎,v2ex等论坛,国外的像是stackoverflow,注意提出问题的时间和问题的标签。这些都能让更多的人看见你的问题。

态度

在问一个问题的时候,先问是不是,在问为什么,防止你信口开河。
而且不要有太偏激的主观思想,搞得最后像贴吧一样,在那里骂人。尤其是自己觉得一件事应该是怎样的,然后非要找人找证据证明你的想法。要不不开心。

下面是我曾经在社交平台上提出的两个问题,回复率都蛮高的。

1 dota如何性价比选择英雄?

先说明,我是一个在dota2天梯1500上下徘徊的菜鸟。打dota的时间也算长了,但是确实没有什么时间去练习。但又想上分,想看看更牛逼的人是什么样子的。

我有这样一个设想,在精通英雄数量最小的情况下,保证自己的胜率最大。

比如我选择潮汐,船长,风行者,赏金这样定位浮动比较大,从二号位到四号位都可以胜任的英雄。这样还可以方便自己根据己方和对方的阵容,先定位,在选择英雄。还要精通几个像是小鱼人,剑圣,斯问,骷髅王,这样在路人局方便使用的C位,会四个防止自己拿手的都被选了。这就是我能想到的了,还有什么思路可进行的呢?

tornado客戶端为什么不需要释放

之前一段时间,一直在用 tornado 的异步客户端。

1
2
3
http_client = AsyncHTTPClient()
response = yield http_client.fetch(url, method=‘ POST ’, body=data)
response.body …..

但是从来没写过: http_client.close()这样的代码。

类似的,同步的阻塞请求,我一般使用 python 的 requests 库:

1
2
response = requests.post(url, body)
response.content

但是也没有调用过类似 close()的方法,

按理来说,数据库连接,文件句柄,网络连接,这些非托管资源,不是都应该手动去关闭的么?我记得比较“低级”的 http 库确实会调用关闭:

1
HTTPConnection.close(),

那么我的问题是

  1. 我在 tornado 的 http 客户端,和 requests 库中,如何关闭它们?
  2. 是否是因为本质上,这两个客户端在关闭方式上就是不同的。
  3. 如果不关,我的服务长期这样跑着,总有一天会大量内存泄露吧?