小编ton*_*ian的帖子

如何在ScalaQuery中回滚会话?

对于我的单元测试,我想设置一个数据库,用基本信息填充它,并在会话中运行每个测试,以回滚对数据库所做的所有更改,以便始终为每个测试提供一个原始副本.

我正在寻找类似的东西

db withSession {
   <create my objects under test>
   <run operations>
   <run asserts>

   this.rollback()
}
Run Code Online (Sandbox Code Playgroud)

回滚功能是在Scala Query的早期版本中,但它现在似乎缺失了.我该如何实现此功能?

最好的祝福

sql scala scalaquery

9
推荐指数
1
解决办法
813
查看次数

如何处理Gtk2Hs中的应用程序状态

试图学习用Gtk2Hs编写应用程序我遇到了困难,弥合了事件驱动的Gtk2HS与模型的持久状态之间的差距.所以为了简化,让我说我有这个简单的应用程序

module Main where

import Graphics.UI.Gtk
import Control.Monad.State

main = do
    initGUI
    window <- windowNew
    button <- buttonNew
    set button [buttonLabel := "Press me"]
    containerAdd window button

    -- Events
    onDestroy window mainQuit
    onClicked button (putStrLn ---PUT MEANINGFUL CODE HERE---)

    widgetShowAll window
    mainGUI
Run Code Online (Sandbox Code Playgroud)

我的应用程序的状态是按下按钮的次数.看到像这样的其他帖子,他们依赖于MVars或IORefs,这对我来说似乎并不令人满意,因为将来也许我会想要重构代码,以便状态存在于自己的上下文中.

我认为解决方案应该使用状态monad使用步骤函数,如:

State $ \s -> ((),s+1)
Run Code Online (Sandbox Code Playgroud)

但我不确定其含义,如何在上面的代码中执行此操作,或者即使该monad是我的问题的正确解决方案.

haskell gtk2hs state-monad

9
推荐指数
1
解决办法
478
查看次数

如何在Scala中使用带有Iterator的takeWhile

我有一个元素的迭代器,我想消耗它们,直到下一个元素满足条件,如:

val it = List(1,1,1,1,2,2,2).iterator
val res1 = it.takeWhile( _ == 1).toList
val res2 = it.takeWhile(_ == 2).toList
Run Code Online (Sandbox Code Playgroud)

res1给出一个预期List(1,1,1,1)res2返回,List(2,2)因为迭代器必须检查位置4中的元素.

我知道列表将被订购,所以没有必要像遍历那样遍历整个列表partition.我希望在条件不满足时立即完成.是否有任何聪明的方法与迭代器一起做这个?我不能toList对迭代器做一个因为它来自一个非常大的文件.

iteration iterator scala

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

哪些是HD中数据密集型读写的最佳实践?

我正在开发一个C++应用程序(在Linux机器中运行),它非常密集地读取日志文件并将派生结果写入磁盘.我想知道哪些是优化这类应用程序的最佳实践:

  • 哪些OS调整可以提高性能?
  • 哪种编程模式可提高IO吞吐量?
  • 预处理数据(转换为二进制,压缩数据等)是一个有用的措施吗?
  • 分块/缓冲数据是否有助于提高性能?
  • 我应该注意哪些硬件功能?
  • 哪些实践最适合在这些应用程序中进行性能分析和测量?
  • (在这里表达我缺少的担忧)

有一个很好的阅读,我可以得到这个基础知识,所以我可以调整现有的技术诀窍我的问题?

谢谢

c c++ io performance disk

8
推荐指数
1
解决办法
1023
查看次数

使用CORBA进行Java/C++互操作的最佳ORB是什么?

我有一个用Java编写的客户端 - 服务器应用程序,使用CORBA进行通信.使用的ORB是orbd,Java6平台提供的ORBd.我必须用另一个用C++编写的实现替换Java服务器实现.那么问题是,在CORBA库的自由源实现中,哪个更好地与这个ORB互操作?我应该替换Java ORB还使用C++库提供的ORB吗?

目标是在使用新的C++实现替换已经运行的服务器时,可以轻松平滑地进行转换.还有什么我应该考虑的吗?

c++ java corba

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

如何使-Dsbt.override.build.repos = true成为SBT的全局变量?

我想覆盖所有存储库,甚至是我的build.sbt文件中无意中引入的存储库,因此我们可以指向代理服务器,并为所有团队提供一个通用的二进制库。选项

$ sbt -Dsbt.override.build.repos=true
Run Code Online (Sandbox Code Playgroud)

做这项工作,但我想将此选项永久化。我一直在看http://www.scala-sbt.org/release/docs/Global-Settings.html,但是我不知道如何将该选项转换为global.sbt他们提到的文件。

您将如何全局配置该选项?

scala sbt

6
推荐指数
1
解决办法
1686
查看次数

如何根据另一个流控制Akka Stream的流量

说我有两个来源:

val ticks = Source(1 to 10)
val values = Source[Int](Seq(3,4,4,7,8,8,8,8,9).to[collection.immutable.Iterable])
Run Code Online (Sandbox Code Playgroud)

我想Graph[...]在Akka Stream中创建一个处理步骤,该步骤基于ticks它在值流中尽可能多地消耗的流的当前值.因此,例如,当值匹配时,我想返回第二个源中匹配的所有元素,否则保持滴答声,从而产生如下输出:

(1, None)
(2, None)
(3, Some(Seq(3)))
(4, Some(Seq(4, 4)))
(5, None)
(6, None)
(7, Some(Seq(7)))
(8, Some(Seq(8,8,8,8)))
(9, Some(Seq(9)))
(10, None)
Run Code Online (Sandbox Code Playgroud)

你会如何实现这种行为?

akka-stream

6
推荐指数
1
解决办法
185
查看次数

当属性匹配时,如何使用 Python 在 Avro 中序列化联合字段

假设你有这个 AVDL 作为一个简化的例子:

@namespace("example.avro")
protocol User {
   record Man {
      int age;
   }

   record Woman {
      int age;
   }

   record User {
      union {
        Man,
        Woman
      } user_info;
   }
}
Run Code Online (Sandbox Code Playgroud)

在 python 中,您无法正确序列化声明类型的对象,因为不允许使用以下语法:

{"user_info": {"Woman": {"age": 18}}}
Run Code Online (Sandbox Code Playgroud)

唯一被序列化的对象是

{"user_info": {"age": 18}}
Run Code Online (Sandbox Code Playgroud)

丢失所有类型信息并且DatumWriter通常选择匹配字段集的第一条记录,在本例中为 a Man

使用 Java API 时,上述问题非常有效。

那么,我在这里做错了什么?序列化和反序列化在 Python 的 Avro 实现中是否可能不是幂等的?

python avro avro-tools

6
推荐指数
1
解决办法
731
查看次数

使用不同的配置运行相同的测试

我有一些抽象数据库及其业务逻辑的 Python 代码。单元测试已经涵盖了这段代码,但现在我需要针对不同的数据库(MySQL、SQLite 等)测试这段代码。

使用不同配置通过同一组测试的默认模式是什么?我的目标是确保抽象层独立于底层数据库按预期工作。如果这有帮助,我正在使用鼻子测试来运行测试,但它似乎缺乏套件测试概念

此致。

python database unit-testing nosetests

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

Scalacheck忽略了提供的生成器

我正在尝试实现一个简单的属性检查,但Scalacheck忽略了我的生成器.我在这里做错了什么?

object AlgorithmTest extends Properties("Algorithm") {
  property("Test") = forAll (Gen.choose(0,10)) (n => n>=0 & n<10)
}
Run Code Online (Sandbox Code Playgroud)

这是SBT的结果

[info] ! Algorithm.Test: Falsified after 12 passed tests. [info] >
ARG_0: -1 [error] Failed: : Total 1, Failed 1, Errors 0, Passed 0,
Skipped 0
Run Code Online (Sandbox Code Playgroud)

scala sbt scalacheck

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