来自我的主管的指示:"我想避免在其中添加任何逻辑models.py.从现在开始,让我们将其用作访问数据库的类,并将所有逻辑保留在使用模型类的外部类中,或者将它们包装起来."
我觉得这是错误的方式.我认为保持模型逻辑只是为了保持文件小是一个坏主意.如果逻辑在模型中是最好的,那么无论文件大小如何,它都应该去.
那么有一个简单的方法来使用包含?在PHP中,我想向主管建议我们只有models.pyinclude()来自其他地方的模型类.从概念上讲,这将允许模型具有我们想要的所有逻辑,但通过增加文件数量来减少文件大小(这会导致较少的修订控制问题,如冲突等).
那么,是否有一种从models.py文件中删除模型类的简单方法,但仍然可以使用所有Django工具的模型?或者,对于"大型"models.py文件的一般问题,是否存在完全不同但优雅的解决方案?任何输入将不胜感激.
有没有任何类型的xml参考?
我发现这对我来说非常宝贵
但我无法弄清楚我应该知道如何做到这一点,如果我没找到那个帖子.
我知道api引用有许多类列出的xml属性......但是xml标签呢?它记录在哪里,我可以使用建的形状<padding>,<corners>,<solid>标签?
我真的很想知道在哪里可以找到这样的文档.
在eclipse中,如果我在调试模式下运行没有断点的Java程序,并且如果JVM遇到NullPointerException,Eclipse将会突出显示有问题的代码行,并显示局部变量等.执行暂停.我可以使用"显示"选项卡评估代码,依此类推.
但是,如果我在调试模式下运行JUnit测试,并且jvm遇到NullPointerException,则jvm不会暂停,并且我没有机会看到局部变量.
是否可以运行JUnit测试,以便JVM在遇到NullPointerException时自动暂停,而不使用断点?
编辑:使用JUnit 4和Juno
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) 在导入代码的各种方法中,有些方法比其他方法更适合使用吗?这个链接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文件都是空的),我应该支持哪种导入方法,为什么?
我有一个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) 我想我遇到了并发s3写的问题.两个(或更多)进程同时将几乎相同的内容写入相同的s3位置.我想确定控制这种情况将如何发挥作用的并发规则.
按照设计,所有的过程都会在写入s3时被杀死.(我曾说过他们写的"几乎"是相同的内容,因为除了其中一个进程之外,所有进程都被杀死.如果所有进程都被允许生存,他们最终会写出相同的内容.)
我的理论是,被杀的过程是在s3上留下一个不完整的文件,另一个文件(可能是完全写的)并没有被选为s3上的文件.我想证明或反驳这一理论.(我试图找出问题是否是在写入s3或其他时间期间由并发问题引起的).
来自http://aws.amazon.com/s3/faqs/上的常见问题解答:
问:Amazon S3采用什么数据一致性模型?
亚马逊S3在美国西部(俄勒冈州),美国西部(北加州),欧盟(爱尔兰),亚太地区(新加坡),亚太地区(东京),亚太地区(悉尼)和南美洲(圣保罗)地区提供阅读 - 新对象的PUTS的写后一致性以及覆盖PUTS和DELETES的最终一致性.美国标准区域中的Amazon S3存储桶提供最终一致性.
我正在使用美国标准区域.
我需要有关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.gradle的test任务取决于bTask。然而,重构后C.gradle的test任务应该不依赖bTask,但新的runDifferentTests任务应该依赖bTask。(当前,D.gradle的test任务被标记为依赖bTask,但实际上并没有依赖它-我想删除该依赖关系。两个子项目中唯一依赖的任务bTask是新runDifferentTests任务。)
我尝试了一些不同的方法,但似乎找不到有效的解决方案。
我试图弄清楚如何使用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可以做到这一点,至少不容易...但是可以吗?
我需要让Dygraph尊重任意时区.图表中/上/周围显示的所有日期都应该能够以任意时区显示.
问题: