互联网上有很多关于Maven如何糟糕的话题.我已经使用Maven的一些功能已经有几年了,我认为最重要的好处是依赖管理.
Maven文档不够充分,但通常当我需要完成某些事情时我会弄清楚它然后它可以工作(例如当我实现签署jar时).我不认为Maven是伟大的,但它确实解决了一些问题,没有它将是一个真正的痛苦.
那么,为什么Maven会有如此糟糕的代表,以及Maven在未来会遇到什么问题呢?也许还有更多我不了解的替代方案?(例如,我从未详细看过常春藤.)
注意:这不是导致争论的尝试.这是尝试清除FUD.
我刚刚发现了配置选项CELERYD_PREFETCH_MULTIPLIER(docs).默认值为4,但(我相信)我希望预取或尽可能低.我现在把它设置为1,这足够接近我正在寻找的东西,但仍有一些我不明白的东西:
为什么这个预取是一个好主意?除非消息队列和工作人员之间存在大量延迟(在我的情况下,他们当前在同一主机上运行,最糟糕的情况可能最终在同一数据中的不同主机上运行),我真的没有理由看到它.中央).文档仅提到了缺点,但未能解释其优点.
许多人似乎把它设置为0,期望能够以这种方式关闭预取(在我看来是一个合理的假设).但是,0表示无限预取.为什么有人会想要无限制的预取,这不是完全消除了你首先引入任务队列的并发/异步性吗?
为什么不能关闭预取?在大多数情况下,关闭性能可能不是一个好主意,但有技术上的原因是不可能的吗?还是只是没有实施?
有时,此选项已连接到CELERY_ACKS_LATE.例如.Roger Hu写道 «[...]通常[用户]真正想要的是让工人只保留与子进程一样多的任务.但是,如果没有启用延迟确认,这是不可能的[...]»我不明白这两个选项是如何连接的,以及为什么没有另一个选项是不可能的.可以在此处找到关于连接的另一个提及.有人可以解释为什么这两个选项是连接的吗?
我有一段类似于此的代码:
import sys
def func1():
func2()
def func2():
raise Exception('test error')
def main():
err = None
try:
func1()
except:
err = sys.exc_info()[1]
pass
# some extra processing, involving checking err details (if err is not None)
# need to re-raise err so caller can do its own handling
if err:
raise err
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
当func2引发异常时,我收到以下回溯:
Traceback (most recent call last):
File "err_test.py", line 25, in <module>
main()
File "err_test.py", line 22, in main
raise err …Run Code Online (Sandbox Code Playgroud) 是否有插件,附加组件,Greasemonkey脚本或类似的东西(最糟糕的是,一个易于使用的代理?)自动取消网站上包含的Javascript文件?
我知道例如jsbeautifier.org,但在外部执行此操作不允许我在未明细化的代码中设置断点.
我的典型用例:
我主要对与Firebug一起使用的解决方案感兴趣,但如果有适用于Chrome或Opera的开发工具的东西,我也想听听它.
我有一个Greasemonkey脚本,在Firefox和Opera中运行良好.但是,我很难让它在Chrome中运行.问题是在页面中注入一个可以通过页面中的代码调用的函数.这是我到目前为止所做的事情:
首先,我得到一个帮助引用Firefox 的unsafeWindow.这让我可以使用相同的FF和Opera代码(我认为是Chrome).
var uw = (this.unsafeWindow) ? this.unsafeWindow : window;
Run Code Online (Sandbox Code Playgroud)
接下来,我在页面中注入一个函数.它实际上只是一个非常薄的包装器,除了在GM脚本的上下文中调用相应的函数之外什么都不做:
uw.setConfigOption = function(newValue) {
setTimeout(setConfigOption, 0, newValue);
}
Run Code Online (Sandbox Code Playgroud)
然后,我的脚本中有相应的功能:
setConfigOption = function(newValue) {
// do something with it, e.g. store in localStorage
}
Run Code Online (Sandbox Code Playgroud)
最后,我在页面中注入一些HTML,并带有一个调用该函数的链接.
var p = document.createElement('p');
p.innerHTML = '<a href="javascript:setConfigOption(1)">set config option to 1</a>';
document.getElementById('injection-point').appendChild(p);
Run Code Online (Sandbox Code Playgroud)
总结一下:在Firefox中,当用户单击该注入的链接时,它将在unsafeWindow上执行函数调用,然后触发超时,该超时在我的GM脚本的上下文中调用相应的函数,然后执行实际处理.(如果我错了,请纠正我.)
在Chrome中,我只是得到一个"未捕获的ReferenceError:setConfigOption未定义"错误.实际上,在控制台中输入"window.setConfigOption"会产生"未定义".在Firebug和Opera开发人员控制台中,功能就在那里.
也许有另一种方法可以做到这一点,但是我的一些函数是由页面上的Flash对象调用的,我认为这使得我必须在页面上下文中使用函数.
我在Greasemonkey维基上快速浏览了unsafeWindow的替代品,但它们看起来都非常难看.我在这里完全走错了轨道还是应该仔细研究这些?
决议:我跟着Max S. 建议,现在可以在Firefox和Chrome中使用.因为我需要对页面可用的函数必须回调常规函数,所以我将整个脚本移动到页面,即它完全包含在他称为"main()"的函数中.
为了使这个hack的额外丑陋更加可以忍受,我至少可以放弃unsafeWindow和wrappedJSObject的使用.
我还没有设法从Greasemonkey wiki中获取内容范围运行器.它应该做同样的事情似乎执行得很好,但是我的函数永远不会<a>被页面中的元素访问,例如.我还没弄清楚为什么会这样.
javascript greasemonkey google-chrome userscripts google-chrome-extension
我在Windows 7上安装了Python 2.7.1,但我无法安装easy_install.请帮我.
我正在为我的项目使用Bootstrap.除Internet Explorer 8及更低版本外,占位符对所有浏览器都显示正常.
是否有任何解决方案可以在IE8中获得占位符支持?
我在Heroku dyno上运行celeryd.当我关闭它并且它先前已处理(甚至已完成)至少一个任务时,它没有正确关闭,我从Heroku收到错误R12(退出超时).
这是我从我的Procfile(通过Django和django-celery)运行celeryd的方式:
celeryd: python manage.py celeryd -E --loglevel=INFO
Run Code Online (Sandbox Code Playgroud)
这是我正在做的触发它:
> heroku ps:scale web=0 celeryd=0 --app myapp
Run Code Online (Sandbox Code Playgroud)
这是我得到的日志输出:
2012-09-07T12:56:31+00:00 heroku[celeryd.1]: State changed from up to down
2012-09-07T12:56:31+00:00 heroku[api]: Scale to celeryd=0, web=1 by mail@mydomain.com
2012-09-07T12:56:32+00:00 heroku[web.1]: State changed from up to down
2012-09-07T12:56:32+00:00 heroku[api]: Scale to web=0 by mail@mydomain.com
2012-09-07T12:56:34+00:00 heroku[celeryd.1]: Stopping all processes with SIGTERM
2012-09-07T12:56:35+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2012-09-07T12:56:37+00:00 heroku[web.1]: Process exited with status 143
2012-09-07T12:56:43+00:00 heroku[celeryd.1]: Error R12 (Exit timeout) -> At …Run Code Online (Sandbox Code Playgroud) 我理解(或者至少我相信我这样做)将类的实例传递给方法ref而不是传递方法意味着什么ref.何时或在什么情况下应该通过类实例ref?ref在类实例中使用关键字时是否有最佳实践?
我创建了一个"配置文件"模型(与用户模型具有一对一的关系),如扩展现有用户模型所述.配置文件模型与另一个模型具有可选的多对一关系:
class Profile(models.Model):
user = models.OneToOneField(User, primary_key=True)
account = models.ForeignKey(Account, blank=True, null=True, on_delete=models.SET_NULL)
Run Code Online (Sandbox Code Playgroud)
正如那里记录的那样,我还创建了一个内联管理员:
class ProfileInline(admin.StackedInline):
model = Profile
can_delete = False
verbose_name_plural = 'profiles'
# UserAdmin and unregister()/register() calls omitted, they are straight copies from the Django docs
Run Code Online (Sandbox Code Playgroud)
现在,如果account在创建用户时未在管理员中选择a ,则不会创建配置文件模型.所以我再次连接到post_save信号,只需按照文档:
@receiver(post_save, sender=User)
def create_profile_for_new_user(sender, created, instance, **kwargs):
if created:
profile = Profile(user=instance)
profile.save()
Run Code Online (Sandbox Code Playgroud)
只要我没有account在管理员中选择一个,这个工作正常,但如果我这样做,我会得到一个IntegrityError例外,告诉我duplicate key value violates unique constraint "app_profile_user_id_key" DETAIL: Key (user_id)=(15) …
python ×4
celery ×2
celeryd ×2
javascript ×2
c# ×1
django ×1
django-admin ×1
easy-install ×1
exception ×1
firebug ×1
greasemonkey ×1
heroku ×1
java ×1
jquery ×1
maven-2 ×1
minify ×1
placeholder ×1
traceback ×1
try-catch ×1
userscripts ×1