我遇到了WPF绑定到静态属性的一些问题.在我的应用程序中有一个名为Globals的类,它包含ThisAddIn的静态属性.这个对象允许我访问一个User属性,它基本上是我想在我的Binding中使用的.所以,我的XAML看起来像这样:
<TextBlock Text="{Binding Path=User.Name
, Source={x:Static Member=s:Globals.ThisAddIn}}" />
Run Code Online (Sandbox Code Playgroud)
命名空间s由以下行在顶部声明:
xmlns:s="clr-namespace:ConsoleApplication16.Model"
Run Code Online (Sandbox Code Playgroud)
我发现了很多不同的方法,如何在XAML中引用静态属性,但除了这个之外没有一个工作,这对我来说似乎也是最合乎逻辑的.我发现的一些样本根本没有使用Path或Member.
经过一些测试后我找到了正确的方法,使用"x:Static Member"来定义你想要使用的类和静态属性,而Path在这个对象里面定义了正确的属性,就像普通绑定一样.
尽管此解决方案在没有任何抱怨的情况下进行编译,但会弹出XAMLParseException,直接告诉我StaticExtension值无法解析为枚举,静态字段或静态属性.
我使用firebase作为我的数据库后端,并且有很多关系.由于我的关系有点抽象,我将在这里提供一个简化的例子.假设我们有学生和讲座.学生可以参加讲座和讲座,有一份参加学生的名单.在整个应用程序中,需要两个查询,因此没有真正的优势将列表保留在其中任何一个中.这个问题在像这样的No-SQL场景中似乎并不罕见,我甚至已经阅读过关于为每个学生存储所有讲座的列表以及每个讲座的学生列表,这是一个有效的解决方案.那么让我说我的JSON数据如下所示:
"students": {
"s1" : {
"name": "A",
"lectures": ["l1", "l2"]
},
"s2" : {
"name": "B",
"lectures": ["l2", "l3"]
}
}
Run Code Online (Sandbox Code Playgroud)
和
"lectures": {
"l1" : {
"title": "lecture1",
"students": ["s1"]
},
"l2" : {
"title": "lecture2",
"students": ["s1", "s2"]
},
"l3" : {
"title": "lecture3",
"students": ["s2"]
}
}
Run Code Online (Sandbox Code Playgroud)
s1,s2,l1,l2,l3是神秘的Firebase ID.使用这样的设置,可以很容易地编写查询,以便将学生"s1"的所有讲座作为数组["l1","l2"].
但是,我无法弄清楚如何使用这组ID获取相应的讲座元素,因为我只能查询一个ID.我还想避免获取所有数据并在之后使用Java代码对其进行过滤.
我在Android应用中为Coinbase实现了OAuth2.应用程序流程如下.用户点击"与Coinbase的链接"按钮,即可调用OAuth2端点https://www.coinbase.com/oauth/authorize.然后系统浏览器打开Coinbase OAuth页面,要求用户登录并授权该应用程序.完成此操作后,将通过自定义URI方案回调应用程序:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="myapp" android:pathPrefix="/coinbase-oauth" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
在使用此过滤器的活动内部,这是与用户启动初始OAuth过程相同的活动,该onNewIntent(Intent intent)方法称为通过意图获取代码,并通过获取令牌完成授权.这是首选的方式以及我们希望OAuth如何表现,一切都很好.
但是,在某些设备上,BROWSABLE活动会在浏览器中重新创建.我们到达onCreate()了活动,也可以从意图中获取OAuth代码,但是,我无法重新进入应用程序.启动浏览器进行授权的初始活动仍在后台等待响应.新创建的活动版本基本上是分离的.虽然它可以完成工作,但我希望用户重新进入应用程序.
似乎我误解了Hyperledger Fabric如何处理查询。我目前正在使用fabric-go-sdk从分类帐中查询资产,例如
asset, err := client.Query(channel.Request{ChaincodeID: someCCname, Fcn: "query", Args: [][]byte{[]byte(someID)}})
Run Code Online (Sandbox Code Playgroud)
当我的系统处于负载状态(许多与查询无关的新事务)时,有时会出现以下错误消息:
背书验证失败:背书者客户端状态代码:(3)ENDORSEMENT_MISMATCH。说明:ProposalResponsePayloads不匹配。
如果仅查询数据,为什么要背书?对我来说,错误消息似乎表明多个对等方对查询的回答不同。这是否意味着某些对等方已经将资产抵押到分类帐中,而其他同等方却没有将其分类?值得注意的是,查询是在资产创建后很短的时间内运行的,并且不一致。
查询链码非常简单明了:
func (c *TestChaincode) query(stub shim.ChaincodeStubInterface, args []string) pb.Response {
data, err := stub.GetState(args[0])
if err != nil {
return shim.Error(err)
}
if data== nil {
return shim.Error(err)
}
return shim.Success(data)
}
Run Code Online (Sandbox Code Playgroud) 我在 ramdisk 上启动的机器无法启动 docker 容器。
例如,运行hello-world结果为
$ docker run hello-world
docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "process_linux.go:430: container init caused \"rootfs_linux.go:109: jailing process inside rootfs caused \\\"pivot_root invalid argument\\\"\"": unknown.
ERRO[0000] error waiting for container: context canceled
Run Code Online (Sandbox Code Playgroud)
不幸的是,该DOCKER_RAMDISK=true变量似乎没有效果。我在重新启动 docker 服务之前设置了它,systemctl restart docker但没有效果。(我在 Debian Buster)