小编Edd*_*ied的帖子

models.py变得越来越大,打破它的最佳方法是什么?

来自我的主管的指示:"我想避免在其中添加任何逻辑models.py.从现在开始,让我们将其用作访问数据库的类,并将所有逻辑保留在使用模型类的外部类中,或者将它们包装起来."

我觉得这是错误的方式.我认为保持模型逻辑只是为了保持文件小是一个坏主意.如果逻辑在模型中是最好的,那么无论文件大小如何,它都应该去.

那么有一个简单的方法来使用包含?在PHP中,我想向主管建议我们只有models.pyinclude()来自其他地方的模型类.从概念上讲,这将允许模型具有我们想要的所有逻辑,但通过增加文件数量来减少文件大小(这会导致较少的修订控制问题,如冲突等).

那么,是否有一种从models.py文件中删除模型类的简单方法,但仍然可以使用所有Django工具的模型?或者,对于"大型"models.py文件的一般问题,是否存在完全不同但优雅的解决方案?任何输入将不胜感激.

python django django-models models

86
推荐指数
3
解决办法
2万
查看次数

有没有Android XML文档?

有没有任何类型的xml参考?

我发现这对我来说非常宝贵

但我无法弄清楚我应该知道如何做到这一点,如果我没找到那个帖子.

我知道api引用有许多类列出的xml属性......但是xml标签呢?它记录在哪里,我可以使用建的形状<padding>,<corners>,<solid>标签?

我真的很想知道在哪里可以找到这样的文档.

xml api android reference

28
推荐指数
2
解决办法
2万
查看次数

如何调试JUnit测试,类似于Eclipse中的常规Java程序

在eclipse中,如果我在调试模式下运行没有断点的Java程序,并且如果JVM遇到NullPointerException,Eclipse将会突出显示有问题的代码行,并显示局部变量等.执行暂停.我可以使用"显示"选项卡评估代码,依此类推.

但是,如果我在调试模式下运行JUnit测试,并且jvm遇到NullPointerException,则jvm不会暂停,并且我没有机会看到局部变量.

是否可以运行JUnit测试,以便JVM在遇到NullPointerException时自动暂停,而不使用断点?

编辑:使用JUnit 4和Juno

java eclipse debugging junit

22
推荐指数
2
解决办法
3万
查看次数

在Python中,如何以静态方式引用类,如PHP的"self"关键字?

PHP类可以在静态上下文中使用关键字"self",如下所示:

<?php
class Test {
  public static $myvar = 'a';
  public static function t() {
     echo self::$myvar; // Generically reference the current class.
     echo Test::$myvar; // Same thing, but not generic.
  }
}
?>
Run Code Online (Sandbox Code Playgroud)

显然我不能在Python中以这种方式使用"self",因为"self"不是指类而是指实例.那么有没有一种方法可以在Python中的静态上下文中引用当前类,类似于PHP的"self"?

我想我想要做的事情就是不那么pythonic.不过不确定,我是Python的新手.这是我的代码(使用Django框架):

class Friendship(models.Model):
  def addfriend(self, friend):
    """does some stuff"""

  @staticmethod # declared "staticmethod", not "classmethod"
  def user_addfriend(user, friend): # static version of above method
    userf = Friendship(user=user) # creating instance of the current class
    userf.addfriend(friend) # calls above method

# later ....
Friendship.user_addfriend(u, f) # …
Run Code Online (Sandbox Code Playgroud)

python class

21
推荐指数
2
解决办法
9763
查看次数

Python(和Django)最佳导入实践

在导入代码的各种方法中,有些方法比其他方法更适合使用吗?这个链接http://effbot.org/zone/import-confusion.htm简而言之

from foo.bar import MyClass
Run Code Online (Sandbox Code Playgroud)

在正常情况下,或者除非您知道自己在做什么,否则不是首选导入MyClass的方法.(相反,更好的方式是:

import foo.bar as foobaralias
Run Code Online (Sandbox Code Playgroud)

然后在代码中,访问MyClass使用

foobaralias.MyClass
Run Code Online (Sandbox Code Playgroud)

)

简而言之,似乎上面提到的链接说通常更好地从模块导入所有内容,而不仅仅是模块的一部分.

但是,我链接的那篇文章真的很旧.

我还听说,至少在Django项目的上下文中,更好的是只导入你想要使用的类,而不是整个模块.据说这种形式有助于避免循环导入错误或至少使django导入系统不那么脆弱.有人指出,Django自己的代码似乎更喜欢"从x import y"而不是"import x".

假设我正在处理的项目没有使用...的任何特殊功能__init__.py(我们所有的__init__.py文件都是空的),我应该支持哪种导入方法,为什么?

python django python-import

21
推荐指数
2
解决办法
2万
查看次数

Hadoop流 - 从reducer输出中删除尾随选项卡

我有一个hadoop流作业,其输出不包含键/值对.您可以将其视为仅限值对或仅键对.

我的流式缩减器(PHP脚本)输出由换行符分隔的记录.Hadoop流将其视为没有值的密钥,并在换行符之前插入一个选项卡.这个额外的标签是不需要的

我该如何删除它?

我正在使用带有AWS EMR的hadoop 1.0.3.我下载了hadoop 1.0.3的源代码,并在hadoop-1.0.3/src/contrib/streaming/src/java/org/apache/hadoop/streaming/PipeReducer.java中找到了这段代码:

reduceOutFieldSeparator = job_.get("stream.reduce.output.field.separator", "\t").getBytes("UTF-8");
Run Code Online (Sandbox Code Playgroud)

所以我试着把工作-D stream.reduce.output.field.separator=作为一个参数传递给没有运气的工作.我也尝试过-D mapred.textoutputformat.separator=-D mapreduce.output.textoutputformat.separator=没有运气.

我当然搜索谷歌,我找不到任何工作.一个搜索结果甚至表明,没有任何论据可以传递以达到预期的结果(但是,在这种情况下,hadoop版本真的很老).

这是我的代码(为了便于阅读,添加了换行符):

hadoop jar streaming.jar -files s3n://path/to/a/file.json#file.json
    -D mapred.output.compress=true -D stream.reduce.output.field.separator=
    -input s3n://path/to/some/input/*/* -output hdfs:///path/to/output/dir
    -mapper 'php my_mapper.php' -reducer 'php my_reducer.php'
Run Code Online (Sandbox Code Playgroud)

hadoop hadoop-streaming

9
推荐指数
2
解决办法
6749
查看次数

s3并发写入

我想我遇到了并发s3写的问题.两个(或更多)进程同时将几乎相同的内容写入相同的s3位置.我想确定控制这种情况将如何发挥作用的并发规则.

按照设计,所有的过程都会在写入s3时被杀死.(我曾说过他们写的"几乎"是相同的内容,因为除了其中一个进程之外,所有进程都被杀死.如果所有进程都被允许生存,他们最终会写出相同的内容.)

我的理论是,被杀的过程是在s3上留下一个不完整的文件,另一个文件(可能是完全写的)并没有被选为s3上的文件.我想证明或反驳这一理论.(我试图找出问题是否是在写入s3或其他时间期间由并发问题引起的).

来自http://aws.amazon.com/s3/faqs/上的常见问题解答:

问:Amazon S3采用什么数据一致性模型?

亚马逊S3在美国西部(俄勒冈州),美国西部(北加州),欧盟(爱尔兰),亚太地区(新加坡),亚太地区(东京),亚太地区(悉尼)和南美洲(圣保罗)地区提供阅读 - 新对象的PUTS的写后一致性以及覆盖PUTS和DELETES的最终一致性.美国标准区域中的Amazon S3存储桶提供最终一致性.

我正在使用美国标准区域.

  • 这个答案对并发写入有什么看法?我想我理解"读后写一致性"与"最终一致性"之间的区别,但仅限于在写完成后读取对象时所看到的内容.
  • 被杀死的进程是否有可能"赢"并最终在s3上找到一个不完整的文件?或者s3以某种方式确保文件只在整个PUT操作完成后才会放在s3上?
  • s3如何决定哪个文件"获胜"?这是真正的问题.

cloud concurrency amazon-s3

7
推荐指数
1
解决办法
1万
查看次数

gradle子项目任务的语法取决于父项目的任务?

我需要有关Gradle构建文件的帮助。我有一些子项目,具体取决于顶层文件夹中的任务。我只需要承担一个test任务并将其分为两个单独的测试任务。当前,文件系统结构如下所示(选项卡指示目录中的文件):

top-level-project-folder
    A.gradle
    B.gradle
    C-subproject-folder
        C.gradle
    D-subproject-folder
        D.gradle
Run Code Online (Sandbox Code Playgroud)

A.gradle的内容(重构之前):

subprojects {
    tasks.test.dependsOn {
        bTask
    }
}
apply from: 'B.gradle'
Run Code Online (Sandbox Code Playgroud)

C.gradle的内容(重构之前):

test {
    ...
}
Run Code Online (Sandbox Code Playgroud)

重构之后,C.gradle需要看起来像:

test {
    ...
}

task runDifferentTests(type : Test) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

棘手的部分是当前C.gradletest任务取决于bTask。然而,重构后C.gradletest任务应该依赖bTask,但新的runDifferentTests任务应该依赖bTask。(当前,D.gradletest任务被标记为依赖bTask,但实际上并没有依赖它-我想删除该依赖关系。两个子项目中唯一依赖的任务bTask是新runDifferentTests任务。)

我尝试了一些不同的方法,但似乎找不到有效的解决方案。

dependencies build gradle

5
推荐指数
1
解决办法
3644
查看次数

如何使用JDBI通过单个INSERT插入多行?

我试图弄清楚如何使用JDBI执行多行插入语句。

这是我所拥有的:

@SqlBatch("INSERT INTO my_table(col1, col2) VALUES (:col1, :col2)")
@BatchSize(size=300)
public abstract int[] insertRows(@BindBean MyObj ... objs);
Run Code Online (Sandbox Code Playgroud)

...效果很好,但是导致插入的行数与INSERT语句数一样多。即,如果要插入两行,则结果如下:

INSERT INTO my_table(col1, col2) VALUES ('a', 'b');
INSERT INTO my_table(col1, col2) VALUES ('c', 'd');
Run Code Online (Sandbox Code Playgroud)

...当我想要的东西看起来像这样:

INSERT INTO my_table(col1, col2) VALUES ('a', b'), ('c', 'd');
Run Code Online (Sandbox Code Playgroud)

我希望将可变数量的对象作为输入。我不认为JDBI可以做到这一点,至少不容易...但是可以吗?

java jdbi

5
推荐指数
1
解决办法
1495
查看次数

Dygraph在任意时区显示日期

我需要让Dygraph尊重任意时区.图表中/上/周围显示的所有日期都应该能够以任意时区显示.

问题:

javascript timezone dygraphs momentjs

3
推荐指数
1
解决办法
2305
查看次数