OAuth 2.0协议草案的4.2节指出授权服务器可以返回a access_token
(用于向资源验证自己)以及a refresh_token
,它纯粹用于创建新的access_token
:
https://tools.ietf.org/html/rfc6749#section-4.2
为什么两者都有?为什么不只是做到access_token
最后只要refresh_token
没有refresh_token
?
HTML(或者只是XHTML?)在标签上的非标准属性方面相对严格.如果它们不是规范的一部分,那么您的代码将被视为不符合规范.
然而,非标准属性对于将元数据传递给Javascript非常有用.例如,如果假设链接显示弹出窗口,则可以在属性中设置弹出窗口的名称:
<a href="#null" class="popup" title="See the Popup!"
popup_title="Title for My Popup">click me</a>
Run Code Online (Sandbox Code Playgroud)
或者,您可以将弹出窗口的标题存储在隐藏元素中,例如span:
<style>
.popup .title { display: none; }
</style>
<a href="#null" title="See the Popup!" class="popup">
click me
<span class="title">Title for My Popup</span>
</a>
Run Code Online (Sandbox Code Playgroud)
然而,我应该是一个优选的方法.第一种方法更简洁,我猜测,并没有像搜索引擎和屏幕阅读器一样多.相反,第二种选择使得存储大量数据更容易,因此更加通用.它也符合标准.
我很好奇这个社区的想法是什么.你怎么处理这样的情况?第一种方法的简单性是否超过潜在的缺点(如果有的话)?
我们有一个返回城市/州元组的对象方法,即('Boston', 'MA')
.在某些有效情况下,没有有效的城市/州返回.在风格上,返回更有意义None
,还是(None, None)
在这种情况下包含两元素元组?
我在Python中创建守护进程的每个配方都涉及两次(对于Unix),然后关闭所有打开的文件描述符.(有关示例,请参阅http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/).
这很简单,但我似乎有一个问题.在我正在设置的生产机器上,我的守护程序正在中止 - 因为所有打开的文件描述符都已关闭,所以它是静默的.我正在调试当前问题的棘手时间,并且想知道捕获和记录这些错误的正确方法是什么.
设置日志记录的正确方法是什么,以便在守护进程后继续工作?logging.basicConfig()
在守护进程后我第二次打电话吗?什么是捕捉到正确的方式stdout
和stderr
?我对所有文件关闭的细节很模糊.理想情况下,我的主要代码可能只是调用daemon_start(pid_file)
和日志记录将继续工作.
我有一个开发过程问题.
背景:我在一个规模适中的网站工作,历史上,设计师创建了他们想要的页面和组件的模型/截图,工程团队(包括我自己)将它们变成了html/css.
从代码清洁度的角度来看,这种方法相对较好,并且在编写javascript时有很大帮助.但是,它有助于保持从一个页面/组件到另一个页面/组件的一致性.在一个页面上,标题字体可能是12px而另一页是11px,主要是因为它是一个复杂的网站,有很多要跟踪的(我们已经通过4位设计师循环.)我们只有几个真正的通用样式,它们只有当工程师认出风格时使用 - 而不是在设计师告诉他们的时候.
我们最近的设计师是一个相对强大的HTML/CSS编码器.我们认为我们可能让他在HTML/CSS中创建模型并将代码交给我们进行快速集成.我们希望设计师能够更好地保持他的风格,并且可以为我们节省一些开发时间.
我们发现的是,我们的设计师并不像我们希望的那样优秀,而且他的代码经常略显臃肿,与我们需要做的事情不相容.此外,他的编码风格与工程团队的其他部分根本不同,并且对我们既定的编码实践并没有非常好的评价.
问题:如何实现从设计到工程的交接?我知道我听说过让他们的设计团队完成所有模板编码的公司,但我很好奇它是如何工作的.设计团队是否在这些场景中实际包含了工程团队的成员?
正如我们现在的结构,我们没有机会让我们的设计师编写最终模板并将其检入SVN,即使他是一个熟练的HTML wiz.模板中有太多需要知道我们的代码库和潜在性能问题的知识.
我们如何让这个过程有效?这是个梦想吗?
我有两个进程(参见示例代码),每个进程都尝试访问threading.local对象.我希望下面的代码打印"a"和"b"(按任意顺序).相反,我得到"a"和"a".当我启动整个新进程时,如何优雅而强大地重置threading.local对象?
import threading
import multiprocessing
l = threading.local()
l.x = 'a'
def f():
print getattr(l, 'x', 'b')
multiprocessing.Process(target=f).start()
f()
Run Code Online (Sandbox Code Playgroud)
编辑:作为参考,当我使用threading.Thread而不是multiprocessing.Process时,它按预期工作.
Memcached说它使用一个LRU队列进行驱逐(有一些基于平板大小混合的规则.)当他们说最近最少使用时,他们是指最近最少存储或最近读取的?他们的文件似乎含糊不清.
我有一个AMQP服务器(RabbitMQ),我想在Tornado Web服务器上发布和读取.为此,我想我将使用异步amqp python库; 特别是Pika(据称支持龙卷风的变种).
我编写的代码似乎成功地从队列中读取,除了在请求结束时,我得到一个异常(浏览器返回正常):
[E 101219 01:07:35 web:868] Uncaught exception GET / (127.0.0.1)
HTTPRequest(protocol='http', host='localhost:5000', method='GET', uri='/', version='HTTP/1.1', remote_ip='127.0.0.1', remote_ip='127.0.0.1', body='', headers={'Host': 'localhost:5000', 'Accept-Language': 'en-us,en;q=0.5', 'Accept-Encoding': 'gzip,deflate', 'Keep-Alive': '115', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'User-Agent': 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.10 (maverick) Firefox/3.6.13', 'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7', 'Connection': 'keep-alive', 'Cache-Control': 'max-age=0', 'If-None-Match': '"58f554b64ed24495235171596351069588d0260e"'})
Traceback (most recent call last):
File "/home/dave/devel/lib/python2.6/site-packages/tornado/web.py", line 810, in _stack_context
yield
File "/home/dave/devel/lib/python2.6/site-packages/tornado/stack_context.py", line 77, in StackContext
yield
File "/usr/lib/python2.6/contextlib.py", line …
Run Code Online (Sandbox Code Playgroud) 我有下面的HTML.我创建了一个SVG,其视图框为100x100.渲染时(在Chrome中)svg渲染为200px宽(好)但高约500px,文本被推离页面底部.使我的窗口更大或更小没有影响 - SVG相应地增加或缩小高度.
为什么svg没有以任何方式限制高度?有没有办法让它自动保持1:1的宽高比?SVG 内部的内容很好 - 它可以适当缩放.这引起了一些重大问题
<html>
<head>
<title>SVG Ahoy</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div style="width: 200px;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"
preserveAspectRatio="xMinYMin meet" version="1.1"></svg>
<div>content below</div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我一直在尝试一个模式匹配的类.我的班级看起来像这样:
class Matcher(object):
def __init__(self, pattern):
self._re = re.compile(pattern)
def match(self, value):
return self._re.match(value)
Run Code Online (Sandbox Code Playgroud)
总而言之,我的脚本需要大约45秒才能运行.作为实验,我将代码更改为:
class Matcher(object):
def __init__(self, pattern):
self._re = re.compile(pattern)
self.match = self._re.match
Run Code Online (Sandbox Code Playgroud)
这个脚本的运行耗时37秒.无论我重复这个过程多少次,我都会看到同样显着的性能提升.通过cProfile运行它显示如下:
ncalls tottime percall cumtime percall filename:lineno(function)
46100979 14.356 0.000 14.356 0.000 {method 'match' of '_sre.SRE_Pattern' objects}
44839409 9.287 0.000 20.031 0.000 matcher.py:266(match)
Run Code Online (Sandbox Code Playgroud)
为什么地球上的匹配方法在运行时增加了9.2秒?最令人沮丧的部分是我试图重新创建一个简单的案例而无法这样做.我在这里错过了什么?我的简单测试用例有一个bug!现在它模仿我所看到的行为:
import re
import sys
import time
class X(object):
def __init__(self):
self._re = re.compile('.*a')
def match(self, value):
return self._re.match(value)
class Y(object):
def __init__(self):
self._re = re.compile('ba')
self.match = self._re.match …
Run Code Online (Sandbox Code Playgroud) python ×5
html ×3
access-token ×1
amqp ×1
asynchronous ×1
coding-style ×1
css ×1
daemon ×1
fork ×1
javascript ×1
logging ×1
lru ×1
memcached ×1
oauth ×1
performance ×1
process ×1
python-3.x ×1
rabbitmq ×1
regex ×1
security ×1
standards ×1
svg ×1
tornado ×1