我在一个项目中使用Zend Framework和Doctrine,并且想知道是否有人可以建议将Doctrine的验证与Zend_Form集成的好方法.我正在努力避免代码重复.
我并不熟悉TinyMCE,但我似乎无法配置高度低于100px的高度.我已经尝试了,似乎总是将它设置为100px,只要它低于它.我只需要一些按钮,编辑器窗口可能永远不会超过一行,所以我试图减少一点界面混乱.
在我的应用程序中,每个模型都有一个类来保存常用的查询(我猜它在某种程度上是DDD语言中的"存储库").这些类中的每一个都传递给SQLAlchemy会话对象,以便在构造时创建查询.我在确定在单元测试中运行某些查询的最佳方法时遇到了一些困难.使用无处不在的博客示例,假设我有一个"Post"模型,其中包含列和属性"date"和"content".我还有一个"PostRepository",其方法是"find_latest",它应该按"日期"降序查询所有帖子.它看起来像:
from myapp.models import Post
class PostRepository(object):
def __init__(self, session):
self._s = session
def find_latest(self):
return self._s.query(Post).order_by(Post.date.desc())
Run Code Online (Sandbox Code Playgroud)
我在模拟Post.date.desc()调用时遇到了麻烦.现在我在单元测试中为Post.date.desc修补了一个模拟,但我觉得可能有更好的方法.
编辑:我正在使用mox作为模拟对象,我当前的单元测试看起来像:
import unittest
import mox
class TestPostRepository(unittest.TestCase):
def setUp(self):
self._mox = mox.Mox()
def _create_session_mock(self):
from sqlalchemy.orm.session import Session
return self._mox.CreateMock(Session)
def _create_query_mock(self):
from sqlalchemy.orm.query import Query
return self._mox.CreateMock(Query)
def _create_desc_mock(self):
from myapp.models import Post
return self._mox.CreateMock(Post.date.desc)
def test_find_latest(self):
from myapp.models.repositories import PostRepository
from myapp.models import Post
expected_result = 'test'
session_mock = self._create_session_mock()
query_mock = self._create_query_mock()
desc_mock = self._create_desc_mock()
# Monkey patch
tmp …Run Code Online (Sandbox Code Playgroud) 第3章定义了以下表示二叉树的递归类型:
data Tree a = Node a (Tree a) (Tree a)
| Empty
deriving (Show)
Run Code Online (Sandbox Code Playgroud)
练习要求我使用单个值构造函数实现相同的类型,使用"Maybe"类型来引用子节点:
(摘自第60页第3章练习2)
"定义一个只有一个构造函数的树类型,就像我们的Java示例.而不是Empty构造函数,使用Maybe类型来引用节点的子节点."
我想出的解决方案如下:
data AltTree a = AltNode a (Maybe (AltTree a)) (Maybe (AltTree a))
deriving (Show)
Run Code Online (Sandbox Code Playgroud)
但是,这不允许包含其他空树的树,例如:
AltNode 1 (AltNode 2 Nothing Nothing) (AltNode 3 Nothing Nothing)
Run Code Online (Sandbox Code Playgroud)
而且我不确定为什么,"Nothing"不是"Maybe"类型的值构造函数?
我有一些通用的函数,在任何类中都没有真正有意义的静态方法.我想将它们封装在命名空间下,这样就不会与全局范围中定义的函数发生冲突.对于我的命名空间类,我遵循广泛采用的模式,其中诸如\ My\Namespaced\MyClass的类存在于包含路径上的My/Namespaced/MyClass.php中.
是否应该放置命名空间函数的最佳实践?现在我将它们放在同一名称空间下保存类的目录中的"functions.php"中.例如\ My/Namespaced\myFunction存在于My/Namespaced/functions.php中.
此外,有没有办法以类自动加载的方式自动加载这些功能?
我正在构建一个需要对所有请求进行签名的简单 Web 服务。签名哈希是使用包含请求正文的请求数据生成的。我的愿望是有一个中间件组件来验证请求签名,如果签名无效则响应错误。问题是中间件需要使用 env['wsgi.input'].read() 读取请求正文。这会将请求正文字符串的指针推进到末尾,这使得执行链中更下游的其他组件无法访问数据。
有什么办法可以使 env['wsgi.input'] 可以被读取两次吗?
前任:
from myapp.lib.helpers import sign_request
from urlparse import parse_qs
import json
class ValidateSignedRequestMiddleware(object):
def __init__(self, app, secret):
self._app = app
self._secret = secret
def __call__(self, environ, start_response):
auth_params = environ['HTTP_AUTHORIZATION'].split(',', 1)
timestamp = auth_params[0].split('=', 1)[1]
signature = auth_params[1].split('=', 1)[1]
expected_signature = sign_request(
environ['REQUEST_METHOD'],
environ['HTTP_HOST'],
environ['PATH_INFO'],
parse_qs(environ['QUERY_STRING']),
environ['wsgi.input'].read(),
timestamp,
self._secret
)
if signature != expected_signature:
start_response('400 Bad Request', [('Content-Type', 'application/json')])
return [json.dumps({'error': ('Invalid request signature',)})]
return self._app(environ, start_response)
Run Code Online (Sandbox Code Playgroud) 在使用分割窗口时,我经常使用该命令来平均调整所有窗口的大小。但是,我还在垂直窗口中使用迷你缓冲区资源管理器,我希望将其最大宽度保持为 25。有什么方法可以配置 vim,以便迷你缓冲区资源管理器窗口不会重新调整大小或保持不变最大宽度为 25?
谢谢!
我的输入有一个dictonary有以下特点:
例如:
mydict = {
'one': 1,
'two': '23',
'three': 3,
'four': [
7,
'6',
5,
8
],
'nine': 9
}
Run Code Online (Sandbox Code Playgroud)
我需要将输入转换为元组列表,其中每个元组是键/值对.对于可迭代元素,每个元素都有一个键/值对,按值排序.例如,上面的输出应该是:
('four', 5)
('four', 7)
('four', 8)
('four', '6')
('nine', 9)
('one', 1)
('three', 3)
('two', '2')
Run Code Online (Sandbox Code Playgroud)
我目前使用以下生成器实现了这个:
def dict_to_sorted_tuples(unsorted_dict):
for key in sorted(unsorted_dict):
if isinstance(unsorted_dict[key], basestring):
yield key, unsorted_dict[key]
continue
try:
for v in sorted(unsorted_dict[key]):
yield key, v
except:
yield key, unsorted_dict[key]
print list(dict_to_sorted_tuples(mydict))
Run Code Online (Sandbox Code Playgroud)
我觉得这可以用更干净的方式完成,有任何改进建议吗?
我一直在玩,并且搜索了一下,但我无法弄清楚这一点.我在JavaScript对象中有一个伪私有函数,需要通过eval调用(因为函数的名称是动态构建的).但是,函数被闭包隐藏在全局范围内,我无法弄清楚如何使用eval()来引用它.
例如:
var myObject = function(){
var privateFunctionNeedsToBeCalled = function() {
alert('gets here');
};
return {
publicFunction: function(firstPart, SecondPart) {
var functionCallString = firstPart + secondPart + '()';
eval(functionCallString);
}
}
}();
myObject.publicFunction('privateFunctionNeeds', 'ToBeCalled');
Run Code Online (Sandbox Code Playgroud)
我知道这个例子看起来很傻但我想保持简单.有任何想法吗?
python ×3
function ×2
javascript ×2
php ×2
dictionary ×1
doctrine ×1
editor ×1
eval ×1
generator ×1
haskell ×1
ide ×1
iterable ×1
middleware ×1
mocking ×1
mox ×1
namespaces ×1
php-5.3 ×1
private ×1
pylons ×1
scope ×1
sorting ×1
sqlalchemy ×1
tinymce ×1
unit-testing ×1
validation ×1
vim ×1
wsgi ×1
wysiwyg ×1