这是unittest和元类的后续问题:自动test_*方法生成:
对于这个(固定的)unittest.TestCase布局:
#!/usr/bin/env python
import unittest
class TestMaker(type):
def __new__(cls, name, bases, attrs):
callables = dict([
(meth_name, meth) for (meth_name, meth) in attrs.items() if
meth_name.startswith('_test')
])
for meth_name, meth in callables.items():
assert callable(meth)
_, _, testname = meth_name.partition('_test')
# inject methods: test{testname}_v4,6(self)
for suffix, arg in (('_false', False), ('_true', True)):
testable_name = 'test{0}{1}'.format(testname, suffix)
testable = lambda self, func=meth, arg=arg: func(self, arg)
attrs[testable_name] = testable
return type.__new__(cls, name, bases, attrs)
class TestCase(unittest.TestCase):
__metaclass__ = TestMaker
def …
Run Code Online (Sandbox Code Playgroud) 我有一组JSON值,有3个级别:
cluster> segment> node
每个群集由段组成,每个段由节点组成.我试图弄清楚如何将其表示为JSON对象,我不确定如何创建结构.
每个节点都包含一个id以及对其segment id和cluster id的引用.我写了一个像这样的测试对象:
var customers = [
{
"cluster" :
{"flights":4, "profit":5245, "clv":2364,
"segment" :
{ "flights":2, "profit":2150, "clv":1564,
"node" :
{ 'xpos': 1, 'ypos': 2 }// closes node
}// closes segment
}//closes cluster
},
{
"cluster" :
{"flights":4, "profit":5245, "clv":2364,
"segment" :
{ "flights":2, "profit":2150, "clv":1564,
"node" :
{ 'xpos': 1, 'ypos': 2 }// closes node
}// closes segment
}//closes cluster
}
];
Run Code Online (Sandbox Code Playgroud)
感觉有点片状的部分是段和节点嵌套的方式.我没有收到任何错误,但这是表示此数据的最佳方式吗?
编辑:
感谢您的回答,它肯定指向了正确的方向,使用工具(jsonlint)并更好地理解json中的结构化数据.他们都是正确的答案,告诉我这是一个非常基本的问题.再次感谢.
我为客户建立了一个PHP/JavaScript网站.然后他们让我复制它,除了作为一个独立的Mac应用程序.我用一个结合嵌入式Web服务器,PHP和'WebView'的应用程序做了这个 - 我可以嵌入标准应用程序窗口的WebKit Web浏览器的Cocoa-ish版本.这一切都很有效 - 我必须重复使用10,000多行PHP/JS代码,这样就可以在"原生"代码中重新实现所有这些代码.
现在他们想要一个Windows等价物.我有理由相信我可以让PHP和Web服务器工作.我知道嵌入基本的IE功能非常简单.
但是......在我的Mac设置中,WebView(通过windowScriptObject的东西)让我能够从C++调用JavaScript方法.例如,我可以从C++调用JavaScript方法来更新屏幕.同样,我可以进行设置,以便浏览器中的JavaScript调用可以触发C++方法 - 例如,我使用它来让用户单击"浏览"并使用真实的标准文件浏览器选择文件路径.
所以我的问题是,是否有一个基于Windows的嵌入式浏览器设置,让我以同样的方式与JavaScript交互?
(JavaScript < - > WebKit界面在这里有更详细的描述:http://lipidity.com/apple/javascript-cocoa-webkit/)
今天晚上我努力学习html位置和jquery动画,我做了一个HTML页面,如下所示:
<html>
<head>
<script src="jquery-1.5.1.min.js" type="text/javascript"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
body {
background-image: url(Cartoon_Landscape2.jpg);
}
</style>
<script type="text/javascript">
function moveDIV ( obj, x, y ) {
var element = document.getElementById(obj);
element.style.left=x;
element.style.top=y;
}
var t;
function anim1()
{
moveDIV("mariposa", screen.availWidth, screen.availHeight);
$("#mariposa").animate({left: '-84', top: '-58'}, 10000);
t=setTimeout("anim1()",22000);
//moveDIV("mariposa2", '-84', screen.availHeight);
//$("#mariposa2").animate({left: screen.availWidth, top: '-58'}, 10000);
}
function anim2()
{
moveDIV("mariposa2", '-84', screen.availHeight);
$("#mariposa2").animate({left: screen.availWidth, top: '-58'}, 10000);
t=setTimeout("anim2()",22000);
}
function callfunctions()
{
moveDIV("mariposa2", '-84', screen.availHeight);
anim1();
var b=setTimeout("anim2()",11000); …
Run Code Online (Sandbox Code Playgroud) 我使用独立版本的Archiva,它使用Jetty作为其应用程序容器.它默认为http://mycompany.com:8080/archiva
我想摆脱应用程序上下文,只是使它可以http://mycompany.com:8080/
使我在Apache 2.2.x中使用虚拟主机将其映射到子域.
我无法弄清楚配置文件中要更改的内容.这是一个jetty.xml
文件,其中包含所有注释以简洁起见.
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure id="Server" class="org.mortbay.jetty.Server">
<!-- =========================================================== -->
<!-- Server Thread Pool -->
<!-- =========================================================== -->
<Set name="ThreadPool">
<!-- Default bounded blocking threadpool
-->
<New class="org.mortbay.thread.BoundedThreadPool">
<Set name="minThreads">10</Set>
<Set name="maxThreads">250</Set>
<Set name="lowThreads">25</Set>
</New>
</Set>
<Call name="addConnector">
<Arg>
<New class="org.mortbay.jetty.nio.SelectChannelConnector">
<Set name="host"><SystemProperty name="jetty.host"/></Set>
<Set name="port"><SystemProperty name="jetty.port" default="8081"/></Set>
<Set name="maxIdleTime">30000</Set>
<Set name="Acceptors">2</Set>
<Set name="statsOn">false</Set>
<Set name="confidentialPort">8443</Set>
<Set name="lowResourcesConnections">5000</Set>
<Set name="lowResourcesMaxIdleTime">5000</Set>
</New>
</Arg>
</Call>
<Set name="handler"> …
Run Code Online (Sandbox Code Playgroud) 我正在使用g ++和Dev-C ++这两个编译器。当我在Dev-C ++上编译程序时,它可以完美编译。但是当我尝试在g ++上进行编译时,它给了我两个错误:
在a2test.cpp包含的文件中:27: ----。h:25:错误:尚未声明“ ostream” ----。h:26:错误:尚未声明'istream'
谁能告诉我该怎么做才能解决这个问题。
谢谢
任何人都可以弄清楚这里发生了什么?我能够以我想要的方式使我的代码工作,但我无法弄清楚为什么validates_associated没有按照我的预期工作.这是我的代码片段:
class Flag < ActiveRecord::Base
belongs_to :user
belongs_to :post
# allow only one flag per post per user
validates_uniqueness_of :user_id, :scope => :post_id
validates :user_id, :post_id, :presence => true
validates_associated :user, :post
attr_accessible :user_id, :post_id
end
Run Code Online (Sandbox Code Playgroud)
使用此代码,我无法使用user_id == nil保存标志.我可以使用user_id == 12345保存一个标志(即某些user_id不在数据库中).这就是validates_associated API规范所说的:
validates_associated(*attr_names)
验证关联的对象是否全部有效.适用于任何类型的协会.
...
注意:如果尚未分配关联,则此验证不会失败.如果要确保关联存在且保证有效,则还需要使用validates_presence_of.
我能够通过使用它来获得所需的行为,而不是:
validates :user, :post, :presence => true
Run Code Online (Sandbox Code Playgroud)
我对API规范的理解是validates_associated检查关联的表以查看是否存在具有与Flag 的外键匹配的行,前提是外键是非nil.任何人都可以对此提出任何见解吗?我误解了validates_associated应该如何工作?
目前我的代码将用户输入放入一维ArrayList中,但我想将它们放入二维ArrayList中并遇到一些麻烦.
这是我的代码:
public class Game extends Activity implements OnClickListener {
private static final String TAG = "Matrix";
static ArrayList<EditText> columnEditTexts;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.matrix);
View doneButton = findViewById(R.id.done_button);
doneButton.setOnClickListener(this);
columnEditTexts = new ArrayList<EditText>();
for(int i = 0; i < MatrixMultiply.h1; i++){
TableLayout table = (TableLayout)findViewById(R.id.myTableLayout);
TableRow row = new TableRow(this);
EditText column = new EditText(this);
for(int j = 0; j < MatrixMultiply.w1; j++){
table = (TableLayout)findViewById(R.id.myTableLayout);
column = new EditText(this);
column.setId(i);
row.addView(column);
columnEditTexts.add(column);
}
table.addView(row);
} …
Run Code Online (Sandbox Code Playgroud)