我们的代码库有一些广泛使用的装饰器.
当我创建运行时配置文件时,调用图的很大一部分看起来像一个小时玻璃; 许多函数调用一个函数(装饰器),然后调用许多函数.这是一个不太有用的配置文件比我想要的.
有没有办法纠正这种情况?删除装饰器不是一种选择; 它提供了必要的功能.
事实上我们考虑从cProfile数据手动剥离装饰器,但似乎不可能,因为数据被汇总成调用者 - >被调用者关系,这会破坏调用者 - >装饰者 - >被调用者关系.
我们一直在努力研究我们问题的全维数据库模型,现在是时候开始编码了.我们以前的项目使用了由字符串操作构造的手工制作的查询.
在python和复杂的数据库布局之间进行接口是否有任何最佳/标准的做法?
我简要地评估了SQLAlchemy,SQLObject和Django-ORM,但是(我可能很容易遗漏一些东西)它们似乎针对微小的Web类型(OLTP)事务进行了调整,我正在进行高容量分析(OLAP)事务.
我的一些要求,可能与平时有所不同:
编写这些查询很容易,但编写代码以使数据排成一行非常繁琐,特别是随着模式的发展.这似乎是计算机可能擅长的东西?
是否有任何可能的方法来实现sudo
使用sudoers系统作为另一个用户运行封闭范围的上下文管理器?
system('whoami') # same result as echo $USER
with sudo():
system('whoami') # root
Run Code Online (Sandbox Code Playgroud)
我怀疑sudo(8)
可执行文件在这里对我有帮助,但也许有一些我可以绑定的C级接口?
动机:我几乎可以将这个shell脚本完全移植到python,甚至没有任何子进程,除了我目前不得不这样做system('sudo sh -c "echo %i > /dev/thatfile"' % value)
.如果可以的话,它会如此优雅with sudo(), open('/dev/thatfile', 'w') as thatfile: thatfile.write(str(value))
.
我已将ErrorDocument 401设置为指向我网站的帐户创建页面,但并非所有浏览器都支持此重定向(Safari).
此外,其他浏览器(Firefox,Chrome)永远不会要求输入密码并显示ErrorDocument.这会导致大量用户在多次尝试密码后放弃尝试,而无需查看帐户创建页面.
有没有办法让重定向更可靠,而不会完全破坏基本身份验证?
我希望这段代码"正常工作":
def main():
c = Castable()
print c/3
print 2-c
print c%7
print c**2
print "%s" % c
print "%i" % c
print "%f" % c
Run Code Online (Sandbox Code Playgroud)
当然,简单的方法是编写int(c)/3
,但我想为配置迷你语言启用更简单的perl-ish语法.
值得注意的是,如果我使用"旧式"类(不从对象继承),我可以通过定义一个__coerce__
方法来做到这一点,但旧式类已被弃用,将在python3中删除.
当我使用新式类做同样的事情时,我收到此错误:
TypeError: unsupported operand type(s) for /: 'Castable' and 'int'
Run Code Online (Sandbox Code Playgroud)
我相信这是设计的,但是我怎么能用__coerce__
新式的类来模拟旧式的行为呢?您可以在下面找到我当前的解决方案,但它非常难看且冗长.
这是相关文件:(我认为)
奖励积分:
print pow(c, 2, 100)
Run Code Online (Sandbox Code Playgroud) 在我们的应用程序中,我们支持用户编写的插件.
这些插件生成各种类型的数据(int,float,str或datetime),这些数据用一串元数据(用户,当前目录等)以及三个自由文本字段(MetricName,Var1)标记. ,Var2).
现在我们有几年的这些数据,我正在尝试设计一个模式,允许以分析方式(图表和东西)非常快速地访问这些指标.只要我们感兴趣的指标很少,但这很容易,但我们有不同粒度的大量不同指标,我们希望存储用户添加的数据,以便以后分析(可能在之后)架构更改).
示例数据:(请记住这是非常简化的)
=========================================================================================================
| BaseDir | User | TrialNo | Project | ... | MetricValue | MetricName | Var1 | Var2 |
=========================================================================================================
| /path/to/me | me | 0 | domino | ... | 20 | Errors | core | dumb |
| /path/to/me | me | 0 | domino | ... | 98.6 | Tempuratur | body | |
| /some/other/pwd | oneguy | 223 | farq | ... | 443 | ManMonths | waste | …
Run Code Online (Sandbox Code Playgroud) 我正在编写一个供我自己使用的应用程序,它将使用公开发布的RSS提要.
据我所知,协议中没有订阅/发布机制; 我需要定期让我的应用程序HTTP-GET RSS feed.
如果是这样的话,我想每十分钟左右抓一次,但我担心会被视为施虐者.如果我看到有人连续几个星期每十分钟点一次我的服务器,我当然会担心.
这是一个有效的问题吗?什么是"合理的"更新率是否有任何一般性建议?我甚至直接了解我的事实吗?
我希望能够在不写一堆重复的意大利面条代码的情况下表达一棵树到另一棵树的一般转换.有没有图书馆来帮助解决这个问题?我的目标语言是Python,但只要可以移植到Python,我就会看其他语言.
示例:我想转换此节点树:(请原谅S表达式)
(A (B) (C) (D))
Run Code Online (Sandbox Code Playgroud)
进入这一个:
(C (B) (D))
Run Code Online (Sandbox Code Playgroud)
只要父母是A而第二个祖先是C,无论上下文(可能有更多的父母或祖先).我想以简单,简洁和可重用的方式表达这种转变.当然这个例子非常具体.请尝试解决一般情况.
编辑:RefactoringNG是我正在寻找的东西,虽然它引入了一个全新的语法来解决问题,我想避免.我还在寻找更多和/或更好的例子.
背景:
我能够将python和猎豹(不要问!)文件转换为标记化的树表示,然后将它们转换为lxml树.我计划重新组织树并写出结果,以实现自动重构.XSLT似乎是重写XML的标准工具,但语法很糟糕(在我看来,很明显),我们店里的任何人都不会理解它.
我可以编写一些函数,它们只使用lxml方法(.xpath等)来实现我的重构,但我担心我最终会得到一堆专用的意大利面条代码,这些代码无法重复使用.
我想从这个文件中运行doctests,我不清楚要完成它:
README.md
:
# WELCOME!
This library is helpful and will help you in _many_ ways!
For example:
```
>>> import library
>>> library.helps()
True
```
Run Code Online (Sandbox Code Playgroud)
(旁白:任何人都可以帮我把这个突出显示为降价吗?)
也许这只是我对unicode的不熟悉,所以如果我弄错了,请纠正我.
看看http://json.org/,规范说一个字符串可以包含"任何UNICODE字符",但这让我很困惑.
那他们的意思是什么?