小编ak.*_*ak.的帖子

Scala State monad - 结合不同的州类型

我正绕着国家单子行道.琐碎的例子很容易理解.我现在转向一个现实世界的案例,其中域对象是复合的.例如,使用以下域对象(它们没有多大意义,只是纯粹的例子):

case class Master(workers: Map[String, Worker])
case class Worker(elapsed: Long, result: Vector[String])
case class Message(workerId: String, work: String, elapsed: Long)
Run Code Online (Sandbox Code Playgroud)

考虑到Worker作为S类型的State[S, +A]单子它很容易写几个组合子这样的:

type WorkerState[+A] = State[Worker, A]
def update(message: Message): WorkerState[Unit] = State.modify { w =>
    w.copy(elapsed = w.elapsed + message.elapsed,
           result = w.result :+ message.work)
}
def getWork: WorkerState[Vector[String]] = State { w => (w.result, w) }
def getElapsed: WorkerState[Long] = State { w => (w.elapsed, w) }
def updateAndGetElapsed(message: Message): WorkerState[Long] = …
Run Code Online (Sandbox Code Playgroud)

monads state functional-programming scala state-monad

15
推荐指数
1
解决办法
991
查看次数

在Qt中检查QObject派生类类型的正确方法

可以说我有两个班:

class A : public QObject {};
class B : public QObject {};
Run Code Online (Sandbox Code Playgroud)

那我去

QObject *a = new A();
QObject *b = new B();
Run Code Online (Sandbox Code Playgroud)

现在,我如何确保"a"是A类的实例,而"b"是B类的实例?

目前我这样做:

if (a->inherits(A::staticMetaObject.className())) {
...
} else if (a->inherits(A::staticMetaObject.className())) {
...
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

qt types qobject

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

Vim - 在当前的python站点包上运行ctags

这就是我需要的 - 有一个密钥可以创建我的python站点包的ctags.

我有这个命令,将打印site-packages路径:

!python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
Run Code Online (Sandbox Code Playgroud)

这就是我对键映射的看法:

map <F11> :!ctags -R -f ./tags *site-packages-path-goes-here*<CR>
Run Code Online (Sandbox Code Playgroud)

如何将一个命令的结果插入到键绑定语句中?

我想在运行时获取site-packages路径的原因是我强烈地使用virtualenv.结果,期望的路径一直在变化.

python vim ctags

13
推荐指数
1
解决办法
3091
查看次数

在vim中设置python virtualenv

我使用vim进行编码和特别是python编码.我经常想用python解释器执行当前缓冲区.(例如,运行unittests),通常我这样做:!python % <Enter>

这个scenatio可以正常工作与全局python,但我想运行virtualenv python而不是.如何在vim中启用virtualenv?是否可以在运行时切换virtualenv?

我正在使用macvim

python vim virtualenv macvim

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

使用Qt的QTestLib模块进行测试

我开始用Qt的单元测试系统编写一些测试.

你通常如何组织测试?它是每个模块类的一个测试类,还是用单个测试类测试整个模块?Qt文档建议遵循前一策略.

我想为模块编写测试.该模块只提供了一个将由模块用户使用的类,但是除了测试公共类之外,还有很多其他类中抽象的逻辑,我也想测试它们.

问题是Qt提出的运行测试的方法涉及到QTEST_MAIN宏:

QTEST_MAIN(TestClass)
#include "test_class.moc"
Run Code Online (Sandbox Code Playgroud)

最终,一个测试程序只能测试一个测试类.为模块中的每个类创建测试项目有点糟糕.

当然,人们可以看看QTEST_MAIN宏,重写它,并运行其他测试类.但有什么东西可以开箱即用吗?

到目前为止,我手工完成:

#include "one.h"
#include "two.h"

int main(int argc, char *argv[]) 
{ 
    QCoreApplication app(argc, argv); 
    TestOne one;
    QTest::qExec(&one, argc, argv);
    TestOne two;
    QTest::qExec(&two, argc, argv);
}
Run Code Online (Sandbox Code Playgroud)

qt unit-testing qttest

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

用HTML + javascript开发C++ Qt应用程序GUI界面?

我们正在开发一个Qt应用程序,我们最终希望在某种程度上提升Web.为了更顺畅的过渡,我们考虑在HTML/javascript中使用QtWebKit开发用户界面.稍后,当我们在那里时,我们希望在Web应用程序中重用这些UI部分.

这听起来像是一个有意义的想法吗?在HTML/Javascript和QtGui中开发用户界面会有多复杂?这是一种常见的做法,还是没有?我们应该注意哪些陷阱?

user-interface qt webkit

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

Scala - 域对象建模

我目前正试图围绕Scala进行思考,并打算将它用于我的下一个必须处理DICOM的项目.DICOM具有相当广泛的规范,涵盖了数千页的标准.我对DICOM的理解非常有限,但简而言之,DICOM对象 - IOD(信息对象定义)由模块组成,而模块是类型名称 - 值属性对的集合.一些模块和属性的可选性进一步复杂化.例如:

SimpleImageIOD: {
    PatientModule: {
        name: String
        dateOfBirth: DateTime
    }
    StudyModule: {
        name: String
        date: DateTime (optional)
    }
    SeriesModule: {
        name: String
    }
    ImageModule: {
        height: Integer
        width: Integer
        pixelSize: Double (optional)
    }
    EquipmentModule: { (optional)
        type: String
    }
}
Run Code Online (Sandbox Code Playgroud)

有大量的模块,它们可能以各种组合形成不同的IOD.Scala反过来拥有大量的建模能力,包括所有特征,案例类,动态类等.你会如何在Scala中建模这样的域?我对语言很新,但我一直在考虑使用不可变的case类来定义模块,然后将它们聚合在各种IOD中,并使用镜头进行更新:

case class Patient(name: String, dateOfBirth: DateTime)
case class Study(name: String, date: Option[DateTime])
case class Series(name: String)
case class Image(height: Integer, width: Integer, pixelSize: Option[Double])
case class Equipment(type: String)

case class SimpleImageIOD(patient: Patient, study: Study, series: …
Run Code Online (Sandbox Code Playgroud)

dns modeling functional-programming scala object

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

C++初始化静态变量(再次)

如果我在不同的编译单元中有两个静态变量,则不会定义它们的初始化顺序.这一课很好学.

我遇到的问题是:当第一个静态变量被初始化时,它们已经分配了所有静态变量.换一种说法:

static A global_a; // in compilation unit 1
static B global_b; // in compilation unit 2

struct A {
    A() { b_ptr = &global_b; }
    B *b_ptr;

    void f() { b_ptr->do_something(); }
}

int main() {
    global_a.f();
}
Run Code Online (Sandbox Code Playgroud)

b_ptr是否指向一个有效的内存块,其中B是在执行main函数时分配和初始化的?在所有平台上?

更长的故事:

编译单元1是Qt库.另一个是我的申请.我有几个QObject派生类,我需要能够通过类名字符串实例化.为此我想出了一个模板化的工厂类:

class AbstractFactory {
public:
    virtual QObject *create() = 0;
    static QMap<const QMetaObject *, AbstractFactory *> m_Map;
}
QMap<const QMetaObject *, AbstractFactory *> AbstractFactory::m_Map; //in .cpp

template <class T>
class ConcreteFactory: public AbstractFactory {
public:   
    ConcreteFactory() { AbstractFactory::m_Map[&T::staticMetaObject] …
Run Code Online (Sandbox Code Playgroud)

c++ variables static initialization

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

html5 datetime输入 - 是否可以设置样式值演示?

是否可以设置html5日期时间输入的样式?

<input type="datetime" value="2011-08-18T16:49Z">
Run Code Online (Sandbox Code Playgroud)

此ISO日期时间格式不易过度阅读.是否可以使用CSS或其他方式使用某种模式格式化值的表示?

编辑:我刚才意识到这个问题取决于浏览器.例如,Opera使用一个很好的控件来实现这个标签,用户无法输入无效的日期.然后,浏览器将生成格式正确的W3C日期时间字符串,并将其发送到服务器.Firfox 6仅提供标准输入,并不关心输入的内容.Chrome有一个普通的输入字段,但在表单提交之前需要输入有效的w3C字符串.

所以我的问题可能没有任何意义.所以我会问另一个:是否有任何标准化这些自定义输入字段的功能/表示的浏览器指南?

html css html5

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

Slick - 在查询模板中忽略参数

我正在尝试编写一个查询模板,如下所示:

val byIdentifier = for {
  (identifier, issuer) <- Parameters[(String, String)]
  o <- Objects if (o.identifier === identifier) && (o.identifierIssuer === issuer)
} yield o
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它:

def findByIdentifier(id: String, issuer: String): Option[Object] = 
  byIdentifier(id, issuer).firstOption
Run Code Online (Sandbox Code Playgroud)

Objects 是一个提升嵌入的表:

case class Object(val identifer: String, val identifierIssuer: String)

object Objects extends Table[Object]("objects") {
  def identifier = column[String]("identifier")
  def identifierIssuer = column[String]("identifier_issuer")
  ...
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是findByIdentifier("asdf", "weqr")产生一个带有以下where子句的查询false:

select ... from "objects" where false
Run Code Online (Sandbox Code Playgroud)

我的查询模板中缺少什么才能进行正确的查询?

sql postgresql parameters scala slick

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